dubbo与zookeeper交互-3

总结:dubbo-admin是dubbo的管理系统,它在启动时会解析xml文件,获得zookeeper的地址,并创建zookeeper的客户端ZookeeperRegistry,库护短通过url与ZkclientZookeeperTransporter去连接注册中心,在调用spring管理的实例RegistryServerSync,监听所有的服务,当注册中心的服务有变化时,注册中心会通过RegistryServerSync的notify方法,将注册中心的内容推动给RegistryServerSync。

1.providers:服务提供者

API:registry(url):注册    unregistry(url):删除  

        disableProvider(url):禁用,如果url是dynamic=true,enabled=true。则创建一个override并注册将disable属性设置为true,override在注册中心的分类为configurators,类似于标记,但是此时的服务提供者仍可被消费者调用。dynamic=false的,将url的enable属性设置为false,删除原url的注册,注册新的enable=false的url,URL注册后,将不再providers列表中显示,但是url仍为注册状态,在测试中还未找到该类url的存储位置和dynamic属性的区别?但是这类url,将不能被消费者调用

2. consumers:服务消费者

API:registry(url):注册    unregistry(url):删除  

forbid(url,allow,only):禁止,testConsumerService.forbid(url, false, false);  后面两个参数为boolean类型(为方便理解,改造后的代码,可对比源码看),总的说,根据禁止的service和service的IP定义服务访问的路由规则,将禁止访问的URL,定义到禁止访问的路由规则中。被禁止的访问service的IP访问时,将收到禁止访问异常

allow(url,allow,only):允许访问,testConsumerService.forbid(url, true, false); 修改倒数第二个参数即可





mock(url,"force:return null"):屏蔽(为方便理解修改后代码,可与源码对比看),与禁止不同,被屏蔽的URL在访问时不进行远程调用,直接返回null,原理与禁止也不同,屏蔽是会根据被屏蔽的url的service和address创建override并注册,进行标记,标记的在注册中心的分组为configurators



恢复访问只需将mock(url,""):的第二个参数设为空字符串即可。

猜你喜欢

转载自blog.csdn.net/dc_123456/article/details/72457384