上一节分析了 exportLocal(url),即dubbo本地服务暴露的源码,本节主要分析 dubbo远程服务暴露的方法。
其中logger打印的内容如下:
Register dubbo service com.alibaba.dubbo.demo.DemoService url dubbo://192.168.135.192:20880/com.alibaba.dubbo.demo.DemoService?anyhost=true&application=demo-provider&dubbo=2.0.0&generic=false&interface=com.alibaba.dubbo.demo.DemoService&loadbalance=roundrobin&methods=sayHello&owner=william&pid=1128&side=provider×tamp=1521252202603 to registry registry://127.0.0.1:2181/com.alibaba.dubbo.registry.RegistryService?application=demo-provider&dubbo=2.0.0&owner=william&pid=1128®istry=zookeeper×tamp=1521252202520, dubbo version: 2.0.0, current host: 127.0.0.1
表示将此url发布到zookeeper上。
proxyFactory.getInvoker的原理和本地暴露一样都是为了获取一个Invoker对象。
下面分析protocol.export(invoker)这个方法:
这个extension通过dubbo的spi获取,值为ProtocolListenerWrapper。
进入ProtocolFilterWrapper的export方法:
进入RegistryProtocol的export方法: