跳至主要內容

Dubbo 基本介绍

Yaien Blog原创大约 3 分钟微服务RPCdubbo

Dubbo 基本介绍

Apache Dubbo 是一款 RPC 服务开发框架,用于解决微服务架构下的服务治理与通信问题,官方提供了 Java、Golang 等多语言 SDK 实现。使用 Dubbo 开发的微服务原生具备相互之间的远程地址发现与通信能力, 利用
Dubbo 提供的丰富服务治理特性,可以实现诸如服务发现、负载均衡、流量调度等服务治理诉求。Dubbo 被设计为高度可扩展,用户可以方便的实现流量拦截、选址的各种定制逻辑。

在云原生时代,Dubbo 相继衍生出了 Dubbo3、Proxyless Mesh 等架构与解决方案,在易用性、超大规模微服务实践、云原生基础设施适配、安全性等几大方向上进行了全面升级。

Dubbo一开始的定位就是RPC,专注于两个服务之间的调用。但随着微服务的盛行,除开服务调用之外,Dubbo也在逐步的涉猎服务治理、服务监控、服务网关等等,所以现在的Dubbo目标已经不止是RPC框架了,而是和Spring Cloud类似想成为了一个服务框架

核心组件

服务提供者(Provider)

作为服务的提供者,将自己的服务注册到注册中心,接收消费者的调用请求并提供相应的服务实现。提供者通常是一个独立的应用程序,它将自己的服务暴露给消费者。

服务消费者(Consumer)

从注册中心获取服务提供者的地址,并发起远程调用请求

注册中心(Register)

用于服务的注册与发现,提供服务地址的管理

监控中心(Monitor)

实时监控和统计分析服务的运行情况和性能指标,帮助用户更好地管理和优化分布式服务,提高系统的可靠性和可用性

基本原理

基本原理
基本原理

架构

从抽象架构上分为两层:服务治理抽象控制面 和 Dubbo 数据面

架构
架构

服务治理控制面

服务治理控制面不是特指如注册中心类的单个具体组件,而是对 Dubbo 治理体系的抽象表达。控制面包含协调服务发现的注册中心、流量管控策略、Dubbo Admin 控制台等,如果采用了 Service Mesh 架构则还包含 Istio
等服务网格控制面。

Dubbo数据面

数据面代表集群部署的所有 Dubbo 进程,进程之间通过 RPC 协议实现数据交换,Dubbo 定义了微服务应用开发与调用规范并负责完成数据传输的编解码工作

  • 服务消费者 (Dubbo Consumer),发起业务调用或 RPC 通信的 Dubbo 进程
  • 服务提供者 (Dubbo Provider),接收业务调用或 RPC 通信的 Dubbo 进程

通信协议

Dubbo 从设计上不绑定任何一款特定通信协议,HTTP/2、REST、gRPC、JsonRPC、Thrift、Hessian2 等几乎所有主流的通信协议,Dubbo 框架都可以提供支持。

这样的 Protocol 设计模式给构建微服务带来了最大的灵活性,开发者可以根据需要如性能、通用型等选择不同的通信协议,不再需要任何的代理来实现协议转换,甚至你还可以通过 Dubbo 实现不同协议间的迁移。

上次编辑于:
贡献者: yanggl