eureka注册中心的搭建 博主使用IDEA搭建

文章有点长,但不要怕,图多字少,步骤超详细,满足您的需要 ~废话不多说,直接上图 ~

1.首先新建一个空的maven项目,如图:

springcloud微服务架构进阶 springcloud微服务架构搭建_springcloud微服务架构进阶


springcloud微服务架构进阶 springcloud微服务架构搭建_后端_02


填入参数,如图:

springcloud微服务架构进阶 springcloud微服务架构搭建_java_03


springcloud微服务架构进阶 springcloud微服务架构搭建_spring_04


2.点击finish之后,cloudDemo项目就创建成功了;

删除目录下src文件夹以及pom.xml文件,如图:

springcloud微服务架构进阶 springcloud微服务架构搭建_spring_05


3.然后在cloudDemo项目下创建一个springboot项目作为项目cloudDemo的一个module 模块,module的名字叫做eureka如图:

springcloud微服务架构进阶 springcloud微服务架构搭建_java_06


springcloud微服务架构进阶 springcloud微服务架构搭建_后端_07


springcloud微服务架构进阶 springcloud微服务架构搭建_java_08


springcloud微服务架构进阶 springcloud微服务架构搭建_spring_09


springcloud微服务架构进阶 springcloud微服务架构搭建_spring_10


springcloud微服务架构进阶 springcloud微服务架构搭建_spring_11


此时的项目结构如下:

springcloud微服务架构进阶 springcloud微服务架构搭建_springcloud微服务架构进阶_12


4.启动eureka注册中心:只需要在EurekaApplication启动类上加上注解@EnableEurekaServer即可,如图:

springcloud微服务架构进阶 springcloud微服务架构搭建_后端_13


5.配置springboot启动:

将resource下面的 application.properties文件改 为application.yml文件并添加如下配置:

springcloud微服务架构进阶 springcloud微服务架构搭建_后端_14


需要在application.yml文件中添加的配置如下:

server:
  port: 8801

eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

添加完配置之后如图:

springcloud微服务架构进阶 springcloud微服务架构搭建_springcloud微服务架构进阶_15


6.然后启动项目,项目启动后访问localhost:8801,看到这个界面(如图),Eureka注册中 心就已经启动成功。

springcloud微服务架构进阶 springcloud微服务架构搭建_后端_16


7.接下来我们可以编写一个提供者(ribbon模块),一个消费者 (ribbon-consumer模块):

spring cloud的消费者也可以是提供者,二者只有逻辑上的区别,它 是链式的存在。在spring boot中有两种消费方式:

1.rest+ribbon

2.Feign

接下来我们编写消费者:

A、rest+ribbon消费:

1.首先保持Eureka的启动不变,然后在cloudDemo下新建一个 module 叫做ribbon,它也是spring boot结构,如图:

springcloud微服务架构进阶 springcloud微服务架构搭建_eureka_17


springcloud微服务架构进阶 springcloud微服务架构搭建_spring_18


springcloud微服务架构进阶 springcloud微服务架构搭建_eureka_19


springcloud微服务架构进阶 springcloud微服务架构搭建_后端_20


springcloud微服务架构进阶 springcloud微服务架构搭建_springcloud微服务架构进阶_21


springcloud微服务架构进阶 springcloud微服务架构搭建_eureka_22


springcloud微服务架构进阶 springcloud微服务架构搭建_spring_23


springcloud微服务架构进阶 springcloud微服务架构搭建_eureka_24


2.创建完成后,编写RibbonApplication启动类,在该启动类中添加注解 @EnableDiscoveryClient 注册服务,然后注入RestTemplate对象,@LoadBalanced 表示开启负载均衡,如图:

springcloud微服务架构进阶 springcloud微服务架构搭建_后端_25


RibbonApplication启动类中的完整代码如下:

