Dubbo服务发现源码解析

  • 时间:
  • 浏览:2
  • 来源:uu快3app娱乐_uu快3辅助_官方网址

相关信息都可不可以 参考: Dubbo中对Spring配置标签扩展(http://www.cnblogs.com/ghj1976/p/5379332.html

以 dubbo-demo-provider 为例, 它的配置文件如下:

下面亲戚亲戚亲戚亲戚朋友的分析以最基础也是应用最广泛的Spring配置法子为例。

关于Spring对象的生命周期,都可不可以 参考 https://www.cnblogs.com/zrtqsk/p/3735273.html

二、服务发现

Dubbo的应用会在启动时完成服务注册或订阅(不论是生产者,还是消费者)如下图所示。

核心模块及其关系,如图所示:

在 afterPropertiesSet 后, 会调用到 ServiceConfig.export() ,具体的调用栈如下

一、源码模块

1.1 源码模块组织

Dubbo工程是一一个 Maven多Module的项目,以包特性来组织各个模块。

注解驱动(Annotation-Driven)

实物化配置(External Configuration)

以及自动装配(Auto-Configure)

具体的都可不可以 参考 http://dubbo.apache.org/zh-cn/blog/dubbo-annotation.html

1.2 模块说明

dubbo-common 公共逻辑模块,包括Util类和通用模型。

dubbo-remoting 远程通讯模块,最少Dubbo协议的实现,而且RPC用RMI协议则需要使用此包。

dubbo-rpc 远程调用模块,抽象各种协议,以及动态代理,只包含一对一的调用,不关心集群的管理。

dubbo-cluster 集群模块,将多个服务提供方伪装为一一个 提供方,包括:负载均衡、容错、路由等,集群的地址列表都可不可以 是静态配置的,也都可不可以 是由注册中心下发。

dubbo-registry 注册中心模块,基于注册中心下发地址的集群法子,以及对各种注册中心的抽象。

dubbo-monitor 监控模块,统计服务调用次数,调用时间的,调用链跟踪的服务。

dubbo-config 配置模块,是Dubbo对外的API,用户通过Config使用Dubbo,隐藏Dubbo所有细节。

dubbo-container 容器模块,是一一个 Standalone的容器,以简单的Main类加载Spring启动,而且服务通常需要Tomcat/JBoss等Web容器的特性,没必要用Web容器去加载服务。而且服务通常需要 Tomcat/JBoss 等 Web 容器的特性,没必要用 Web 容器去加载服务。

2.4 服务注册和引用

在Bean对象实例化的过程中,参考Spring Bean对象的生命周期,依次实现了不同的法子完成注册和引用。

2.2 配置信息

在配置文件中,所有dubbo的标签,都统一用DubboBeanDefinitionParser进行解析,基于一对一属性映射,将XML标签解析为Bean对象。

图中小方块Protocol, Cluster, Proxy, Service, Container, Registry, Monitor代表层或模块,浅蓝色的表示与业务有交互,绿色的表示只对Dubbo实物交互。

图中背景方块Consumer, Provider, Registry, Monitor代表部署逻辑拓普节点。

图中浅蓝色虚线为初始化时调用,红色虚线为运行时异步调用,红色实线为运行时同步调用。

图中只包含RPC的层,不包含Remoting的层,Remoting整体都隐含在Protocol中。

2.1 多种启动法子

除了XML法子,Dubbo的服务Config还支持多种法子,包括

com.alibaba.dubbo.demo.provider.DemoServiceImpl 是服务实现类。

com.alibaba.dubbo.demo.DemoService 是服务需要实现的接口。

2.3 配置文件的解析过程

基于dubbo.jar内的META-INF/spring.handlers配置,Spring在遇到dubbo名称空间时,会回调DubboNamespaceHandler。

所有dubbo的标签,都统一用DubboBeanDefinitionParser进行解析,基于一对一属性映射,将XML标签解析为Bean对象。

每个service法子的配置会解析成对应的 com.alibaba.dubbo.config.spring.ServiceBean 类的实例。

猜你喜欢

银行卡转到支付宝要手续费吗?支付宝转银行需要手续费吗?

展开完整篇 支付宝转账到银行卡上的步骤:3、输入“转出金额”,检查无误后,输入“支付宝支付密码”、“确认转账到银行卡”,即可转账到银行卡成功。2、点击转出后,选择“转出至银行

2020-02-19

nginx配置ssl加密(单/双向认证、部分https)

提示:nignx到后端服务器可能一般是内网,所以不加密。全站做ssl是最常见的有三个 使用场景,默认端口443,而且一般是单向认证。设置较长的keepalive_time

2020-02-19

银行卡没开通网银和手机号也没捆绑能在网上买东西吗

5、遇上欺诈或其它受侵犯的事情可在网上找网络警察解决。1、利用网购导航进行网购;招商银行成立于1987年,目前已发展成为了资本净额超过31500亿、资产总额超过4.8万亿、全国

2020-02-19

CDN产品家族又添新成员

点开这人 链接的你可能不懂CDN,将源站内容派发至全国所有的节点,缩短用户查看对象的延迟,提高用户访问网站的响应下行传输速率 与网站的可用性,处里网络下行传输速率

2020-02-19

怎么禁止wiif下王者荣耀?

首真难进行抓包,如保让提交到亲戚亲戚朋友的协议分析系统。编辑封堵级别,把“王者荣耀”设置为”禁止“。手机上会提示”您的网络状态较差,请检查网络后重试“。在WFilterICF中

2020-02-19