1. dubbo服务的引入过程
饿汉式引入:通过调用ReferenceBean的afterPropertySet 方法时引入服务
懒汉式:服务被注入其他类的时候启动引入流程。默认方式,可通过配置dubbo:reference的init属性开启
ReferenceBean 实现了FactoryBean接口,当对任意服务interface进行自动注入或者getbean获取时,就会触发getObject()函数的服务引入过程。
- 本地引入走injvm协议,到服务暴露的缓存中取explore
- 直接远程引入服务,测试的情况下用,不需要启动注册中心,由consumer直接配置写死provider的地址,直连即可。
- 注册中心引入远程服务,consumer通过注册中心得知provider的相关信息进入服务引入。
获取注册中心实例,像注册中心注册自身,并订阅providers、conficurators、routers节点,触发dubboInvoker的生成,cluster将多个服务调用者进行封装,返回一个invoker。
总结:通过配置构建一个map, 然后利用map 来构建URL,再通过URL上的协议利用自适应扩展机制调用对应的protocol refer 得到相应的invoker,然后再构建代理,封装invoker返回服务调用,之后consumer调用这个invoker。