@SpringBootApplication
@EnableDiscoveryClient //注册服务
public class RibbonApplication {
    public static void main(String[] args) {
        SpringApplication.run(RibbonApplication.class, args);
    }
    @Bean
    @Autowired
    @LoadBalanced
    RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

3.在ribbon模块下创建一个测试用的service文件,如图:

springcloud微服务架构进阶 springcloud微服务架构搭建_后端_26


HelloService类中的完整代码如下:

@Service
		public class HelloService {
   		 public String sayHello(){
        		return "helloWorld"; // 提供一个hello World
    		}
	      }

4.然后我们再编写一个controller,提供一个hello的 controller,如图:

springcloud微服务架构进阶 springcloud微服务架构搭建_后端_27


5.HelloController类中的完整代码如下:

@RestController
		public class HelloController {
    		@Autowired
   		 private HelloService helloService;
    		@GetMapping("/hello")
    		public String sayHello(String name){
        		return helloService.sayHello() + " " + name;
   		 }
		}

然后我们再配置application.yml , 一样的 将配置文件改为yml格式,然后输入配置,如图:

springcloud微服务架构进阶 springcloud微服务架构搭建_后端_28


在application.yml配置文件中添加一下配置,如图:

springcloud微服务架构进阶 springcloud微服务架构搭建_java_29


添加的配置的完整的信息如下:

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

7.然后在启动eureka服务的同时启动ribbon服务,如图:

springcloud微服务架构进阶 springcloud微服务架构搭建_后端_30


两个服务都启动后访问 localhost:8802/hello?name=zhangtaifeng,如图 :

springcloud微服务架构进阶 springcloud微服务架构搭建_eureka_31


8.测试完成,这个服务(ribbon模块)我们把他叫做服务提供者,然后我们再重新建一个module,可以叫做 ribbon-consumer,我们把他叫做服务的消费者,整体配置与上边新建模块配置一致,我们只需要修改service和controller部分(注意package):

springcloud微服务架构进阶 springcloud微服务架构搭建_spring_32


springcloud微服务架构进阶 springcloud微服务架构搭建_spring_33


springcloud微服务架构进阶 springcloud微服务架构搭建_spring_34


springcloud微服务架构进阶 springcloud微服务架构搭建_java_35


springcloud微服务架构进阶 springcloud微服务架构搭建_后端_36


springcloud微服务架构进阶 springcloud微服务架构搭建_spring_37


springcloud微服务架构进阶 springcloud微服务架构搭建_springcloud微服务架构进阶_38


完整的配置信息如下:

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

RibbonConsumerApplication启动类中的代码如图:

springcloud微服务架构进阶 springcloud微服务架构搭建_springcloud微服务架构进阶_39


RibbonConsumerApplication启动类中的完整代码如下:

@SpringBootApplication
@EnableDiscoveryClient //注册服务
public class RibbonConsumerApplication {

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

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

编写service,如图:

springcloud微服务架构进阶 springcloud微服务架构搭建_spring_40


HelloService类中的完整代码如下:

@Service
public class HelloService {

   @Autowired
    RestTemplate restTemplate;//注入restTemplate
    public String sayHello(){
        //通过rest调用 调用provider服务
        return restTemplate.getForObject("http://ribbon-provider/hello?name=zhangtaifeng",String.class);
    }
}

编写controller,如图:

springcloud微服务架构进阶 springcloud微服务架构搭建_springcloud微服务架构进阶_41


HelloController类中的完整代码如下:

@RestController
public class HelloController {
    @Autowired
    private HelloService helloService;
    @GetMapping("/hello")
    public String sayHello(String name){
        return helloService.sayHello() + " " + name;
    }
}

启动该应用:运行该启动类(前两个启动类也要启动起来),效果如图:

springcloud微服务架构进阶 springcloud微服务架构搭建_eureka_42


所以,RestTemplate成功调用了8802端口上的provider。

到了这里,相信大家对spring cloud调用服务有了一定的了解,cloud通过rest调用服务进行服务间的通信,每一个controller的方法对外提供对应的服务接口。B、Feign消费

1、feign消费是通过注解的方式进行的消费模式,它默认打开了负载均衡,还是在cloudDemo下创建一个module,名字叫feign:

springcloud微服务架构进阶 springcloud微服务架构搭建_springcloud微服务架构进阶_43


springcloud微服务架构进阶 springcloud微服务架构搭建_springcloud微服务架构进阶_44


springcloud微服务架构进阶 springcloud微服务架构搭建_springcloud微服务架构进阶_45


springcloud微服务架构进阶 springcloud微服务架构搭建_springcloud微服务架构进阶_46


springcloud微服务架构进阶 springcloud微服务架构搭建_spring_47


springcloud微服务架构进阶 springcloud微服务架构搭建_spring_48


2、feign模块创建成功后,在FeignApplication启动类上加两个注解,如下:(这两个注解,用于注册和发现服务。)

@EnableDiscoveryClient:

@EnableFeignClients

springcloud微服务架构进阶 springcloud微服务架构搭建_eureka_49


3.在feign模块的目录下创建controller

springcloud微服务架构进阶 springcloud微服务架构搭建_spring_50


HelloController类中的完整代码如下:

@RestController
public class HelloController {
    @Autowired
    private HelloService helloService;
    @GetMapping("/hello")
    public String sayHello(String name){
        return helloService.sayHello() + " " + name;
    }
}

4.在feign模块的目录下创建service

springcloud微服务架构进阶 springcloud微服务架构搭建_后端_51


HelloService类中的完整代码如下:

@Service
public class HelloService {

    @Autowired
    private GetHello getHello; //注入rpc

    public String sayHello(){
        return getHello.sayHello(); // 提供一个hello World
    }
}}

5.在feign模块的目录下新建一个rpc文件夹,然后在rpc下新建一个GetHello接口:

springcloud微服务架构进阶 springcloud微服务架构搭建_eureka_52


GetHello接口中的完整代码如下:

@FeignClient(value = "ribbon-consumer")
public interface GetHello {
    @RequestMapping(value = "/hello?name=feign",method = RequestMethod.GET)
    public String sayHello();
}

6.修改application.yml文件如下:

springcloud微服务架构进阶 springcloud微服务架构搭建_springcloud微服务架构进阶_53


application.yml文件中的完整配置如下:

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

7.启动所有服务,分别是:eureka模块、ribbon模块、ribbon-consumer模块和feign模块,启动后效果图如图所示:

springcloud微服务架构进阶 springcloud微服务架构搭建_spring_54


到此,springcloud微服务就搭建完成了!

有问题请留言~

希望我的文章能对你有所帮助!