Dubbo Mesh:从服务框架到统一服务控制平台

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

什么是 Dubbo 3

Dubbo 3 保持了 Dubbo 2 的经典架构,以解决微服务进程间通信为主要职责,通过丰富的服务治理(如地址发现、流量管理等)能力来更好地管控微服务集群;Dubbo3 对原有框架的升级是全面的,体现在核心 Dubbo 特性的几乎每个环节,通过升级实现了稳定性、性能、伸缩性、易用性的全面提升。

通用的通信协议。全新的 RPC 协议应摒弃私有协议栈,以更通用的 HTTP/2 协议为传输层载体,借助 HTTP 协议的标准化特性,解决流量通用性、穿透性等问题,让协议能更好地应对前后端对接、网关代理等场景;支持 Stream 通信模式,满足不同业务通信模型诉求的同时给集群带来更大的吞吐量。

面向百万集群实例,集群高度可伸缩。随着微服务实践的推广,微服务集群实例的规模也在不停地扩展,这得益于微服务轻量化、易于水平扩容的特性,同时也给整个集群容量带来了负担,尤其是一些中心化的服务治理组件;Dubbo 3 需要解决实例规模扩展带来的种种资源瓶颈问题,实现真正的无限水平扩容。

拥抱云原生。在云原生时代,底层基础设施的变革正深刻影响应用的部署、运维甚至开发过程,往上也影响了 Dubbo 3 微服务技术方案的选型与部署模式。Dubbo 3 在服务发现模型上全面对齐云原生基础设施的模型,在地址、生命周期等设计可与 Kubernetes 等容器调度平台对齐。

未来的 Dubbo 需要解决什么问题

在 Dubbo 3 功能基本完备的当下,我们开始重新对当前 Dubbo 的整体架构进行思考,总结出有以下几个问题:

业务代码与各微服务组件直接耦合,升级难度高

在目前的部署形态下,如果需要集成一个组件需要在业务代码的环境中对该组件进行适配。举一个简单的例子,如果需要接入一个自定义数据格式转换组件需要基于 Dubbo 的 SPI 在业务的代码中织入对应的适配实现。这种部署方式对业务的部署造成较高的侵入。如果这个转换组件需要升级,需要推动所有部署了该组件的业务方都升级一遍。在生产环境中难度极高。

多语言实现复杂度高

由于目前 Dubbo 所有的计算处理逻辑都以 SDK 的形式集成进业务代码中,在需要跨语言进行调用的时候不可避免地导致了实现复杂度高的问题。对于 Dubbo 来说,除了 Java 和 Golang 的 SDK 实现较为完善,其他语言仍欠缺对应完善的实现。此外,对于一个拦截器功能,在 Java SDK 下的实现由于语言和接口设计的差异不可能直接复用到 Golang 的 SDK 上,一定程度上也给中间件开发带来难度和不稳定因素。

治理能力下沉在数据面,中间件治理能力割裂

当前 Dubbo 的部署形态下在需要接入一个中间件治理能力的时候,需要通过数据面业务代码直接接入的方式集成的,这种方式会导致各治理组件独立工作,从全局视角来看数据面的接入十分混乱,无法通过一个统一的视角进行统一治理。同时由于这些组件是独立接入的,组件之间的工作在某些场景下并不能很好地结合起来。

Dubbo Mesh

Dubbo Mesh 从架构与部署形态上明确地区分为控制面与数据面。

其中控制面作为服务治理核心,具有抽象的、统一的模型,负责与底层基础设施的对接,提供从启动配置、服务发现、流量管理到认证鉴权等的统一治理入口。

数据面则专注在业务编程模型与通信能力上,基于多种部署形态(SDK、Sidecar、Agent)接入服务治理能力,基于动态部署能力从业务代码中解耦出来。

总体来说,数据面更轻量、专注,控制面更内聚、强大,只需要部署一套控制面即可使用生产级的服务治理能力。

以下分别从控制面和数据面两个部分分别说明在 Dubbo Mesh 下各自的职责与能力:

Dubbo 控制面

控制面是服务治理核心,具有抽象的、统一的模型,负责与底层基础设施的对接,提供从启动配置、服务发现、流量管理到认证鉴权等的统一治理入口。

1. 抽象的服务治理模型:Dubbo 控制面继承了 Dubbo 扩展性高的特点,划分了各种领域与扩展点供各组件使用。支持自定义增加组件,只需要组件按照标准的格式进行扩展就可以在 Dubbo Mesh 下进行快速部署、拉起、热更新等行为。

