分布式3(Dubbo )

目录

核心功能与架构

关键特性

使用场景

Dubbo 与 Spring Boot/Spring Cloud 的集成

1. 与 Spring Boot 集成

2. 与 Spring Cloud 集成

发展现状与生态

Dubbo vs Spring Cloud

总结

官网介绍

核心概念和架构

Dubbo 数据面

服务开发框架

通信协议

Dubbo 服务治理

服务治理抽象

Dubbo Admin

服务网格


它是一款高性能的分布式服务框架,由阿里巴巴开源,现隶属于 Apache 基金会。Dubbo 主要用于解决微服务架构中服务治理(Service Governance)的问题,提供服务注册与发现、负载均衡、流量调度、熔断降级等核心能力。以下是关于 Dubbo 的详细介绍:

核心功能与架构

1. 核心功能

  • 服务注册与发现:通过注册中心(如 ZooKeeper、Nacos 等)实现服务的自动注册和发现,避免硬编码服务地址。
  • 负载均衡:支持多种负载均衡策略(如随机、轮询、最少活跃调用数等),将请求均匀分配到多个服务实例。
  • 服务通信:基于高性能 RPC 协议(如 Dubbo 协议、HTTP 协议等)实现服务间的透明调用。
  • 流量管理:提供限流、熔断、降级、黑白名单等机制,保障服务稳定性。
  • 动态配置:支持运行时动态调整服务参数(如超时时间、重试次数等)。

2. 架构模型

Dubbo 采用经典的 RPC 架构,包含以下角色:

  • Provider:服务提供者(服务方),暴露服务接口。
  • Consumer:服务消费者(调用方),引用服务接口。
  • Registry:注册中心,存储服务元数据(地址、版本、权重等),供 Provider 和 Consumer 订阅 / 注册。
  • Monitor:监控中心,统计服务调用次数、耗时等指标。
  • Container:服务容器,用于启动和管理 Provider(如 Spring Boot 容器)

关键特性

1. 多协议支持

  • Dubbo 协议:默认协议,基于 Netty 实现,适合高性能、短连接的场景(如内部服务调用)。
  • HTTP 协议:基于 Servlet 或 Spring MVC,适合跨语言调用或与外部系统对接。
  • 其他协议:支持 RMI、WebService、Thrift 等协议,可灵活适配不同场景。

2. 丰富的扩展机制

Dubbo 提供 SPI(Service Provider Interface)扩展机制,允许用户自定义:

  • 负载均衡策略:实现自定义负载均衡算法(如基于地理位置、请求内容等)。
  • 集群容错模式:支持失败重试、快速失败、并行调用等容错策略。
  • 注册中心:可扩展至 Redis、Nacos、Consul 等注册中心。
  • 序列化方式:默认使用 Hessian2,也可切换为 JSON(如 FastJSON)、Protobuf 等。

3. 服务治理能力

  • 服务版本控制:支持多版本服务共存(如 v1、v2 版本),方便灰度发布。
  • 流量路由:通过规则配置(如权重路由、标签路由)实现流量的细粒度控制。
  • 动态代理:自动生成服务接口的代理类,隐藏底层网络通信细节。

使用场景

1. 微服务架构

Dubbo 是构建微服务的核心组件之一,尤其适合高性能、高并发的内部服务调用场景,如电商交易、金融支付等。

2. 异构系统集成

通过 HTTP 协议或跨语言协议(如 Thrift),可实现 Java 与非 Java 系统(如 Python、Go 服务)的通信。

3. 遗留系统改造

Dubbo 支持平滑迁移:可将单体应用拆分为多个服务,通过注册中心管理服务依赖,逐步实现架构升级。

Dubbo 与 Spring Boot/Spring Cloud 的集成

1. 与 Spring Boot 集成

Dubbo 提供 Spring Boot Starter,可通过注解快速配置服务:

// 服务提供者(Provider)
@Service(protocol = "dubbo") // 暴露为 Dubbo 服务
public class UserServiceImpl implements UserService {
    // 业务逻辑
}

// 服务消费者(Consumer)
@RestController
public class UserController {
    @Reference // 引用远程服务
    private UserService userService;
    // 调用服务
}
2. 与 Spring Cloud 集成

Dubbo 可与 Spring Cloud 生态兼容,例如:

  • 使用 Nacos 作为统一的注册中心和配置中心。
  • 通过 Spring Cloud Gateway 实现服务网关的流量管理。

