本文写作时,dubbo最高版本是V2.6.0.  写这篇文章主要想回答以下4个问题: 一.dubbo是什么?完成了哪些主要需求? 二.dubbo适用于什么场景? 三.dubbo的总体架构是什么样的? 四.dubbo调用的过程是什么样的? 下面就一一道来. 一.dubbo是什么?完成了哪些主要需求? dubbo是一个面向服务治理(SOA)的分布式RPC框架. 它主要实现了以下一些需求: RPC方面: 实现了基本的RPC过程,开发了DubboProtocol作为默认的实现,并集成了Hession,R…
Dubbo集群模块的目的是将集群Invokers构造一个透明的Invoker对象,其中包含了容错机制.负载均衡.目录服务(服务地址集合).路由机制等,为RPC层提供高可用.高并发.自动发现.可治理的SOA特性. 本文我们主要讨论以下八个问题: 一.集群模块的需求功能点有哪些? 二.集群模块的总体设计框架是什么样的? 三.Dubbo提供了哪些容错机制?如何实现的? 四.Dubbo提供了哪些负载均衡机制?如何实现的? 五.Dubbo目录服务是干什么的?提供了哪几种类型的目录服务? 六.Dubbo提供…
Dubbo注册中心是框架的核心模块,提供了服务注册发现(包括服务提供者.消费者.路由策略.覆盖规则)的功能,该功能集中体现了服务治理的特性.该模块结合Cluster模块实现了集群服务.Dubbo管理控制台查询注册的数据展现服务提供者.消费者.路由策略.覆盖规则相关信息.监控中心从注册中心订阅相关信息实时监控调用链调用情况. 那么,Registry模块的职责我们总结为: (1)注册:包括服务提供者.路由策略.覆盖规则信息注册到注册中心: (2)订阅:消费端从注册中心订阅相关信息: (3)通知(pu…
dubbo本质是一个RPC框架,我们首先讨论这个骨干中的骨干,dubbo-rpc模块. 主要讨论一下几部分内容: 一.此模块在dubbo整体框架中的作用: 二.此模块需要完成的需求功能点及接口定义: 三.DubboProtocol实现细节: 四.其他协议实现: 一.此模块在dubbo整体框架中的作用 Protocol 是框架中的核心层,也就是只要有 Protocol + Invoker + Exporter 就可以完成非透明的 RPC 调用,然后在 Invoker 的主过程上 Filter 拦截…
ReferenceBean 跟服务引用一样,Dubbo的reference配置会被转成ReferenceBean类,ReferenceBean实现了InitializingBean接口,直接看afterPropertiesSet()也就是spring为Bean提供的初始化方法 方法调用顺序afterPropertiesSet() -> getObject() -> get() -> init() -> createProxy() afterPropertiesSet() after…
相关文章: Dubbo源码学习--服务是如何发布的 Dubbo源码学习--服务是如何引用的 注册中心 关于注册中心,Dubbo提供了多个实现方式,有比较成熟的使用zookeeper 和 redis 的实现,也有实验性质的Multicast实现. Zookeeper是Apacahe Hadoop的子项目,是一个树型的目录服务,支持变更推送,适合作为Dubbo服务的注册中心,工业强度较高,可用于生产环境, 所以Zookeeper注册中心也是Dubbo推荐使用也是使用度比较高的注册中心. Zookee…
相关文章: Dubbo源码学习--服务是如何发布的 Dubbo源码学习--服务是如何引用的 ServiceBean ServiceBean 实现ApplicationListener接口监听ContextRefreshedEvent事件(容器加载完成事件) public void onApplicationEvent(ApplicationEvent event) { if (ContextRefreshedEvent.class.getName().equals(event.getClass(…
相关文章: Dubbo源码学习文章目录 前言 Dubbo 的定位是分布式服务框架,为了避免单点压力过大,服务的提供者通常部署多台,如何从服务提供者集群中选取一个进行调用, 就依赖Dubbo的负载均衡策略. Dubbo 负载均衡策略 Dubbo 负载均衡策略提供下列四种方式: Random LoadBalance 随机,按权重设置随机概率. Dubbo的默认负载均衡策略 在一个截面上碰撞的概率高,但调用量越大分布越均匀,而且按概率使用权重后也比较均匀,有利于动态调整提供者权重. RoundRobi…
目录 Dubbo源码学习--服务是如何发布的 Dubbo源码学习--服务是如何引用的 Dubbo源码学习--注册中心分析 Dubbo源码学习--集群负载均衡算法的实现…
Dubbo源码学习--优雅停机原理及在SpringBoot中遇到的问题 相关文章: Dubbo源码学习文章目录 前言 主要是前一阵子换了工作,第一个任务就是解决目前团队在 Dubbo 停机时产生的问题,同时最近又看了一下 Dubbo 的源码,想重新写一下 Dubbo 相关的文章. 优雅停机原理 对于一个 java 应用,如果想在关闭应用时,执行一些释放资源的操作一般是通过注册一个 ShutDownHook ,当关闭应用时,不是调用 kill -9 命令来直接终止应用,而是通过调用 kill -1…