Dubbo概述--启动过程

本文详细分析了Dubbo的启动过程,包括Provider的暴露服务和Consumer的引用服务。Provider启动时,通过ServiceBean实例化,Consumer启动时通过ReferenceBean创建代理实例。启动涉及属性设置、URL构建、注册中心交互等步骤,确保服务正常暴露和引用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Dubbo–启动过程

写在前面

本文参考了Dubbo官方手册结合Dubbo2.6.1版本源码分析。推荐先阅读官方手册

鉴于个人水平有限,如有不正确的地方请指出,欢迎一起讨论,谢谢!

启动过程

启动过程主要从Provider和Consumer进行分析。每个Provider最终会实例化为一个ServiceBean的实例,而每个Consumer通过实现自FactoryBean接口的ReferenceBean在首次调用时创建代理实例(也可以通过init属性设置非延迟加载)。

Provier启动过程(暴露服务)

Provider的启动过程默认由afterProperties方法触发,也可以通过Spring的刷新事件触发或者定时触发(通过delay属性控制),不需要通过代码getBean即可完成Provider的启动。

整个启动过程围绕两个URL,一个是调用服务的URL,另一个是同Registry通信的URL。在整个启动过程中通过向URL添加、读取属性(主要是Protocol)、参数,来串联起整个过程中的扩展(Trasport/Protocol等)的指定和启动的处理逻辑。

完成启动步骤(ServiceConfig.doExport()方法)概述如下:

  1. 检查并设置exported属性

  2. 检查默认配置,即检查provider属性是否为空,为空则实例化一个。

  3. 依照provider->module->application的顺序设置自身为空的属性(说明自身设置优先级高,且配置优先级privider>module>application)。

  4. 检查Provider提供服务的接口是否有服务方法以及接口实现类是否实现自接口。

  5. 检查application、registry、protocol配置,如果对应对象不存在则进行处理。

  6. 对本对象进行属性设置,属性值来源于-D或者properties配置文件,优先-D。

  7. 检查stub、local、mock配置,类是非存在、配饰是否合法、执行的构造器是否存在等。

    • stub,在客户端执行,用于客户端调用服务端时进行调用预处理或异常处理。相当于服务端对客户端的要求,客户端在调用时使用的是stub类。
    • local,已废弃,被stub取代。
    • mock,在客户端执行,专门用于调用服务端发生异常时进行异常处
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值