register<br>
生产者会将服务推送到注册中心,消费者也会从注册中心拉取数据,本地缓存
cluster 容错与集群策略
directory,从注册中心拉取的可以调用的服务<br>
路由 route,通过脚本对directory 提供的list<invoker> 进行筛选
balance 负载均衡方式,通过负载均衡决定最终的调用者
协议 protocol <br>
服务的暴露
依赖spring容器的启动过程
1 加载bean定义,和beandefineparser,解析XML标签
2 根据标签,加载对应的bean定义,然后创建对应的bean,如protocol,register,monitor,provider,consumer等标签
3 servicebean实现了InitializingBean接口,在接口方法里,完成serviceBean的检查与封装如provider,application,register,monitor,protocol,<br>
4 serviceBean 实现了springEvent接口,实现延迟暴露过程
5 由协议对象去暴露,doExport--doExportUrls,多协议暴露<br>
6 完成初始值设置后,proxyFactory(spi机制),和基于接口的javassist动态代理技术生成代理类<br>
SPI机制获取的类
proxyFactory
protocol dubboprotocol
负载均衡类 balance
7 封装invoker对象后打开服务器,openServer(URL) url= 协议+ip+端口+类全路径
8 注册到服务器然后本地进行缓存,ProviderCusumerRegTable 中缓存 providerinvoker<br>
服务的引入
1 加载bean定义,和beandefineparser,解析XML标签
2 根据标签,加载对应的bean定义,然后创建对应的bean,如protocol,register,monitor,provider,consumer等标签
3 referenceBean实现了FactoryBean接口,在接口方法里,完成对象的获取getObject
4 refenrenceBean完成了对属性consumer,application,register,monitor,protool的检查与封装
5 由协议protocol对象去执行doRefer方法<br>
6 在directory中,订阅服务中心中提供的服务,然后dubboProtocol执行远程引用的过程
7 依旧是初始化一个nettyClient,然后封装为一个invoker
8 注册到服务器然后本地进行缓存,ProviderCusumerRegTable 中缓存 Consumerinvoker<br>
服务调用过程
1 注入的代理类 proxy
2 filter mockFilter 、local、cache
mock 本地伪装,调用失败后如何返回
cache 缓存
3 clusterInvoker 容错机制
4 balance 负载均衡策略
5 filter context、count、limit、monitor等<br>
6 协议调用, protocol,dubbo、rmi、hessiom<br>
7 传输 transporter 、 netty/mina