【Zuul2】zuul集成ribbon完成服务通信和负载均衡

3 篇文章 0 订阅
3 篇文章 0 订阅

目录

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负载均衡算法以满足流量调度需求。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值