Dubbo是什么 1. Dubbo功能简介 2. Dubbo发展历史 3. Dubbo出现背景 4. RPC是什么 5. Dubbo架构

Dubbo是什么
1. Dubbo功能简介
2. Dubbo发展历史
3. Dubbo出现背景
4. RPC是什么
5. Dubbo架构

Dubbo 是阿里巴巴公司一个开源的高性能服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,以及 SOA 服务治理方案,使得应用可通过高性能 RPC 实现服务的输出、输入功能和 Spring 框架无缝集成。Dubbo 包含远程通讯、集群容错和自动发现三个核心部分。

它提供透明化的远程方法调用,实现像调用本地方法一样调用远程方法,只需简单配置,没有任何 API 侵入。同时它具备软负载均衡及容错机制,可在内网替代 F5 等硬件负载均衡器,降低成本,减少单点。它可以实现服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的 IP 地址,并且能够平滑添加或删除服务提供者。

2. Dubbo发展历史

Dubbo自2008 年底在阿里内部开始规划调用,2009 年初开发 1.0 版本;2010 年 04 月在 1.0 的版本之上进行了重构,发布了 2.0 版本;2011 年 10 月阿里宣布将 Dubbo 开源,开源的第一个版本为版本 dubbo-2.0.7。

Dubbo 开源之后,框架发展比较迅速,几乎两三个月会发布一个版本,于 2012 年 3 月 14 号发布版本 dubbo-2.1.0。随后又进入另一个快速发展期,版本发布频繁,几乎每一个月会发布好几次。直到 2013 年 3 月 17 号发布了 dubbo-2.4.10,版本陷入停滞;2014 年 10 月 30 号发布版本 dubbo-2.4.11,修复了一个小 Bug,版本又陷入漫长的停滞到现在。

2014 年的 10 月 20 号,当当网 Fork 了阿里的一个 Dubbo 版本开始维护,并命名为 dubbox-2.8.0。值得注意的是,当当网扩展 Dubbo 服务框架支持 REST 风格远程调用,并且跟随着 ZooKeepe 和 Spring 升级了对应的版本。之后 Dubbox 一直在小版本维护,2015 年 3 月 31 号发布了最后一个版本 dubbox-2.8.4。

伴随着Dubbo和Dubbox的停止维护,让人们开始怀疑Dubbo的未来发展,除了本身存在的bug之外,Dubbo也越来越难以追上其所依赖的Jdk、Spring、Zookeeper、Zkclient等等组件更新的脚步,将要慢慢被淘汰。

好在,停止维护将近三年,随着SprigCloud在抢占分布式开发框架市场上大红大紫,Dubbo又开始了更新的脚步。2017 年 9 月,阿里发布了 dubbo-2.5.4/5 版本;2017 年 10 月,阿里发布了 dubbo-2.5.6 版本;2017 年 11 月,阿里发布了 dubbo-2.5.7····

在18年1月,Dubbo与Dubbox合并,完成 dubbo-2.6.0 版本的升级。2月15号,Dubbo将自己开源贡献给了Apache组织。目前最新版是8月份发布的 dubbo-2.6.3,已支持和SpringBoot的集成。

3. Dubbo出现背景

要了解Dubbo出现背景,首先了解什么是分布式:《分布式系统原理与范型》定义:“分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统”。分布式系统(distributed system)是建立在网络之上的软件系统。

随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。

Dubbo是什么
1. Dubbo功能简介
2. Dubbo发展历史
3. Dubbo出现背景
4. RPC是什么
5. Dubbo架构

单一应用架构

当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。

 Dubbo是什么
1. Dubbo功能简介
2. Dubbo发展历史
3. Dubbo出现背景
4. RPC是什么
5. Dubbo架构

适用于小型网站,小型管理系统,将所有功能都部署到一个功能里,简单易用。

缺点: 1、性能扩展比较难 2、协同开发问题  3、不利于升级维护

垂直应用架构

当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的Web框架(MVC)是关键。

 Dubbo是什么
1. Dubbo功能简介
2. Dubbo发展历史
3. Dubbo出现背景
4. RPC是什么
5. Dubbo架构

通过切分业务来实现各个模块独立部署,降低了维护和部署的难度,团队各司其职更易管理,性能扩展也更方便,更有针对性。

缺点: 公用模块无法重复利用,开发性的浪费

分布式服务架构

当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式服务框架(RPC)是关键。

 Dubbo是什么
1. Dubbo功能简介
2. Dubbo发展历史
3. Dubbo出现背景
4. RPC是什么
5. Dubbo架构

流动计算架构

当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高机器利用率的资源调度和治理中心(SOA)[ Service Oriented Architecture]是关键

 Dubbo是什么
1. Dubbo功能简介
2. Dubbo发展历史
3. Dubbo出现背景
4. RPC是什么
5. Dubbo架构

4. RPC是什么

RPC(Remote Procedure Call)是指远程过程调用,是一种进程间通信方式,他是一种技术的思想,而不是规范。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。即程序员无论是调用本地的还是远程的函数,本质上编写的调用代码基本相同。

RPC基本原理:

 Dubbo是什么
1. Dubbo功能简介
2. Dubbo发展历史
3. Dubbo出现背景
4. RPC是什么
5. Dubbo架构

RPC过程调用图

Dubbo是什么
1. Dubbo功能简介
2. Dubbo发展历史
3. Dubbo出现背景
4. RPC是什么
5. Dubbo架构

5. Dubbo架构

Dubbo是什么
1. Dubbo功能简介
2. Dubbo发展历史
3. Dubbo出现背景
4. RPC是什么
5. Dubbo架构

各元素解释:

  • 服务提供者(Provider):暴露服务的服务提供方,服务提供者在启动时,向注册中心注册自己提供的服务。
  • 服务消费者(Consumer): 调用远程服务的服务消费方,服务消费者在启动时,向注册中心订阅自己所需的服务,服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
  • 注册中心(Registry):注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者
  • 监控中心(Monitor):服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心
  • 服务运行容器(Container):负责启动,加载,运行服务提供者。

调用过程说明:

  1. 服务容器负责启动,加载,运行服务提供者。
  2. 服务提供者在启动时,向注册中心注册自己提供的服务。
  3. 服务消费者在启动时,向注册中心订阅自己所需的服务。
  4. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
  5. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
  6. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

Dubbo 架构具有以下几个特点,分别是连通性、健壮性、伸缩性、以及向未来架构的升级性。