服务注册中心与服务提供者完成之后,服务发现的任务由Eureka的客户端完成,而服务消费的任务由Ribbon完成。Spring Cloud Ribbon 是一个基于Http和TCP的客服端负载均衡工具,它是基于Netflix Ribbon实现的
- 首先启动服务注册中心以及hello-service,为了使用Ribbon的负载均衡功能,通过命令行的方式来启动两个不同端口的hello-service
java -jar hello-service-0.0.1-SNAPSHOT.jar --server.port=8081
java -jar hello-service-0.0.1-SNAPSHOT.jar --server.port=8082
-
成功启动两个hello-service后,Eureka信息面板中可以看到名为HELLO-SERVICE的服务中出现了两个实例单元
- 创建Spring Boot基础工程来实现服务消费(ribbon-consumer),并在pom.xml中引入必要的依赖内容
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
在application.properties中配置
eureka.client.serviceUrl.defaultZone= http://localhost:8761/eureka/
spring.application.name=ribbon-consumer
server.port=8090
启动 ribbon-consumer 应用后,在 Eureka 信息面板中看到多了RIBBON-CONSUMER服务
通过访问http://localhost:8090/hi?name=li,可以看到输出
hi we,serverPort:8081
再尝试多访问http://localhost:8090/hi?name=li几次,就可以看到
hi we,serverPort:8082
hi we,serverPort:8081
这两个轮流替换,说明负载均衡起作用了