ITPub博客

首页 > 云计算 > 开源云工具 > 5 分钟读懂开源服务框架 Dubbo 及其最新规划

5 分钟读懂开源服务框架 Dubbo 及其最新规划

原创 开源云工具 作者:阿里巴巴云原生 时间:2023-04-02 19:01:11 0 删除 编辑

## Dubbo 简介


### 一句话定义


Apache Dubbo 是一款微服务开发框架,它帮助解决微服务开发中的通信问题,同时为构建企业级微服务的提供服务治理能力,Dubbo 不绑定编程语言,我们的目标是为所有主流语言提供对等的微服务开发体验。


![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/5975c66769ee4347a598da736610bf5c~tplv-k3u1fbpfcp-zoom-1.image "image.png")


### 基本架构


![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6a86e3cc9e8146a6961a980dba60694d~tplv-k3u1fbpfcp-zoom-1.image "image.png")


Dubbo 从架构图上分为数据面和控制面。在数据面,使用 Dubbo 开发的微服务进程间基于 RPC 协议通信。DubboAdmin 控制面作为服务治理的抽象入口,由一系列可选的服务治理组件构成,负责 Dubbo 集群的服务发现、流量管控策略、可视化监测。


### 行业应用


Dubbo 设计用于解决阿里巴巴内部大规模 微服务集群实践难题,当前已被广泛应用于几乎所有行业的微服务实践中。


![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/da99cd3c32894208a4b332a28373135f~tplv-k3u1fbpfcp-zoom-1.image "image.png")


以阿里巴巴为例,在 2021 年,阿里巴巴基于内部多年 HSF 框架实践积累,面向云原生架构设计了下一代微服务框架 Dubbo3,用于解决性能、治理升级、服务网格等一系列问题;截止目前,阿里巴巴已全面完成从 HSF 到 Dubbo3 的迁移,核心业务都跑在开源 Dubbo3 之上。


## Dubbo 到底提供了哪些核心能力?


### 提供微服务抽象与框架


![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/4c3e52d075294c01ac2d2f34d276057d~tplv-k3u1fbpfcp-zoom-1.image "image.png")


首先,Dubbo 作为服务开发框架解决了业务应用中微服务定义、暴露、通信与治理的问题,为业务应用开发定义了一套微服务编程范式。


具体来说,Dubbo 为业务应用提供了微服务开发API、RPC 协议、服务治理三大核心能力,让开发者真正的专注业务逻辑开发。


![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b866cba3fa02458b937c36f139d823d7~tplv-k3u1fbpfcp-zoom-1.image "image.png")


Dubbo 不是应用框架的替代者,它可以很好的工作在每种语言的主流编程框架之上,以 Java 为例,Dubbo 可以很好的与 Spring 协作,并在此基础上提供服务定义、微服务编程、服务发现、负载均衡、流量管控等能力。


### 提供灵活的通信协议切换能力


![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/becad8d2e6e1485aa857290a51557c7e~tplv-k3u1fbpfcp-zoom-1.image "image.png")


在通信方面,Dubbo 区别于其他 RPC 框架的是它不绑定特定协议,你可以在底层选用 HTTP./2、TCP、gRPC、REST、Hessian 等任意通信协议,同时享受统一的 API、以及对等的服务治理能力。


### 一切皆可扩展


![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/03be5a4473cc4b46a2f82d08891eee5e~tplv-k3u1fbpfcp-zoom-1.image "image.png")


Dubbo 的另一个优势在于其可扩展性设计,从流量管控、协议编码、诊断调优、再到服务治理,你都可以去扩展,满足企业级微服务开发与运维的所有诉求。


### 丰富的生态


![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d704c4d62f154c19a0dfff59d1860ec6~tplv-k3u1fbpfcp-zoom-1.image "image.png")


基于扩展能力 Dubbo 官方提供了丰富的生态适配,涵盖了所有主流的开源微服务组件。


### 服务网格


![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/aa9b17befcae4386ab9765b626d894ab~tplv-k3u1fbpfcp-zoom-1.image "image.png")


对于服务网格架构,Dubbo也可以轻松接入原生 Istio 体系;在数据面支持与 Envoy 部署的 Proxy 模式,也支持无 Envoy 的 Proxyless 模式,提供更灵活的数据面选择。


## 构建企业级 Dubbo 微服务有多简单?你只需要4步


我们以 Java 微服务开发为例。


### 第一步


