Dubbo3详解(5大新特性及功能图解)

Dubbo3详解(5大新特性及功能图解)-mikechen

Dubbo简介

Apache Dubbo 是一款微服务开发框架,它提供了 RPC通信,以及微服务治理 两大关键能力,致力于高性能透明化的远程服务调用方案。

这意味着,使用 Dubbo 开发的微服务,将具备相互之间的远程发现与通信能力, 同时利用 Dubbo 提供的丰富服务治理能力,可以实现诸如服务发现、负载均衡、流量调度等服务治理诉求。同时 Dubbo 是高度可扩展的,用户几乎可以在任意功能点去定制自己的实现,以改变框架的默认行为来满足自己的业务需求。

 

Dubbo功能

Dubbo核心功能,主要提供了:远程方法调用、智能容错和负载均衡、提供服务自动注册、自动发现等高效服务治理功能。

 

Dubbo组件

Dubbo3详解(5大新特性及功能图解)-mikechen

1)服务提供者(Server)

对外提供后台服务,将自己的服务信息,注册到注册中心

2)注册中心(Registry)

用于服务端注册远程服务以及客户端发现服务。

目前主要的注册中心可以借由 zookeeper,eureka,consul,etcd 等开源框架实现。

比如:阿里的Dubbo就是采用zookeeper实现注册中心。

3)服务消费者(Client)

从注册中心获取远程服务的注册信息,然后进行远程过程调用。

4)监控(Monitor)

为了更好的调试,发现问题,需要监控,因此Dubbo引入了监控中心,可以对消费者和提供者进行管理。

Dubbo3详解(5大新特性及功能图解)-mikechen

 

Dubbo调用流程

Dubbo调用流程,大致分为如下11步:

Dubbo3详解(5大新特性及功能图解)-mikechen

 

Dubbo发展历程

dubbo的发展历程,经历过如下阶段:

Dubbo3详解(5大新特性及功能图解)-mikechen

大致总结为3段:

1.诞生阿里

dubbo前生2008年在阿里内部诞生,2011年开源,2012年发布2.5.3版本后停止更新。

 

2.进入apache顶级项目

2017年阿里重启dubbo项目,并于2018年进入apache孵化,2019年成为apache顶级项目。

 

3.dubbo3.o

2020年发布3.0,往云原生项目发展的战略计划。

 

Dubbo3 新特性

Dubbo3 依旧保持了 2.x 的经典架构,以解决微服务进程间通信为主要职责,通过丰富的服务治理能力来更好的管控微服务集群。

Dubbo3 对原有框架的升级是全面的,体现在核心 Dubbo 特性的几乎每个环节,通过升级实现了稳定性、性能、伸缩性、易用性的全面提升。

1.全面的性能提升

对比 2.x 版本,Dubbo3 版本服务发现资源利用率显著提升,对比接口级服务发现,单机常驻内存下降 50%。

对比应用级服务发现,单机常驻内存下降 75%,GC 次数趋零。

 

2.下一代 RPC 通信协议

新一代的 Triple 协议基于 HTTP/2 作为传输层,具备更好的网关、代理穿透性,原生支持 Stream 通信语义,兼容 gRPC 协议。

Triple是Dubbo3 提出的基于 HTTP2 的开放协议,基于 HTTP/2 上构建的 RPC 协议,完全兼容 gRPC,并在此基础上扩展出了更丰富的语义。

相比于原有 Dubbo2 协议Triple 有以下优势:

1)原生和 gRPC 协议互通

打通 gRPC 生态,降低从 gRPC 至 Dubbo 的迁移成本。

2)增强多语言生态

避免因 CPP/C#/RUST 等语言的 Dubbo SDK 能力不足,导致业务难以选型适配的问题。

3)网关友好

更容易到适配网关、Mesh架构,Triple 协议让 Dubbo 更方便的与各种网关、Sidecar 组件配合工作。

4)流式通信支持

Triple 协议支持 Request Stream、Response Stream、Bi-direction Stream。

 

3.Kubernetes

Dubbo3 开发的应用可以原生部署到 Kubernetes 平台,Dubbo3 也已对接到了原生的 Kubernetes Service 体系。

 

4.Service Mesh

Service Mesh,是一个形象化的词语表达:Service(服务)和Mesh(网格),它描述了服务间的依赖形态,就像下面这张网一样。

Dubbo3详解(5大新特性及功能图解)-mikechen

其中深色的是我们平时工作中接触最多的业务微服务,旁边蓝色的被称为边车Sidecar服务。

Sidecar作为业务微服务的“代理”,处理与其他业务微服务sidecar之间的非功能需求,如网络通信、安全、监控、流量控制等。

多个Sidecar之间的连接和交互组成了网格mesh。

Dubbo3 提供了基于自身思考的 Dubbo Mesh 解决方案,Dubbo3 规划了两种形态的 Service Mesh 方案:

  • 经典的基于 Sidecar 的 Service Mesh;
  • 无 Sidecar 的 Proxyless Mesh;

 

5.异构体系互通

典型如 Dubbo、Spring Cloud、gRPC 等,有着异构微服务体系互通的诉求,Dubbo3 借助于新的服务发现模型以及可灵活扩展的 RPC 协议,可以成为 Dubbo3 未来的发展目标。

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法