dubbo-0x06-关于dubbo里面的代理
dubbo-0x05-SPI机制里面提及到dubbo在处理运行时动态发现的本质就是创建了代理,SPI在dubbo中的使用程度我个人评价是滥用,也就意味着代理和反射遍地都是。
在dubbo-0x01-源码阅读规划中就预料到至少在端到端的两头都是有代理的。
今天就看下dubbo对服务提供者和消费者的代理方式。
1 |
|
通常,代理就是对真正执行逻辑的代理,也就是proxy。dubbo一方面要跟注册中心通信,另一方面要彼此通信,还要考虑集群负载以及失败重试等等细节。所以dubbo在现有的proxy基础上又套了一层代理,就是invoker。
- 在框架层面的交互用的是invoker dubbo-0x08-Invoker
- 在本地交互就把执行权下放到proxy
- proxy再把执行逻辑委托给真正的实现
1 ProxyFactory的实现方式

搭配dubbo-0x05-SPI机制这个接口是通过SPI实现的动态发现,并且StubProxyFactoryWrapper
的构造方法的参数类型是ProxyFactory
所以它是wrapper
默认情况下
- ProxyFactory的实现是stub
- stub是wrapper,会持有javassist的实现
- 也就是说真正的实现方式就是
JavassistProxyFactory
这里面的核心是反射,关于反射请看dubbo-0x07-反射
2 jdk方式
1 |
|
3 javassist方式
1 |
|
dubbo-0x06-关于dubbo里面的代理
https://bannirui.github.io/2025/05/22/dubbo/dubbo-0x06-关于dubbo里面的代理/