服务调用方
Maven:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
配置YML文件:
<client>.ribbon.listOfServers: localhost:9001, localhost:9002
<client>.ribbon.NFLoadBalancerRuleClassName: IRule实现类名称
过程:
实现IRule接口, 重写(1) Server choose(Object var1); (2) void setLoadBalancer(ILoadBalancer var1); (3) ILoadBalance getLoadBalancer(), 三个方法;
配置服务器列表, ConfigurationManager.getConfigInstance().setProperty("my-client.ribbon.listOfServers","localhost:9001, localhost:9002");
配置规则类, ConfigurationManager.getConfigInstance().setProperty("my-client.ribbon.NFLoadBalancerRuleClassName", MyRule.class.getName());
Ribbon自带的负载规则
RoundRobinRule(默认): 轮询
AvailabilityFilteringRule: 忽略无法连接的服务器和并发数过高的服务器
WeightedResponseTimeRule: 权重值会决定服务器的选择(服务器响应时间越长, 权重值越少)
ZoneAvoidanceRule: 使用Zone对服务器进行分类
BestAvailableRule: 忽略"短路的服务器", 并选择并发数较低的服务器
RandomRule: 随机选择可用的服务器
RetryRule: 含重试选择逻辑, 如果RoundRobinRule选择的服务器无法连接时, 重新选择服务器