Dubbo原理


provider:

1,spring在遇到dubbo的命名空间时,就会回调DubboNamespaceHandler;

2,用DubboBeanDefinitionPaser来解析bean

3,在ServiceConfig拿到提供服务的实际类的ref,通过ProxyFactory的getInvoker方法生成一个AbstractProxyInvoker对象,

4,通过serviceConfig将invoker对象解析为url(registry://..........?export=URL.encode("dubbo://..."))

5,将url传给Protocol扩展点,基于扩展点的Adaptive机制,通过协议头识别,根据RegistoryProtocol.exprot方法生成exporter(dubbo://....),暴露给注册中心;


register
1,调用registryProtocol.ref方法查询到提供者的dubbo协议的url
2,调用dubboProtocol的refer方法得到提供者的引用实例;

3.注册中心通过cluster将多个引用伪装成一个引用


consumer
1,ReferenceConfig的init方法调用protocol的ref方法生成invoker;
2,通过ProxyFactory转化invoker为响应的ref,供接口使用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章