aRibbon是什么?
Ribbon是Netflix发布的云中间层服务开源项目,主要功能是提供客户端负载均衡算法。Ribbon客户端组件提供一系列完善的配置项,如,连接超时,重试等。简单的说,Ribbon是一个客户端负载均衡器,我们可以在配置文件中列出load Balancer后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器,我们也很容易使用Ribbon实现自定义的负载均衡算法。
Eureka使用Ribbon是在架构:
Ribbon第一步选择Eureka Server,它优先选择在同一个Zone且负载较少的Server,第二步再根据用户指定的策略,在从Server取到的服务注册列表中选择一个地址。Ribbon提供了多种策略,例如:轮询 round robin、随机Random、根据响应时间加权等。
使用Ribbon实现客户端负载均衡的服务消费者
准备服务消费者:
1、添加Ribbon的maven依赖
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Camden.SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>
2、application.properties 配置项
server.port=8012
spring.application.name=user-client
eureka.client.serviceUrl.defaultZone=http://192.168.1.12:8761/eureka/
3、添加@EnableDiscoveryClient注解,以及@LoadBalanced
4、编写UserClientController.java
@RestController
public class UserClientController {
@Autowired
private RestTemplate restTemplate;
@GetMapping("/register")
public String register(){
String tenantCode = "T-0001";
String userName = "tom";
String mobileNumber = "";
String email = "";
String password = "123456";
String url = "http://user-server/user-server/registerUser";
String request = "";
// 此方法有问题,待解决
restTemplate.postForLocation(url, request, tenantCode, userName, mobileNumber, email, password);
return "ok";
}
}
5、启动服务消费者,查看注册中心