Dubbo2.x核心流程
2025-07-17 15:09:05 0 举报
Dubbo2.x源码分析
作者其他创作
大纲/内容
注册
创建Invoker请求组件
业务处理
import
Zookeeper注册中心
Future
开始
ReferenceAnnotationBeanPostProcessor处理被@DubboReference注解修饰的类
注册相关
Filter链
通过标号定位并保存结果
doExportUrlsFor1Protocol
监听
init
@DubboService对象
DubboConfigConfigurationRegistrar
Invoker
将注册中心的地址保存到本地文件中,作为服务地址的缓存信息
doLocalExport 导出服务
bind
多协议多注册中心导出服务
Wrapper对象
getRegistry获取注册中心实例
使用javassist和jdk动态代理技术
AllChannelHandler
ProtocolFilterWrapper
扫描@DubboService
服务端@EnableDubbo
传参
ApplicationConfig
请求相关
响应
线程池
DubboCodec解码
每个@DubboService都会生成对应的一个ServiceBean代理,ServiceBean代理里会有ref变量指向@DubboService原始对象
NioClientSocketChannel.write
同步/异步调用
refreshInvoker
dubboBootStrap.start
连接
directory.subscribe订阅 providers、configurators、routers 等节点数据
ReferenceBean.get
通过wrapper机制获取所有filter组装成链
组装url
RegistryConfig
DubboInvoker.invoke
ServiceBean代理BeanDefinition
register向注册中心注册服务
findInjectionMetadata查找@DubboReference修饰的field
Response 对象
registerServiceBeans
NettyClient
客户端@EnableDubbo
RegistryProtocol.export
InstantiationAwareBeanPostProcessor接口
ServiceClassPostProcessor实现了BeanDefinitionRegistryPostProcessor接口
proxyFactory.getProxy(invoker)生成代理类
InvokerInvocationHandler#invoke()
initialize加载配置中心的配置和元数据中心的数据
DubboProtocol.refer
创建NettyServer
DubboComponentScanRegistrar
registry.register注册服务消费者,在 consumers 目录下新节点
......
执行
createProxy
发布 ContextRefreshedEvent事件
DubboCodec编码
DubboLifecycleComponentApplicationListener
调用DubboReference发送请求
registerReferenceBean
AutowiredAnnotationBeanPostProcessor同样实现了该接口并实现了postProcessProperties()方法处理@Autowired注解
getInjectedObject
inject
实现
openServer
DubboClassPathBeanDefinitionScanner扫描器
Registry.doSubscribe拉取服务信息
DubboBootstrapApplicationListener
loadRegistries加载注册中心连接
触发事件变更之后,把变更的节点信息转化为Invoker
DubboConfigConfiguration
以后会先调用到Wrapper中的方法,在Wrapper中的方法中再调用@DubboService对象的方法
泛化、限流、监控等
唤醒业务线程
scanBasePackages属性
ProtocolConfig
NettyChannel.send
业务线程池
ServiceAnnotationBeanPostProcessor处理被@DubboService注解修饰的类
doExportUrls
postProcessBeanDefinitionRegistry()
exportServices服务导出
RegistryProtocol.refer
injectionMetadata
获取
Request对象
@DubboComponentScan
DubboApplicationListenerRegistrar
DubboProtocol.requestHandler
生成Bean
创建配置类并写入配置
订阅指定注册中心指定路径的子节点变更事件
javassist技术生成
createServer
zk客户端注册服务节点
@EnableDubboConfig
Protocol.refer
直接将创建好的对象放入Spring容器的单例池中,并不会走Spring的Bean初始化逻辑
Spring.finishRefresh
该线程池中的线程并非用户的调用线程
buildReferenceBeanIfAbsent根据@DubboReference配置信息构造ReferenceBean对象
创建
DubboAutoConfiguration
postProcessPropertyValues()
protocols
SpringBoot自动装配
0 条评论
下一页
为你推荐
查看更多