作者: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 官网!