作者回复: 你好,Mystery森淼,🍃:粗俗的理解就是开启本地端口服务,让别人能通过网络进行调用。Dubbo 的服务暴露,其本意就是让服务端编写的接口,在利用 Socket 开启的端口服务,能够被其他进程通过【IP + 端口 + 接口】发起通信调用。
作者回复: 你好,w 🍍:在 org.apache.dubbo.config.ServiceConfig#exportLocal 方法里面有个 setProtocol("injvm") 预先导出本地的一份,然后在 org.apache.dubbo.config.ReferenceConfig#createProxy 方法中的 shouldJvmRefer 子方法中有对是否是 injvm 的判断。
作者回复: 你好,Geek_10086:【org.apache.dubbo.config.spring.context.DubboDeployApplicationListener#onApplicationEvent】 --> 【org.apache.dubbo.config.deploy.DefaultModuleDeployer#start】 --> 【org.apache.dubbo.config.deploy.DefaultModuleDeployer#exportServices】,然后你会看到【configManager.getServices()】这个里面的元素对象就是【serviceBean】对象。
作者回复: 你好,阿昕:如果是按照我在“总结”环节的那张图来讲的话,本地导出是当系统调用自己系统的接口时,为了不发起远程调用,就引出了本地导出这个功能。 而远程导出,就是开始 Netty 服务,以及写注册中心。