springcloud微服务简单搭建

Easter79
• 阅读 822

一、搭建注册中心


 1、创建一个demo项目,demo点击右键创建module

springcloud微服务简单搭建

springcloud微服务简单搭建

2、设置项目参数

springcloud微服务简单搭建

3、选择spring cloud discovery,一直下一步,最后点击完成,创建注册中心

springcloud微服务简单搭建

 4、将application.properties文件修改为application.yml(格式比较清晰),复制下面参数

server:
  port: 8001 # 服务端口

eureka:
  instance:
    hostname: localhost # 设置主机名
  client:
    registerWithEureka: false # 是否向 Eureka 注册服务。该应用为服务注册中心,不需要自注册,设置为 false
    fetchRegistry: false # 是否检索服务。该应用为服务注册中心,职责为注册和发现服务,无需检索服务,设置为 false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ # 注册中心url
spring:
  application:
    name: eurka-server  #服务名称

5、在项目启动类中添加@EnableEurekaServer注解

springcloud微服务简单搭建

 6、启动项目访问http://localhost:8001/,8001是配置文件中设置的端口号

springcloud微服务简单搭建

spring cloud的消费者也可以是提供者,二者只有逻辑上的区别,在spring boot中有两种消费方式:rest+ribbon和Feign

二、spring cloud提供者(rest+ribbon)


1、同理,新建module

springcloud微服务简单搭建

2、创建ribbon,不要忘记将spring cloud discovery也勾选上,否则将缺少jar包,一部分注解不显示

springcloud微服务简单搭建

3、application.yml配置文件

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8001/eureka/
server:
  port: 8002
spring:
  application:
    name: ribbon-provider

4、启动类添加@EnableEurekaClient注册服务,然后注入RestTemplate对象,@LoadBalanced表示开启负载均衡

springcloud微服务简单搭建

springcloud微服务简单搭建 springcloud微服务简单搭建

package com.cloud.ribbonprovider;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
@EnableEurekaClient
public class RibbonProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(RibbonProviderApplication.class, args);
    }

    @Bean
    @LoadBalanced
    RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

View Code

5、创建controller和service

springcloud微服务简单搭建

springcloud微服务简单搭建 springcloud微服务简单搭建

package com.cloud.ribbonprovider.controller;

import com.cloud.ribbonprovider.service.ProviderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ProviderController {

    @Autowired
    ProviderService providerService;

    @GetMapping(value = "/index")
    public String index() {
        return providerService.getProvider();
    }
}

View Code

springcloud微服务简单搭建

springcloud微服务简单搭建 springcloud微服务简单搭建

package com.cloud.ribbonprovider.service;

import org.springframework.stereotype.Service;

@Service
public class ProviderService {

    public String getProvider() {
        return "ribbon provider";
    }
}

View Code

6、启动项目,访问提供者http://localhost:8002/index,可以看到返回结果,接着创建消费者来获取提供者的内容

springcloud微服务简单搭建

三、spring cloud消费者(rest+ribbon)


 1、新建module

springcloud微服务简单搭建

 2、勾选ribbon,步骤同提供者

springcloud微服务简单搭建

 3、application.yml配置文件

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8001/eureka/
server:
  port: 8003
spring:
  application:
    name: ribbon-consumer

4、启动类配置

springcloud微服务简单搭建

springcloud微服务简单搭建 springcloud微服务简单搭建

package com.cloud.ribbonconsumer;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
@EnableEurekaClient
public class RibbonConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(RibbonConsumerApplication.class, args);
    }

    @Bean
    @LoadBalanced
    RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

View Code

5、controller和service,注意service需要注入RestTemplate,用来访问提供者

springcloud微服务简单搭建

springcloud微服务简单搭建 springcloud微服务简单搭建

package com.cloud.ribbonconsumer.controller;

import com.cloud.ribbonconsumer.service.ConsumerService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ConsumerController {

    @Autowired
    ConsumerService consumerService;

    @GetMapping(value = "/index")
    public String index() {
        return "ribbon consumer/ " + consumerService.getConsumer();
    }
}

View Code

springcloud微服务简单搭建

springcloud微服务简单搭建 springcloud微服务简单搭建

package com.cloud.ribbonconsumer.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;

@Service
public class ConsumerService {

    @Autowired
    RestTemplate restTemplate;

    public String getConsumer() {
        return restTemplate.getForObject("http://ribbon-provider/index", String.class);
    }
}

View Code

6、启动项目,访问消费者http://localhost:8003/index,在返回的结果中,ribbon consumer/属于消费者自身的信息,ribbon provider属于提供者提供的内容,简单的springcloud搭建成功

springcloud微服务简单搭建

 7、访问注册中心http://localhost:8001/,可以看的提供者和消费者都已经注册成功

springcloud微服务简单搭建

四、Feign消费


 1、新建module,勾选openfeign

springcloud微服务简单搭建

 2、application.yml配置文件

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8001/eureka/
server:
  port: 8004
spring:
  application:
    name: feign-consumer

3、启动类添加@EnableDiscoveryClient和@EnableFeignClients注解

springcloud微服务简单搭建

springcloud微服务简单搭建 springcloud微服务简单搭建

package com.cloud.feign;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class FeignApplication {

    public static void main(String[] args) {
        SpringApplication.run(FeignApplication.class, args);
    }

}

View Code

4、使用feign调用ribbon-consumer(既是消费者也是提供者),添加@FeignClient注解即可,value的意思就是目标服务器,可以直接用yml中配置的application名称

springcloud微服务简单搭建

springcloud微服务简单搭建 springcloud微服务简单搭建

package com.cloud.feign.feignrpc;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;

@FeignClient(value = "ribbon-consumer")
public interface GetFeign {

    @GetMapping(value = "index")
    public String getFeign();
}

View Code

5、创建controller和service,service中注入feign的接口

springcloud微服务简单搭建

springcloud微服务简单搭建 springcloud微服务简单搭建

package com.cloud.feign.service;

import com.cloud.feign.feignrpc.GetFeign;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class FeignService {

    @Autowired
    GetFeign getFeign;

    public String getFeign() {
        return getFeign.getFeign();
    }
}

View Code

springcloud微服务简单搭建

springcloud微服务简单搭建 springcloud微服务简单搭建

package com.cloud.feign.controller;

import com.cloud.feign.service.FeignService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class FeignController {

    @Autowired
    FeignService feignService;

    @GetMapping(value = "/feign/index")
    public String getFeign() {
        return "feign consumer/ " + feignService.getFeign();
    }
}

View Code

6、启动项目,访问feign消费者http://localhost:8004/feign/index,其中feign consumer/是feign自身提供的信息,ribbon consumer/ ribbon provider是ribbon consumer提供者的信息

springcloud微服务简单搭建

 7、再次查看注册中心

springcloud微服务简单搭建

 到此,简单的微服务构架搭建完成。

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
2年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
2年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k