服务提供者
在项目:spring-cloud-eureka-provider-1
,spring-cloud-eureka-provider-2
,spring-cloud-eureka-provider-3
的启动类,都加入@Value("${server.port}")
,修改home()
方法, 来区分不同端口的Controller 响应,因为接下来,使用ribbon
做均衡需要测试需要使用到。
@SpringBootApplication @EnableEurekaClient @RestController public class EurekaProviderApplication { @Value("${server.port}") String port; @RequestMapping("/") public String home() { return "Hello world ,port:" + port; } public static void main(String[] args) { SpringApplication.run(EurekaProviderApplication.class, args); } }
配置
在项目:spring-cloud-eureka-provider-1
,spring-cloud-eureka-provider-2
,spring-cloud-eureka-provider-3
,修改server: port:端口依次为8081,8082,8083。
eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/ spring: application: name: eureka-provider server: port: 8081
服务消费者(Ribbon Consumer)
添加依赖
新建 spring-cloud-ribbon-consumer
<!-- 客户端负载均衡 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-ribbon</artifactId> </dependency> <!-- eureka客户端 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency>
开启服务负载均衡
在工程的启动类中,通过@EnableDiscoveryClient
向服务注册中心注册;并且向程序的ioc
注入一个bean: restTemplate
并通过@LoadBalanced
注解表明这个restRemplate
开启负载均衡的功能。
@EnableDiscoveryClient @SpringBootApplication public class RibbonConsumerApplication { @LoadBalanced @Bean RestTemplate restTemplate() { return new RestTemplate(); } public static void main(String[] args) { SpringApplication.run(RibbonConsumerApplication.class, args); } }
消费提供者方法
新建 ConsumerController
类,调用提供者的 hello 方法
/** * 描述:调用提供者的 `home` 方法 * * @author yanpenglei * @create 2017-12-05 18:53 **/ @RestController public class ConsumerController { @Autowired private RestTemplate restTemplate; @GetMapping(value = "/hello") public String hello() { return restTemplate.getForEntity("http://eureka-provider/", String.class).getBody(); } }
添加配置
完整配置 application.yml
指定服务的注册中心地址,配置自己的服务端口,服务名称
eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/ spring: application: name: ribbon-consumer server: port: 9000
测试服务
启动服务,依次启动项目:
spring-cloud-eureka-service
spring-cloud-eureka-provider-1
spring-cloud-eureka-provider-2
spring-cloud-eureka-provider-3
spring-cloud-ribbon-consumer
启动该工程后,访问服务注册中心,查看服务是否都已注册成功:http://localhost:8761/
负载均衡
在命令窗口curl http://localhost:9000/hello
,发现Ribbon已经实现负载均衡
或者浏览器get
请求http://localhost:9000/hello
F5 刷新