分布式 RPC 框架:Dubbo 应用架构解析!使用 Dubbo 实现负载均衡
Dubbo 应用架构
(init)在 Dubbo 容器 Container 中启动 start 容器上的提供者 Provider
(init)提供者 Provider 注册 register 服务到注册中心 Registry
(init)消费者 Consumer 从注册中心 Registry 订阅 subscribe 服务
(async)注册中心 Registry 给消费者 Consumer 通知 notify
(sync)消费者 Consumer 调用 invoke 服务提供者 Provider
(async)监控中心 Monitor 监控服务消费者 Consumer 和服务提供者 Provider 的使用情况,统计 count 服务请求次数
Dubbo 负载均衡
在集群负载均衡时,Dubbo 提供多种负载均衡策略,缺省为 random 随机调用, 也可以自定义负载据均衡策略
负载均衡策略
Random LoadBalance
随机负载均衡调用: 按权重设置随机概率
在一个界面上碰撞的概率越高,但调用量越大分布越均匀,而且按概率使用权重后也比较均匀,有利于动态调整提供者权重
RoundRobin LoadBalance
轮询负载均衡调用: 按公约后的权重设置轮询比率
存在慢的提供者累积请求的问题:当第二台机器很慢但没有挂掉,当请求第二台时就会卡在那,导致所有请求都卡在第二台上
LeastActive LoadBalance
最少活跃调用数负载均衡调用: 相同活跃数的随机,活跃数指调用前后计数差
使慢的提供者收到更少的请求数,因为越慢的提供者的调用前后计数差越大
ConsistentHash LoadBalance
一致性 Hash 负载均衡调用: 相同的参数请求总是发送到同一提供者
当某一台提供者挂掉时原本发往该提供者的请求,基于虚拟节点,平摊到其它提供者,不会引起剧烈变动
缺省只对第一个参数 Hash,如果要修改,配置
缺省用 160 份虚拟节点,如果要修改,配置
负载均衡配置
服务端服务级别
客户端服务级别
服务端方法级别
客户端方法级别
版权声明: 本文为 InfoQ 作者【攻城狮Chova】的原创文章。
原文链接:【http://xie.infoq.cn/article/f5e4ea41880eb6b0bf8ac54d0】。文章转载请联系作者。
评论