19|发布流程:带你一窥服务发布的三个重要环节
配置
- 深入了解
- 翻译
- 解释
- 总结
本文深入研究了Dubbo源码的服务发布流程,重点介绍了配置、导出和注册三个重要环节。通过逆向寻找的方式,详细介绍了Dubbo服务发布的关键流程,包括@DubboService注解标识服务、扫描器扫描带有该注解的类并创建新的ServiceBean类型的Bean定义,以及ServiceBean被触发执行导出方法的过程。文章着重分析了导出环节的实现细节,包括本地导出和远程导出的实现方式、配置url的scope属性控制导出方式的三种方式,以及代理对象的获取流程和JavassistProxyFactory实现类中的代理对象生成逻辑。总的来说,本文通过深入解析Dubbo源码中服务发布流程,为读者提供了全面的技术视角和详细的实现细节,帮助读者快速了解Dubbo服务发布的内部机制,为后续的问题分析和框架扩展提供了重要参考。文章内容涉及的技术细节丰富,通过对Dubbo源码的深入解析,读者可以全面了解Dubbo服务发布的内部机制,为后续的问题分析和框架扩展提供了重要参考。文章还提出了思考题,引发读者对Dubbo源码的更深层次思考。
《Dubbo 源码剖析与实战》,新⼈⾸单¥59
全部留言(5)
- 最新
- 精选
- Mystery森淼,🍃老师,服务的暴露应该怎么理解呢,
作者回复: 你好,Mystery森淼,🍃:粗俗的理解就是开启本地端口服务,让别人能通过网络进行调用。Dubbo 的服务暴露,其本意就是让服务端编写的接口,在利用 Socket 开启的端口服务,能够被其他进程通过【IP + 端口 + 接口】发起通信调用。
2023-04-01归属地:北京1 - w 🍍protocolSPI默认是dubbo,那么是怎么找到injvm的
作者回复: 你好,w 🍍:在 org.apache.dubbo.config.ServiceConfig#exportLocal 方法里面有个 setProtocol("injvm") 预先导出本地的一份,然后在 org.apache.dubbo.config.ReferenceConfig#createProxy 方法中的 shouldJvmRefer 子方法中有对是否是 injvm 的判断。
2023-06-13归属地:浙江2 - Geek_10086老师,请问 serviceBean怎么触发的 serviceConfig#exprot方法,一直没有找到
作者回复: 你好,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】对象。
2023-02-24归属地:河北3 - 阿昕本地导出是为了开启本地协议端口的netty服务,远程导出是为了写入数据到注册中心,可以这样理解吗?
作者回复: 你好,阿昕:如果是按照我在“总结”环节的那张图来讲的话,本地导出是当系统调用自己系统的接口时,为了不发起远程调用,就引出了本地导出这个功能。 而远程导出,就是开始 Netty 服务,以及写注册中心。
2023-02-07归属地:浙江 - William1、配置: @DubblService , 定义实现类service -->>最终生成 ServiceBean(BeanDefinition) 2、导出: export 暴露接口给外部使用(本地、远程) 3、注册: 注册到相应的协议上(zk临时节点).2023-12-04归属地:吉林