负载均衡
Ribbon是Netflix 发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon客户端组 件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Load Balancer后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随即连接等)去连接这些机器。我们也很容易使用Ribbon实现 自定义的负载均衡算法。
Ribbon提供了7个自带的负载均衡器:
策略 | 说明 |
BestAvailableRule | 选择一个最小的并发请求的服务。 |
AvailabilityFilteringRule | 过滤掉一直连接失败服务, 过滤掉那些高并发的服务( 超过配置阈值 )。 |
WeightedResponseTimeRule | 根据权重负载(基于相应时间),权重越小,被选中的可能性越低。 |
RetryRule | 在配置时间内当选择的服务调用不成功, 在选定的负载均衡策略机上重试。 |
RoundRobinRule | 按顺序轮训选择服务。 |
RandomRule | 随机选择一个服务。 |
ZoneAvoidanceRule | 对服务所在的区域和可用性,进行复杂的判断后选择一个服务。 |
配置简介
在引入Spring Cloud Ribbon的依赖之后,就能够自动化构建下面这些接口的实现:
- IClientConfig:Ribbon的客户端配置;
- IRule:负载均衡策略;
- IPing:实例检查策略;
- ServerList:服务实例清单维护策略;
- ServerListFilter:服务实例清单过滤策略;
- ILoadBalancer:负载均衡器策略;
参数配置
对于Ribbon的参数配置分为局部和全局两种:
全局:ribbon.<key>=<value>;
局部:<服务签名>.ribbon.<key>=<value>;
重试机制
- spring.cloud.loadbalancer.retry.enable:开启重试;
- ribbon.ConnectTimeout:请求连接的超时时间;
- ribbon.ReadTimeout:请求处理的超时时间;
- ribbon.OkToRetryOnAllOperations:对所有操作请求都重试;
- ribbon.MaxAutoRetriesNextServer:切换实例的重试次数;
- ribbon.MaxAutoRetries:对当前实例的重试次数;
Github:https://github.com/XuePeng87/owl-bookstore