dubbo的负载均衡策略

2022-09-08 10:03:56 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

Dubbo 框架 的负载均衡策略 有以下几种:

1、Random 随机策略: 该策略比较均匀,可以动态的调节 权重; 2、RoundRobin 轮询策略: 可以按照权重 设置轮询的的比率; 3、LeastActive 最小活跃数 策略: 该策略是按照服务提供者的并发数目,该数目越小那么落在该 服务提供者的身上越大的概率; 4、ConsistentHash 一致性策略: hash一致性算法 ,请求分发到同一台服务上去,当该服务宕机 ,通过虚拟节点 把该机器的请求 均匀的分发到其他服务上去;

hash 一致性策略: 说到这个,就会说到 hash 环,这里我粗略的画下 hash 环; 就是 根据请求的 uid 计算 hash(uid) ,计算的hash 值 在hash 环 上,找出 hash(uid)顺时针方向 距离哪一个 hash(IP) 最近,将最近的这个IP 作为路由 IP;

1、若 p1 宕机,该请求 就会分发到 p3 机器上去; 2、若在p1 和 hash(uid ) 之间增 p4 机器,那么该请求就会被 p4 机器处理;

2、虚拟节点

2.1、 虚拟节点的出现,就为了解决一件事: 解决hash一致性倾斜问题。

hash一致性 倾斜问题是什么? 就是机器在 hash 环上分布不均匀,导致 服务提供者 处理的请求数目差异过大 问题; 如下图: 大部分请求都被 hash(p1) 这台机器处理,这样的分布式有设么意义呢,是吧;

这个问题,需要通过增加虚拟节点的方式来解决【当然有人说加 机器,这不成本较高么】,虚拟节点的位置也尤为关键,若虚拟节点分布均匀的话,这样看以均匀的处理 hash 环上的请求,当分部不均匀的时候,很容易造成 上图一样 的弊端;

均匀一致性 Hash 的目标是如果服务器有 N 台,客户端的 Hash 值有 M 个,那么每个服务器应该处理大概 M/N 个用户的请求; 但Dubbo 提供的 hash 一致性就是 非均匀的;

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/157344.html原文链接:https://javaforall.cn

0 人点赞