2. 屏蔽基础设施与组件:Dubbo 控制面将基础设施如 Kubernetes 的接入通过组件的模式集成在内部,面向数据面屏蔽来自各基础设施的差异,支持原生 Kubernetes 部署、VM 部署、混合部署等场景。

3. 统一的服务治理规则:Dubbo 控制面支持对接统一的服务治理规则,支持通过一套规则治理多种框架。

4. 跨语言支持:Dubbo 控制面通过通用的数据格式下发控制数据,配合数据面的多种部署方式解决跨语言的治理难题。

Dubbo 数据面

Dubbo 数据面将专注在业务编程模型与通信能力上,提供多种接入方式,对接来自 Dubbo 控制面的组件管控,支持通过组件热更新的方式动态拉取控制面下发的治理规则识别与执行能力。

1. 专注编程与通信:Dubbo 数据面将更专注于向业务开发者提供编程模型的支持。用户只需要依赖简单的调用 API 即可完成对应的 RPC 远程调用,而不再需要关心背后的治理能力的接入。

2. 多种接入方式:Dubbo 数据面在未来将支持基于 SDK 的 proxyless 模式接入、基于 Agent 的无感知接入以及基于 Sidecar 的跨语言接入方式,尽可能覆盖更过的使用场景,提高整体功能的易用性。

3. 组件热更新:Dubbo 数据面将支持动态加载、更新来自 Dubbo 控制面下发对应的治理组件能力,将治理能力的管理收口在 Dubbo 控制面进行统一管理,完善运维流程。

4. 治理规则识别与执行:Dubbo 数据面主要负责对应的治理规则的识别与执行,通过动态加载能力的方式加载对应的治理能力,实现对数据面流量的治理能力。

Roadmap

在今年年底,Dubbo Mesh 将发布具备有服务发现能力的版本,届时将面向所有 Dubbo 用户提供从低版本平滑迁移到 Mesh 架构的能力;在明年初春季的时候发布带有治理能力的版本;在明年年底前发布带插件热更新能力的版本。

原文链接

本文为阿里云原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/510443.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能搜索引擎 | 驱动电商业务增长实践

开放搜索是阿里集团搜索业务中台,基于大数据深度学习在线服务体系打造的智能搜索云服务产品。拥有核心引擎、召回排序、搜索引导、充分开放等核心能力,可应用在电商行业、教育行业、内容行业等场景。目前帮助数千家客户搭建自己的搜索业务。 实践案例&a…

通过 Jenkins 构建 CI/CD 实现全链路灰度

本文介绍通过 Jenkins 构建流水线的方式实现全链路灰度功能。在发布过程中,为了整体稳定性,我们总是希望能够用小部分特定流量来验证下新发布应用是否正常。 即使新版本有问题,也能及时发现,控制影响面,保障了整体的稳…

合阔智云核心生产系统切换到服务网格 ASM 的落地实践

