1.Ribbon的介绍
如何在idea里面同时创建出一个服务的集群。
![040706a8f78ceb016e8e500ed104a8bc.png](https://i-blog.csdnimg.cn/blog_migrate/6a0c2036778a3df3fa89da8161b15400.png)
1)什么是Ribbon?
实现客户端的负载均衡的工具。Ribbon客户端组件提供了一系列完善的配置,比如超时、重试等等。
Ribbon会基于某种规则进行负载均衡,轮询、随机等等。Ribbon也可以实现我们自己定义的负载均衡算法。
2)什么是客户端的负载均衡
什么是服务端的负载均衡
Nginx是一个服务端的负载均衡工具。
![bdbaac6493c2dc30c9088e6df688709e.png](https://i-blog.csdnimg.cn/blog_migrate/00b23d9822da63d1c5678571e01755f9.png)
当客户端需要服务的时候,具体调用到哪一台服务器,这是nginx说了算,客户端说了不算。
客户端的负载均衡
![d1b1223a8894dd24683fafeb223282b3.png](https://i-blog.csdnimg.cn/blog_migrate/c0f315ca53798642ec818e28f190349f.png)
2.Ribbon进行负载均衡的详细过程
![5e9c2bde9b47cd4831efb776c0ae2dd1.png](https://i-blog.csdnimg.cn/blog_migrate/2282494c4dafe195ae5f95fbe54e82c3.png)
3. Ribbon的负载均衡策略
配置Ribbon的负载均衡策略
在配置类中,去创建出一个IRule对象,IRule不同的实现类就是不同的负载均衡策略。
@Configuration
public class MyConfig {
@LoadBalanced
@Bean
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
@Bean
public IRule MyRule(){
return new RandomRule();
}
}
如果ribbon中的服务地址列表中某一个服务下线了,那么ribbon会去重新获取eurekaServer上的新的地址列表。
此时地址列表就更新了,如果更新后的地址列表依然有服务不能服务,那么ribbon就会在自己的地址列表中把该服务的地址去除。每隔10秒钟,ribbon又会进行一次与eurekaServer之间的对地址列表进行更新。于是下线的服务就不会被访问到。
1)RandomRule 随机选择一个Server
2)RetryRule 如果访问某个server不成功,那么就会一直重试。
3)RoundRobinRule 轮询访问每一个Server
4)WeightedResponseTimeRule 根据响应时间加权,响应时间越长,权重越小,被选中的概率越低。