作者:Dubbo 社区
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 架构的才能;在下一年初春季的时分发布带有办理才能的版别;在下一年年末前发布带插件热更新才能的版别。
点击此处,直达 Dubbo 官网!