写点什么

Dubbo 框架学习笔记十二

作者:风翱
  • 2021 年 12 月 25 日
  • 本文字数:591 字

    阅读完需:约 2 分钟

Dubbo 框架学习之负载均衡:

LoadBalance(负载均衡)的职责是将网络请求或者其他形式的负载“均摊”到不同的服务节点上,从而避免服务集群中部分节点压力过大、资源紧张,而另一部分节点比较空闲的情况。


通过合理的负载均衡算法,我们希望可以让每个服务节点获取到适合自己处理能力的负载,实现处理能力和流量的合理分配。常用的负载均衡可分为软件负载均衡(Nginx、Haproxy)和硬件负载均衡(主要有 F5)。


Dubbo 提供了 5 种负载均衡实现,分别是:

基于 Hash 一致性的 ConsistentHashLoadBalance;

基于权重随机算法的 RandomLoadBalance;

基于最少活跃调用数算法的 LeastActiveLoadBalance;

基于加权轮询算法的 RoundRobinLoadBalance;

基于最短响应时间的 ShortestResponseLoadBalance 。


LoadBalance 是一个扩展接口,默认使用的扩展实现是 RandomLoadBalance。

ConsistentHashLoadBalance 底层使用一致性 Hash 算法实现负载均衡。

RandomLoadBalance 使用的负载均衡算法是加权随机算法。RandomLoadBalance 是一个简单、高效的负载均衡实现,它也是 Dubbo 默认使用的 LoadBalance 实现。RandomLoadBalance 中 doSelect() 方法的实现,其核心逻辑分为三个关键点:

计算每个 Invoker 对应的权重值以及总权重值;


当各个 Invoker 权重值不相等时,计算随机数应该落在哪个 Invoker 区间中,返回对应的 Invoker 对象;


当各个 Invoker 权重值相同时,随机返回一个 Invoker 即可。


发布于: 5 小时前
用户头像

风翱

关注

还未添加个人签名 2017.11.24 加入

勇于尝试,持续成长

评论

发布
暂无评论
Dubbo 框架学习笔记十二