背景 合阔智云(http://www.hexcloud.cn) 是专注于为大中型零售连锁行业,提供全渠道业务中/前台产品和解决方案,并建立以消费者为中心的全渠道交易和敏捷供应链的新一代零售运营协同平台。 合阔智云提供了从全渠道交易管理到订单履约再到门店供应链完整…

Serverless 架构下的 AI 应用开发:入门、实战与性能优化

随着时间的推移,Serverless 架构变得越来越火热,凭借着极致弹性、按量付费、低成本运维等特性,在很多领域发挥着越来越重要的作用;机器学习领域在近些年也非常火热,并在越来越多的行业中得到应用。 实际上&#xff0c…

数据变更白屏化利器 - 推送轨迹上线

背景 Zookeeper 可作为注册配置中心,选主,分布式锁等多种场景,随着业务规模的扩大,业务之间的依赖关系逐渐变得复杂,在这种复杂的场景下如果遇到变更推送相关问题,排查起来相当困难,虽然 Zooke…

KubeVela 1.5:灵活框选 CNCF 原子能力打造独特的企业应用发布平台

KubeVela 1.5 于近日正式发布。在该版本中为社区带来了更多的开箱即用的应用交付能力,包括新增系统可观测;新增 Cloud Shell 终端,将 Vela CLI 搬到了浏览器;增强的金丝雀发布;优化多环境应用交付工作流等。进一步提升…

开源小白到核心开发——我与 sealer 的成长故事

个人简介 大家好,我是周欣元,本科就读于杭州师范大学,今年 9 月将去往云南大学进行研究生学习。本科研究方向为 docker 容器在网络攻防中的应用,目前作为 sealer member 加入了核心模块 sealer runtime 的研发工作。 个人主页&a…

全链路灰度新功能:MSE 上线配置标签推送

背景 微服务场景下,全链路灰度作为一种低成本的新功能验证方式,得到了越来越广泛的应用。除了微服务实例和流量的灰度,微服务应用中的配置项也应该具备相应的灰度能力,以应对灰度应用对特殊配置的诉求。 为什么需要配置标签推送…

万节点规模云服务的 SRE 能力建设

背景及现状 系统架构简介 上图为阿里云内部实际使用的系统架构,系统主要用途为实时数据流的计算和存储。使用阿里云的容器服务 ACK 作为系统底座,容器化的部署、发布、管控等全部基于 K8s 标准。使用自己开发的 Gateway service 作为系统流量入口&#…

阿里云 ACK 容器服务生产级可观测体系建设实践

ACK 可观测体系介绍 全景概要介绍 上图为 ACK 可观测体系全景图金字塔,从上至下可分为四层: 最上层是最接近用户业务的 Business Monitoring,包括用户业务的前端的流量、PV、前端性能、JS 响应速度等监控。通过容器服务的 IngressDashboard…

中仑网络全站 Dubbo 2 迁移 Dubbo 3 总结

中仑网络在 2022 年完成了服务框架从 Dubbo 2 到 Dubbo 3 的全站升级,深度使用了应用级服务发现、Kubernetes 原生服务部署、服务治理等核心能力。来自中仑网络的技术负责人来彬彬对整个 Dubbo 3 的选型、升级过程及收益等做了深入总结。 来彬彬,2020 年…

基于 OpenYurt 和 EdgeX 的云边端协同新可能

2022 EdgeX 中国挑战赛暨中关村国际前沿科技创新大赛 EdgeX 专题赛正式拉开帷幕。本次大赛分设两大赛道:医疗、教育、消费行业赛道和能源、工业、供应链赛道。大赛致力于构建一个物联网及边缘计算的学习和分享平台,基于 EdgeX Foundry、OpenYurt 等开源技…

OSCAR 2022 开源产业大会PolarDB-X、 PolarDB-PG获奖揭晓

9月16日,OSCAR 2022 开源产业大会在京召开,会议由中国信息通信研究院、中国通信标准化协会主办,中国通信标准化协会云计算标准和开源推进委员会承办。此次会议以“千行百业 可信开源”为主题,邀请上百位专家大咖和国内主流的开源社…

App 隐私合规“免费”自动化检测

一、为什么要进行App隐私合规检测 2021年11月1日《个人信息保护法》正式生效;今年6月14日,国家互联网信息办公室公布《移动互联网应用程序信息服务管理规定》,这是针对App的最强监管新规,于8月1日起正式实施。新规要求应用程序提…

跨模态学习能力再升级,EasyNLP 电商文图检索效果刷新 SOTA

导读 多模态内容(例如图像、文本、语音、视频等)在互联网上的爆炸性增长推动了各种跨模态模型的研究与发展,支持了多种跨模态内容理解任务。在这些跨模态模型中,CLIP(Contrastive Language-Image Pre-training&#x…

EasyNLP 带你实现中英文机器阅读理解

导读 机器阅读理解是自然语言处理(NLP),特别是自然语言理解(NLU)领域最重要的研究方向之一。自1977年首次被提出以来,机器阅读理解已有近50年的发展史,历经“人工规则”、“传统机器学习”、“…

一文剖析 PolarDB HTAP 的列存数据压缩

前言 数据库迁移上云是大数据时代的一大趋势,PolarDB MySQL是阿里云自研的云原生数据库,主要处理在线事务负载(OLTP, OnLine Transactional Processing),深受企业用户的青睐。当下,数据分析对于企业的重要性越发显著:…

技术解读:现代化工具链在大规模 C++ 项目中的运用

编者按:C 语言与编译器一直都在持续演进,出现了许多令人振奋的新特性,同时还有许多新特性在孵化阶。除此之外,还有许多小更改以提高运行效率与编程效率。本文整理自全球 C 及系统软件技术大会上的精彩分享,接下来由作者…

如何将传统 Web 框架迁移部署到 Serverless 架构?

与其说 Serverless 架构是一个新的概念,不如说它是一种全新的思路,一种新的编程范式。 但是原生的 Serverless 开发框架却非常少。以Web框架为例,目前主流的Web框架“均不支持Serverless模式部署”,因此我们一方面要尝试接触Serv…

EasyNLP 发布融合语言学和事实知识的中文预训练模型 CKBERT

导读 预训练语言模型在NLP的各个应用中都有及其广泛的应用;然而,经典的预训练语言模型(例如BERT)缺乏对知识的理解,例如知识图谱中的关系三元组。知识增强预训练模型使用外部知识(知识图谱,字典…