1. dubbo源码研究(一)
1.1. dubbo启动加载过程
- 我们知道,现在流行注解方式,用spring管理服务,dubbo最常用的就是
@Reference
和@Service
了,那么我首先找到这两个实现的地方
1.1.1. @service
实现
- 由下图可知
- 可以看到实现方法以BeanPostProcessor结尾,看过spring源码的都知道,这是spring加载过程的一环,具体在哪个过程,可以异步我整理的知识架构之一
https://www.processon.com/view/link/5cb096e3e4b09a003b2f1972
的spring模块看看在第几步 - 总之,它实现了spring的
BeanDefinitionRegistryPostProcessor
接口和多个Aware相关接口,在spring初始化时加载相关注解
1.2. 代理调用
- 看起来对用户有点意义的地方
2. 看下图所示的过程,核心就在上图的调用过程了
- 后续调用默认使用FailOver失败转移的类,再到netty调用
1.3. 消费端加载过程
- 加载url
1.4. 注意点
1.4.1. 路由调用
- 当服务提供者全部被设不匹配后,除非强制,否则设置不起作用;在测试的时候,由于我只有本身一台window机器,服务ip就一个,所有我设置了不匹配该ip是不起作用的,因为总共就一个-_-||
1.4.2. 默认负载策略
- 默认负载均衡策略是随机