美文网首页程序员
DUBBO注册发现源码分析

DUBBO注册发现源码分析

作者: M4Y | 来源:发表于2018-12-05 17:48 被阅读0次

首先附上我画的两张图

(架构)

架构图

原理图

原理


总结:这篇文章,主要介绍的是dubbo服务的三个原理

a:解析服务:将配置好的文件(dubbo配置文件)解析成bean对象,依据bean对象生成URL

b:暴露服务:将解析出来的URL,根据协议头,注册到注册中心并暴露服务

c:服务调用:根据url的协议头,invoke实例,获得服务


一解析服务:


1.读取(如spring)配置文件,匹配名称空间为dubbo 的配置,这些配置将会注入到相应的config里面

dubbo 的配置

2.使用handler(DubboNameSpaceHandler)类,调用DubboBeanDefinitionParse

DubboNameSpaceHandler

这个时候就开始配置config了,我们重点看上图的ServiceBean

ServiceBean

这个Bean是对ServiceConfig 的一个扩展,而ServiceConfig里面定义了接口类型,接口实现类引用,服务名称,方法配置 ,方法集合等 服务相关的配置.

ServiceConfig

而他的父类,则定义了基础配置

接着说上面提到的利用DubboBeanDefinitionParse解析配置,转化为Bean对象

DubboBeanDefinitionParse 

3. 将bean对象转为为URL格式,bean对象的参数转化为URL的参数

ServiceConfig

ReferenceConfig里面有一个创建proxy的方法

ReferenceConfig

这个方法里面会将bean封装成一个URL对象(如果有,则包含了用户指定的注册地址)

同下文的暴露端口 需要暴露IP和端口

最后封装到的是这个接口,使用了SPI

代理工厂

4.url会传输给Protocol,根据不同的协议头来进行不同的暴露和引用

二 暴露服务


1.从ServiceConfig拿到了服务的实际类getInvoker方法,判断暴露方式

ServiceConfig

2.如果本地暴露,协议头为dubbo类型,适配到DubboProtocol的export()方法,暴露服务

DubboProtocol

3.如果是像注册中心暴露服务,协议头为register类型,适配到RegisterProtocol的export()方法,修改url后,调用DubboProtocol的export()方法,注册到注册中心,然后暴露服务

RegisterProtocol 上图的解释

3.初始化结束

三 调用服务


1.直接引用的(协议头dubbo,只暴露端口的),通过ReferenceConfig解析URL.通过适配器找到DubboProtocol的refer()方法,

DubboProtocol,(invoke)

2.从注册中心发现引用服务(头为register),通过ReferenceConfig解析URL,通过适配器找到RegistryProtocol的refer()方法,获取refer的参数,查询提供者;这个时候协议头会变成dubbo,重复第1步流程.如果有多个提供者,则为伪装成一个服务.

相关文章

网友评论

    本文标题:DUBBO注册发现源码分析

    本文链接:https://www.haomeiwen.com/subject/rjkwcqtx.html