![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/9a8d3aa341914384811315c97d0453b0~tplv-k3u1fbpfcp-zoom-1.image "image.png")


使用官方脚手架快速创建项目模板,只需要选择依赖的版本、组件,点击 “获取代码” 即可。


### 第二步


将模板项目导入 IDE 开发环境。定义 Java 接口作为 Dubbo 服务。


![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/0f610c092a82403995bbf9e283674725~tplv-k3u1fbpfcp-zoom-1.image "image.png")


开发 Dubbo 服务端,实现接口并完成业务逻辑编码,通过一条简单的注解配置完成服务发布。


![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a2154cca67bc40599b2957dcd3c044e0~tplv-k3u1fbpfcp-zoom-1.image "image.png")


开发Dubbo 客户端,通过注解声明 Dubbo 服务,然后就可以发起远程方法调用了。


![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3fab412f0e6040d89f51817db70b18ba~tplv-k3u1fbpfcp-zoom-1.image "image.png")


至此,开发工作完成。


### 第三步


进入部署环节,我们选择 Kubernetes 作为部署环境。


首先,通过一条命令安装 dubbo-admin 等服务治理组件,安装成功之后,我们查看部署状态。接下来,开始部署业务应用,随后查看确认直到应用已经正常启动


![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b8e3769aa1e44a638a66dbeade388617~tplv-k3u1fbpfcp-zoom-1.image "image.png")


然后,我们就可以打开 Admin 控制台查看服务部署与调用情况了。这里是 Dubbo Admin 控制台的页面显示效果,可以看到刚才启动的 Dubbo 服务部署状态;除此之外,Admin 还提供了更详细的流量监控监测,点击服务统计,可进入监控页面


![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/701da42da98f419096e4510148278142~tplv-k3u1fbpfcp-zoom-1.image "image.png")


你可以在此了解Dubbo 集群的详细运行状态,包括每个应用对外服务和调用服务的情况,QpS、成功率等,还可以查看每个实例的资源健康状况。


![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/80fb262dc17141d5bb8c03d41afcec23~tplv-k3u1fbpfcp-zoom-1.image "image.png")


![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/71c0284cfbd54c7eac23a7dc924d1ae0~tplv-k3u1fbpfcp-zoom-1.image "image.png")


### 第四步


进行流量管控。当应用已经平稳运行后,进一步控制流量的访问行为,包括实现金丝雀发布、全链路灰度、动态调整超时时间、调整权重、按比例流量分发、参数路由等。控制台提供了可视化的流量治理规则操作入口,在这里可以直接下发流量规则。


![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/9741b646115a4795987d96c3d5e2318c~tplv-k3u1fbpfcp-zoom-1.image "image.png")


以一个线上环境的灰度隔离示例,通过 Dubbo 流量管控机制,我们可以给每个应用的一部分机器打上 gray 标签,接下来,对于入口为 gray 的流量,就可以控制确保它只在有 gray 标记的 Dubbo 实例内流转,实现了全链路的逻辑隔离效果,对于隔离多套开发环境、线上灰度测试等场景都非常有用。


![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/04aea92489894daab9dca00e1ef4e9d7~tplv-k3u1fbpfcp-zoom-1.image "image.png")


对于同区域优先调用的场景,这里有两个应用做了多区域部署,紫色是杭州区域、蓝色是北京区域,部署在橙色区域的应用会优先访问同区域的应用,以此降低访问延迟,蓝色区域部署的服务亦是如此。


![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/97b00025073c4e159b00347a54234bf3~tplv-k3u1fbpfcp-zoom-1.image "image.png")


当应用在同区域区域部署的实例不可用时,调用会自动跨区域切换到其他可用区,确保整体可用性。


## 总结


本文从 Dubbo 是什么、有哪些核心能力、如何使用 Dubbo 三个方面阐述了 Dubbo 的定位,文中部分命令或展示用示例都在持续开发更新中,仅作展示说明。


Dubbo 于上周上线了新版官网与文档,涵盖 Dubbo3 核心功能及特性。更多精彩资讯请访问:*<https://dubbo.apache.org>*


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69953029/viewspace-2943360/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
阿里云云原生公众号(ID:Alicloudnative)发布云原生技术最新资讯、汇集云原生技术最全内容,定期举办云原生活动、直播,阿里产品及用户最佳实践发布。与你并肩探索云原生技术点滴,分享你需要的云原生内容。

注册时间:2019-11-07

  • 博文量
    1497
  • 访问量
    710946