目录
Zuul2服务通信
超时相关
默认超时配置
自定义超时配置
负载均衡
Zuul2服务通信
描述:zuul2通过Ribbon完成客户端负载均衡以及与服务器群集进行通信。
zuul2的通信是集成Ribbon实现的,在Origin中集成Ribbon基本配置(例如IClientConfig)以完成功能接入,在loadbanace层将ribbion与netty结合用来抉择下层客户端服务器。
zuul2集成ribbon core结构图:
zuul2集成 ribbon loadbalanacer结构图:
超时相关
默认超时配置
- 默认连接超时时间ReadTimeout为2S
- 默认读超时时间ConnectTimeout为5S
- 超时后的默认重试次数MaxAutoRetriesNextServer为1次 (它使用MaxAutoRetriesNextServer,应该与ribbon的NIWSServerListClassName相关参数有关系,同时在zuul2官网wiki有相关描述指定本配置控制重试)
可以在ribbon源码中找到相应配置信息:
自定义超时配置
#指定全局连接超时ConnectTimeout配置
ribbon.ConnectTimeout=100#指定全局读超时ReadTimeout配置
ribbon.ReadTimeout=1000#指定全局重试配置
ribbon.MaxAutoRetriesNextServer=0#指定origin连接超时ConnectTimeout配置(覆盖全局)
<origin>.ribbon.ConnectTimeout=100#指定origin读超时ReadTimeout配置(覆盖全局)
<origin>.ribbon.ReadTimeout=10000#指定origin重试配置(覆盖全局)
<origin>.ribbon.MaxAutoRetriesNextServer=1
ribbon相关配置项及默认值:https://github.com/Netflix/ribbon/blob/master/ribbon-core/src/main/java/com/netflix/client/config/CommonClientConfigKey.java
负载均衡
ribbon负载均衡的七种算法
RandomRule:随机算法实现RoundRobinRule:轮询负载均衡策略,依次轮询所有可用服务器列表,遇到第一个可用的即返回RetryRule :先按照RoundRobinRule策略获取服务,如果获取服务失败会在指定时间内重试AvaliabilityFilteringRule: 过滤掉那些因为一直连接失败的被标记为circuit tripped的后端server,并过滤掉那些高并发的的后端server(active connections 超过配置的阈值) BestAvailableRule :会先过滤掉由于多次访问故障二处于断路器跳闸状态的服务,然后选择一个并发量最小的服务WeightedResponseTimeRule: 根据响应时间分配一个weight,响应时间越长,weight越小,被选中的可能性越低ZoneAvoidanceRule: 复合判断server所在区域的性能和server的可用性选择server
后续将会持续完善ribbon、制定ribbon负载均衡算法以满足流量调度需求。
---------------------
作者:xbl丶
来源:CSDN
原文:https://blog.csdn.net/qq_37822090/article/details/114360518
版权声明:本文为作者原创文章,转载请附上博文链接!
内容解析By:CSDN,CNBLOG博客文章一键转载插件