首页 > 其他分享 >5 分钟读懂开源服务框架 Dubbo 及其最新规划

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

时间:2023-04-02 19:31:33浏览次数:53  
标签:Dubbo 服务 部署 流量 读懂 开源 开发 应用

Dubbo 简介

一句话定义

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

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

基本架构

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

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

行业应用

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

5 分钟读懂开源服务框架 Dubbo 及其最新规划_阿里云_03

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

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

提供微服务抽象与框架

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

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

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

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

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

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

5 分钟读懂开源服务框架 Dubbo 及其最新规划_阿里云_06

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

一切皆可扩展

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

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

丰富的生态

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

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

服务网格

5 分钟读懂开源服务框架 Dubbo 及其最新规划_阿里云_09

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

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

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

第一步

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

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

第二步

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

5 分钟读懂开源服务框架 Dubbo 及其最新规划_阿里云_11

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

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

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

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

至此,开发工作完成。

第三步

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

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

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

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

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

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

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

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

第四步

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

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

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

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

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

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

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

总结

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

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

标签:Dubbo,服务,部署,流量,读懂,开源,开发,应用
From: https://blog.51cto.com/u_13778063/6164959

相关文章

  • 5 分钟读懂开源服务框架 Dubbo 及其最新规划
    Dubbo简介一句话定义ApacheDubbo是一款微服务开发框架,它帮助解决微服务开发中的通信问题,同时为构建企业级微服务的提供服务治理能力,Dubbo不绑定编程语言,我们的目标是为所有主流语言提供对等的微服务开发体验。基本架构Dubbo从架构图上分为数据面和控制面。在数据面,使用......
  • 提升集群吞吐量与稳定性的秘诀: Dubbo 自适应负载均衡与限流策略实现解析
    作者:刘泉禄整体介绍本文所说的“柔性服务”主要是指consumer端的负载均衡和provider端的限流两个功能。在之前的Dubbo版本中,负载均衡部分更多的考虑的是公平性原则,即consumer端尽可能平等的从provider中作出选择,在某些情况下表现并不够理想。而限流部分只提供了静态......
  • 【开源项目】宁波~超经典智慧城市CIM/BIM数字孪生可视化项目——开源工程及源码!
    最新消息,数字孪生智慧宁波开源了其数据工程源码和工程,免费送出供大家学习、使用、分享。智慧宁波实现了一系列全面的功能,如实现长三角经济圈特效、智慧地铁特效、智慧灯杆特性等。这些项目利用数字孪生技术和物联网等先进技术,可以实现精细化管理和智能控制,提高城市管理效率和品质......
  • 基于VUE3开发的CAD图可视化平台代码开源了
    前言唯杰地图VJMAP为CAD图或自定义地图格式WebGIS可视化显示开发提供的一站式解决方案,支持的格式如常用的AutoCAD的DWG格式文件、GeoJSON等常用GIS文件格式,它使用WebGL矢量图块和自定义样式呈现交互式地图,提供了全新的大数据可视化可视化功能。唯杰地图可视化平台旨在打造......
  • 智慧停车场微信小程序源码/全开源智能停车系统源码
    ☑️品牌:小程序☑️语言:小程序☑️类型:智慧停车场系统☑️支持:小程序......
  • 基于开源的 ChatGPT Web UI 项目,快速构建属于自己的 ChatGPT 站点
    作为一个技术博主,了不起比较喜欢各种折腾,之前给大家介绍过ChatGPT接入微信,钉钉和知识星球(如果没看过的可以翻翻前面的文章),最近再看开源项目的时候,发现了一个ChatGPTWebUI项目。想着刚好之前没有将ChatGPT接入过WebUI,有了这个开源项目可以拿来使用,真是不错,下面是实操的......
  • 开源优先队列FastPriorityQueue源码阅读
    FastPriorityQueue  源码连接:https://github.com/BlueRaja/High-Speed-Priority-Queue-for-C-Sharp  大致结构:  1节点在内存中的结构还是数组,且首节点为无意义节点,有效节点从索引1开始。(见FastPriorityQueue的T[]_nodes)  2维护的节点必须时固定的继承。(见FastPri......
  • Dubbo服务提供者如何优雅升级?
    文章首发于公众号:BiggerBoy。欢迎关注。往期文章推荐大坑!隐式转换导致索引失效...高性能分布式限流:Redis+Lua真香!MySQL索引知识点&常见问题汇总联合索引在B+树上的存储结构及数据查找方式Redis分布式锁实战Mybatis第三方PageHelper插件分页原理MySQL索引底层原理 一、问题交......
  • 一部山寨机配合开源软件即可追踪全球手机位置
    条子告诉我们要通过手机追踪一个人的位置是件很简单的事情,明尼苏达大学的研究表明,对来说,这更简单:一部便宜的手机和开源软件,就可以不需要知道用户的GSM网络也能追踪到其手机的位置。根据该大学科学与工程学员的计算机专家的最新研究,第三方可以轻易地追踪到一个手机用户的位置,因......
  • c# mqtt高性能服务器端源代码 开源框架包括服务器和客户端,支持mqtt3.0及5.0
    c#mqtt高性能服务器端源代码。你还在使用第三方服务软件吗?不如试试这个开发框架,助你一臂之力,无限制,无全开源,无版权约束,全是自主开发。开源框架包括服务器和客户端,支持mqtt3.0及5.0。可嵌入到自己的服务系统及软件客户端中,不受第三方约束。你要问我稳定性如何?我能回答的是已经......