04 07 2020

前言

本文主要目的为了解 Apache Dubbo 基础

起源

Dubbo 是阿里巴巴内部使用的一个分布式服务治理框架,于2012年开源,由于经过大规模业务验证,被很多互联网公司采用。

2014年,停止了维护,所以很多使用 Dubbo 框架的公司开始自己开发维护,如当当网的 DubboX。

2017年9月,阿里巴巴重启了 Dubbo 的维护并做好了长期投入的准备,对 Dubbo 的未来做了很多规划。

2018年2月,Dubbo 进入 Apache 孵化,这意味着它将不仅仅是阿里巴巴的 Dubbo,而是属于开源社区的,也意味着会有更多的开源贡献者参与到 Dubbo 的开发中来。

2019年5月,Apache Dubbo 正式从孵化器中毕业,代表着 Apache
Dubbo 正式成为 Apache 的顶级项目。

概述

Apache Dubbo 是一个分布式服务框架,主要实现多个系统之间的高性能、透明化调用。

简单来说它是一个 RPC 框架,与普通 RPC 框架不同的是,它提供了服务治理功能,比如服务注册、监控、路由、容错等。

RPC是远程过程调用(Remote Procedure Call)的缩写形式,简单的理解是一个节点请求另一个节点提供的服务。 RPC 基础

六大核心能力

1. 面向接口代理的高性能RPC调用

提供高性能的基于代理的远程调用能力,服务以接口为粒度,为开发者屏蔽远程调用底层细节。

2.智能负载均衡

内置多种负载均衡策略,智能感知下游节点健康状况,显著减少调用延迟,提高系统吞吐量。

3.服务自动注册与发现

支持多种注册中心服务,服务实例上下线实时感知。

4.高度可扩展能力

遵循微内核+插件的设计原则,所有核心能力如Protocol、Transport、Serialization被设计为扩展点,平等对待内置实现和第三方实现。

5.运行期流量调度

内置条件、脚本等路由策略,通过配置不同的路由规则,轻松实现灰度发布,同机房优先等功能。

6.可视化的服务治理与运维

提供丰富服务治理、运维工具:随时查询服务元数据、服务健康状态及调用统计,实时下发路由策略、调整配置参数。

促使 Dubbo 产生的主要原因

  • 随着业务大规模的服务化,服务越来越多,在服务提供者出现动态扩容或者故障时,服务消费者需要更新本地配置的 URL 地址,这种维护成本非常高。这时实现服务的上下线动态感知及服务地址的动态维护是非常有必要的。
  • 随着用户访问量的增大,后端服务会为了支持不同级别的访问量,从而对服务器进行扩容或者缩容,需要知道每个服务的调用量和响应时间来作为判断依据。这时需要一种监控手段,使用监控的数据作为容量规划参考值,从而实现根据不同服务的访问情况来合理地调控服务器资源,提高机器的利用率。

Dubbo 架构图

dubbo架构图

节点角色说明
节点 角色说明
Provider 暴露服务的服务提供方
Consumer 调用远程服务的服务消费方
Registry 服务注册与发现的注册中心
Monitor 统计服务的调用次数和调用时间的监控中心
Container 服务运行容器
调用关系说明

0.服务容器负责启动,加载,运行服务提供者

1.服务提供者在启动时,向注册中心注册自己提供的服务

2.服务消费者在启动时,向注册中心订阅自己所需的服务

3.注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者

4.服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用

5.服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心

延伸阅读
  1. Apache Dubbo入门
发表评论