发展现状与生态

  • 版本迭代:当前最新版本为 Dubbo 3(2022 年发布),新增了云原生支持(如 Kubernetes 原生注册、Mesh 化部署)、应用级服务发现、流量治理增强等特性。
  • 生态组件
    • Dubbo Admin:可视化的服务治理控制台,用于管理服务元数据、路由规则、监控指标等。
    • Dubbo Monitor:基于 Prometheus/Grafana 的监控体系,支持实时查看服务调用链路和性能数据。
    • Dubbo Mesh:与 Istio 等 Service Mesh 框架结合,实现无侵入式的服务治理。

Dubbo vs Spring Cloud

维度DubboSpring Cloud
设计理念聚焦 RPC 通信与服务治理全栈微服务解决方案(包含网关、配置中心等)
性能更高(自研 RPC 协议,轻量级)稍低(基于 HTTP/REST,协议开销大)
语言支持以 Java 为主,支持部分跨语言多语言友好(基于 HTTP 协议)
生态成熟度核心功能成熟,云原生生态在完善生态完整,适合复杂业务场景

选择建议

  • 若追求高性能和轻量级架构,且以 Java 技术栈为主,优先选择 Dubbo。
  • 若需要多语言支持或复杂的微服务功能(如全链路追踪、分布式事务),可考虑 Spring Cloud 或 Spring Cloud Alibaba(集成了 Dubbo)。

总结

Dubbo 是分布式架构中服务治理的标杆工具,凭借高性能、可扩展性和丰富的生态,被广泛应用于互联网、金融、零售等领域。其核心价值在于简化分布式系统的开发与维护,让开发者聚焦业务逻辑,而非底层通信和治理细节。如果需要构建高可用、高性能的微服务系统,Dubbo 是值得深入学习和使用的框架。

官网介绍

核心概念和架构

architecture

以上是 Dubbo 的工作原理图,从抽象架构上分为两层:服务治理抽象控制面 和 Dubbo 数据面 。

  • 服务治理控制面。服务治理控制面不是特指如注册中心类的单个具体组件,而是对 Dubbo 治理体系的抽象表达。控制面包含协调服务发现的注册中心、流量管控策略、Dubbo Admin 控制台等,如果采用了 Service Mesh 架构则还包含 Istio 等服务网格控制面。
  • Dubbo 数据面。数据面代表集群部署的所有 Dubbo 进程,进程之间通过 RPC 协议实现数据交换,Dubbo 定义了微服务应用开发与调用规范并负责完成数据传输的编解码工作。
    • 服务消费者 (Dubbo Consumer),发起业务调用或 RPC 通信的 Dubbo 进程
    • 服务提供者 (Dubbo Provider),接收业务调用或 RPC 通信的 Dubbo 进程

Dubbo 数据面

从数据面视角,Dubbo 帮助解决了微服务实践中的以下问题:

  • Dubbo 作为 服务开发框架 约束了微服务定义、开发与调用的规范,定义了服务治理流程及适配模式
  • Dubbo 作为 RPC 通信协议实现 解决服务间数据传输的编解码问题

framework

服务开发框架

微服务的目标是构建足够小的、自包含的、独立演进的、可以随时部署运行的分布式应用程序,几乎每个语言都有类似的应用开发框架来帮助开发者快速构建此类微服务应用,比如 Java 微服务体系的 Spring Boot,它帮 Java 微服务开发者以最少的配置、最轻量的方式快速开发、打包、部署与运行应用。

微服务的分布式特性,使得应用间的依赖、网络交互、数据传输变得更频繁,因此不同的应用需要定义、暴露或调用 RPC 服务,那么这些 RPC 服务如何定义、如何与应用开发框架结合、服务调用行为如何控制?这就是 Dubbo 服务开发框架的含义,Dubbo 在微服务应用开发框架之上抽象了一套 RPC 服务定义、暴露、调用与治理的编程范式,比如 Dubbo Java 作为服务开发框架,当运行在 Spring 体系时就是构建在 Spring Boot 应用开发框架之上的微服务开发框架,并在此之上抽象了一套 RPC 服务定义、暴露、调用与治理的编程范式。

framework

Dubbo 作为服务开发框架包含的具体内容如下:

  • RPC 服务定义、开发范式。比如 Dubbo 支持通过 IDL 定义服务,也支持编程语言特有的服务开发定义方式,如通过 Java Interface 定义服务。
  • RPC 服务发布与调用 API。Dubbo 支持同步、异步、Reactive Streaming 等服务调用编程模式,还支持请求上下文 API、设置超时时间等。
  • 服务治理策略、流程与适配方式等。作为服务框架数据面,Dubbo 定义了服务地址发现、负载均衡策略、基于规则的流量路由、Metrics 指标采集等服务治理抽象,并适配到特定的产品实现。

想了解如何使用 Dubbo 微服务框架进行业务编码?从以下 SDK 开始微服务项目开发之旅吧:

通信协议

Dubbo 从设计上不绑定任何一款特定通信协议,HTTP/2、REST、gRPC、JsonRPC、Thrift、Hessian2 等几乎所有主流的通信协议,Dubbo 框架都可以提供支持。 这样的 Protocol 设计模式给构建微服务带来了最大的灵活性,开发者可以根据需要如性能、通用型等选择不同的通信协议,不再需要任何的代理来实现协议转换,甚至你还可以通过 Dubbo 实现不同协议间的迁移。

protocols

Dubbo Protocol 被设计支持扩展,您可以将内部私有协议适配到 Dubbo 框架上,进而将私有协议接入 Dubbo 体系,以享用 Dubbo 的开发体验与服务治理能力。比如 Dubbo3 的典型用户阿里巴巴,就是通过扩展支持 HSF 协议实现了内部 HSF 框架到 Dubbo3 框架的整体迁移。

Dubbo 还支持多协议暴露,您可以在单个端口上暴露多个协议,Dubbo Server 能够自动识别并确保请求被正确处理,也可以将同一个 RPC 服务发布在不同的端口(协议),为不同技术栈的调用方服务。

Dubbo 提供了两款内置高性能 Dubbo2、Triple (兼容 gRPC) 协议实现,以满足部分微服务用户对高性能通信的诉求,两者最开始都设计和诞生于阿里巴巴内部的高性能通信业务场景。

  • Dubbo2 协议是在 TCP 传输层协议之上设计的二进制通信协议
  • Triple 则是基于 HTTP/2 之上构建的支持流式模式的通信协议,并且 Triple 完全兼容 gRPC 但实现上做了更多的符合 Dubbo 框架特点的优化。

总的来说,Dubbo 对通信协议的支持具有以下特点:

  • 不绑定通信协议
  • 提供高性能通信协议实现
  • 支持流式通信模型
  • 不绑定序列化协议
  • 支持单个服务的多协议暴露
  • 支持单端口多协议发布
  • 支持一个应用内多个服务使用不同通信协议

Dubbo 服务治理

服务开发框架解决了开发与通信的问题,但在微服务集群环境下,我们仍需要解决无状态服务节点动态变化、外部化配置、日志跟踪、可观测性、流量管理、高可用性、数据一致性等一系列问题,我们将这些问题统称为服务治理。

Dubbo 抽象了一套微服务治理模式并发布了对应的官方实现,服务治理可帮助简化微服务开发与运维,让开发者更专注在微服务业务本身。

服务治理抽象

以下展示了 Dubbo 核心的服务治理功能定义

governance

  • 地址发现

Dubbo 服务发现具备高性能、支持大规模集群、服务级元数据配置等优势,默认提供 Nacos、Zookeeper、Consul 等多种注册中心适配,与 Spring Cloud、Kubernetes Service 模型打通,支持自定义扩展。

  • 负载均衡

Dubbo 默认提供加权随机、加权轮询、最少活跃请求数优先、最短响应时间优先、一致性哈希和自适应负载等策略

  • 流量路由

Dubbo 支持通过一系列流量规则控制服务调用的流量分布与行为,基于这些规则可以实现基于权重的比例流量分发、灰度验证、金丝雀发布、按请求参数的路由、同区域优先、超时配置、重试、限流降级等能力。

  • 链路追踪

Dubbo 官方通过适配 OpenTelemetry 提供了对 Tracing 全链路追踪支持,用户可以接入支持 OpenTelemetry 标准的产品如 Skywalking、Zipkin 等。另外,很多社区如 Skywalking、Zipkin 等在官方也提供了对 Dubbo 的适配。

  • 可观测性

Dubbo 实例通过 Prometheus 等上报 QPS、RT、请求次数、成功率、异常次数等多维度的可观测指标帮助了解服务运行状态,通过接入 Grafana、Admin 控制台帮助实现数据指标可视化展示。

Dubbo 服务治理生态还提供了对 API 网关限流降级数据一致性认证鉴权等场景的适配支持。

Dubbo Admin

Admin 控制台提供了 Dubbo 集群的可视化视图,通过 Admin 你可以完成集群的几乎所有管控工作。

  • 查询服务、应用或机器状态
  • 创建项目、服务测试、文档管理等
  • 查看集群实时流量、定位异常问题等
  • 流量比例分发、参数路由等流量管控规则下发

Admin

服务网格

将 Dubbo 接入 Istio 等服务网格治理体系。

Dubbo-Mesh

详细了解点击,官网地址:https://cn.dubbo.apache.org/zh-cn/overview/what/overview/

https://zhuanlan.zhihu.com/p/382200101

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

what_2018

你的鼓励是我前进的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值