Dubbo 中的负载均衡策略
Dubbo 内置了 4 种负载均衡策略
RandomLoadBalance:随机负载均衡,随机选择一个服务结点,跟权重相关。该策略是Dubbo的默认负载均衡策略。RoundRobinLoadBalance:轮询负载均衡,轮询选择一个服务结点,跟权重相关。LeastActiveLoadBalance:最少活跃调用数,相同的活跃数随机选择一个结点,跟权重相关。实现方式是对活跃数值前后计数差。使得慢的结点收到更少的请求,因为越慢的结点前后计数差越大。ConsistentHashLoadBalance:一致性哈希负载均衡,即相同的参数的请求总是落在同一个服务结点上。
通过观察类之间依赖图,可以快速帮我们梳理其之间的关系,如下图所示:
实践
纸上得来终觉浅,觉知此时要躬行。
Dubbo 中负载均衡的源码可自行通过源码来学习,为了加深印象,这里我以 Dubbo 源码中的思路来实现这四个负载均衡策略。
准备工作
定义结点接口
这里我们不实现 Dubbo 中的 Invoker,以一个结点类 Endpoint 代替。