Dubbo提供了4种负载均衡机制:
权重随机算法:RandomLoadBalance
最少活跃调用数算法:LeastActiveLoadBalance
一致性哈希算法:ConsistentHashLoadBalance
加权轮询算法:RoundRobinLoadBalance
dubbo mock配置 基于服务降级
dubbo自身是支持mock服务的,在reference标签里,有一个参数mock,该参数有四个值,false,default,true,或者Mock类的类名。
分别代表如下含义:
false,不调用mock服务。
true,当服务调用失败时,使用mock服务。
default,当服务调用失败时,使用mock服务。
force,强制使用Mock服务(不管服务能否调用成功)。(使用xml配置不生效,使用ReferenceConfigAPI可以生效)
1 InvokerInvocationHandler 集群容错机制
2 invoker.invoke方法实现容错机制
MockClusterInvoker 类
invoke.invoke();
AbstractClusterInvoker 类 到了负载均衡 用到了spi 机制
FailoverClusterInvoker 类 集群容错 retries 重试 3次 通过select loandbalance 方法 找到具体的服务
计算权重的方法 先计算总权重 通过总权重随机算法 offset - 随机数 找到对应的集群 权重一样随机