dubbo的Cluster, Router, LoadBalance

4月 4, 2018 |

先执行MockClusterInvoker.invoke(), 检查url是否包含mock 参数, 如果包含就使用MockInvoker.invoke 返回数据,而不是发起rpc调用
mock的方式:
"return " 或者"return null" 直接返回空
"return {}" 返回json字符串表示的返回值
"throw new RuntimeException()" 抛出异常
"a.b.x.HelloMock" 返回"a.b.x.Hello"接口的mock实现

FailfastClusterInvoker.invoke (集群容错的策略, 快速失败(failfast),失败转移(failover),失败自动恢复(failback),失败安全(failsafe))
RegistryDirectory.list 从本地缓存的methodInvokerMap 中根据方法名取出对应的Invoker 列表
ConditionRouter.route 执行路由过滤,ConditionRouter处理"condition:// "协议

RandomLoadBalance.doSelect() 如果权重不一样, 那么按权重进行随机, 否则均等随机(系统默认实现的策略有ConsistentHash,leastactive,random,roundrobin)

可以直接使用zookeeper自带的Cli.cmd客户端操作zookeeper数据

create -e /dubbo/cn.javacoder.test.dubbo.IHelloWorldService/routers/route%3A%2F%2F0.0.0.0%2Fcn.javacoder.test.dubbo.IHelloWorldService%3Fcategory%3Drouters%26dynamic%3Dfalse%26force%3Dfalse%26name%3Dtest-routeRule%26priority%3D100%26router%3Dcondition%26rule%3Dconsumer.host%2B%253D%2B10.112.6.29%2B%253D%253E%2Bprovider.port%2B%2521%253D%2B20880%26runtime%3Dtrue 0

Posted in: MySQL practise

Comments are closed.