Apache Dubbo 3.0.0 正式发布 - 全面拥抱云原生

简介: 一个新的里程碑!

一、背景

自从 Apache Dubbo 在 2011 年开源以来,在一众大规模互联网、IT公司的实践中积累了大量经验后,Dubbo 凭借对 Java 用户友好、功能丰富、治理能力强等优点在过去取得了很大的成功,成为国内外热门主流的 RPC 框架之一。

但随着云原生时代的到来,以 Apache Dubbo、Spring Cloud 等为代表的 Java 微服务治理体系面临了许多新的需求,包括期望应用可以更快的启动、应用通信的协议穿透性可以更高、能够对多语言的支持更加友好等。例如Spring 也在今年推出了其基于 GraalVM 的 Spring Native Beta 解决方案,拥有毫秒级启动的能力、更高的处理性能等优化提升。

这样的背景对下一代 Apache Dubbo 提出了两大要求:一是要保留已有的开箱即用和落地实践背景下积累的优点,这也是众多开发者所期望的;二是尽可能地遵循云原生思想,能更好的复用底层云原生基础设施并且更贴合云原生的微服务架构。

二、拥抱云原生

在如今的大背景下,Apache Dubbo 3 选择全面拥抱云原生,将 Dubbo 的架构升级,提出了全新的服务发现模型、下一代 RPC 协议和云原生基础设施适配等优化方案。

1、全新服务发现模型(应用级服务发现)

1624530011657-4f0944ee-2f83-4702-9a08-19002c726bfa.png

应用级注册模型

以 Dubbo 原有的设计,存储在注册中心中的数据会在很大程度上存在重复的内容,这其实浪费了一部分的存储。而当整个集群的规模足够大的时候,由于服务注册发现是服务维度的,注册中心的数据量就会爆发式地增长。

当前同样是微服务治理工具的 Spring Cloud 和 gRPC 都是基于应用级的服务发现,如果仍使用接口级别的注册方式,Dubbo 就很难和他们进行互通。但假如 Dubbo 也可以像 Spring Cloud 一样以服务级注册,那么在异构体系下将可以很轻松地工作起来。

1624529993171-146e3fa3-d8a4-4c07-9526-c81323e4e857.png

异构下部署方案

应用级服务发现机制是 Apache Dubbo 面向云原生走出的重要一步,它帮 Apache Dubbo 打通了与其他微服务体系之间在地址发现层面的鸿沟,也成为 Apache Dubbo 适配 Kubernetes Native Service 等基础设施的基础。

基于应用级服务发现,注册中心的数据将被重新组织,注册中心的压力大大减轻。同时,由于地址量减少了,应用自身的内存消耗也可以大幅降低。

1624529976496-eb282ba0-02bc-460b-9fb4-11b576a8baa7.png

性能提升

在一般情况下,应用中存储的地址量可以降低约一半,针对上游应用大规模部署的场景(比如部署了 1000 个节点、提供了 50 个服务)甚至可以达到 95% 以上,这对于核心应用的内存压力环境带来的优化是巨大的。

2、下一代 RPC 协议 —— Triple

在云原生时代,Dubbo RPC 协议主要面临两个挑战:

1、生态不互通,Dubbo 协议基于二进制流定制了与 RPC 强绑定的核心语义,包括协议头、标志位、请求 ID 以及请求/响应数据等。而对于越来越多的云原生治理设施,要让他们都 “读” 懂 Dubbo 的二进制 “语义” 并不容易。

2、由于协议设计的问题,Dubbo 协议的协议头已无法再承载更多的元数据信息。而对于 Mesh 等网关型组件,如果想要对数据进行治理就需要对完整的数据包进行解析才能获取到必要的元数据信息(如 RPC 上下文),从性能到易用性方面都会面临挑战。

1624529655385-d84a36a7-49a1-43cd-b2cb-9cf8a86f343f.png

Dubbo 协议通信方式

在支持已有的功能和解决存在的问题的前提下,Apache Dubbo 3 提出了下一代 RPC 协议——Triple。

基于 Tripe 协议,我们期望可以解决这些问题:

1、跨语言互通的问题。传统的多语言多 SDK 模式和 Mesh 化跨语言模式都需要一种更通用易扩展的数据传输格式;

2、提供更完善的请求模型。除了 Request/Response 模型,还应该支持 Streaming 和 Bidirectional;

1624529641120-ec19aec9-0c79-4747-9663-ba5f13f253ac.png

请求模型示意图

3、易扩展、穿透性高。包括但不限于 Tracing / Monitoring 等支持,也应该能被各层设备识别,网关设施等可以识别数据报文,对 Service Mesh 部署友好,降低用户理解难度;

4、支持 Java 用户无感知升级。不需要定义繁琐的 IDL 文件,仅需要简单的修改协议名便可以轻松升级到 Triple 协议。

基于这些期望,我们觉得 HTTP/2 作为底层通信协议,使用 protobuf 作为序列化协议的组合是最合理的,这套组合方案也是 gRPC 协议使用的方案。所以对于 Triple 协议来说,我们可以基于 gRPC 协议进行演变,以满足 Apache Dubbo 已有的优秀特性,这同时也保证了在生态系统上新协议和 gRPC 是能够互通和共享的。

1624529666296-da87a0f2-49a5-4f97-934d-e7d327a68020.png

Triple 协议通信方式

3、云原生设施接入

针对于 Kubernetes 的场景, Apache Dubbo 3 为此做了两方面的接入:

一是原生支持与 Kubernetes Pod 生命周期对齐,基于 Dubbo QoS 机制,Kubernetes 能够感知到运行在 Pod 容器中的 Dubbo 应用当前是什么状态,而且得益于 Dubbo SPI 机制用户可以自定义探针检测的维度,实现框架和业务的生命周期都达到统一。

第二是 Dubbo 也将支持接入 Kubernetes Native Service 体系,原生支持基于 Kubernetes API Server 和 DNS 的服务发现体系,实现部署架构下的服务概念与 Dubbo 中的服务概念进行对齐。

1624850404812-3a540238-9c33-489c-a99f-a3cd984c74a6.png

Kubernetes 架构下部署方案

而对于 Service Mesh 体系,如果应用使用 Apache Dubbo 2 想要部署以 Mesh 方式部署,需要使用 Sidecar 对 Dubbo 流量进行拦截,而同时由于 Dubbo 本身是具有一定的治理能力的,从应用来说会多做了很多无用的事情,从集群的角度来说会造成调用的紊乱。

基于此,Apache Dubbo 3 提出了两种部署模式,一种是配合 Sidecar 部署的 Thin SDK 模式、另一种是直接接入控制面的 Proxyless Mesh 模式。

1624850424927-3ef52a1b-e042-4e4a-b748-487d579263b7.png

Dubbo 3 在 Mesh 场景下部署架构

除了部署架构的接入,在 Apache Dubbo 3 中还定义了一套面向云原生流量治理,支持传统 SDK、Mesh 场景的统一治理规则。

Apache Dubbo 3 期望使用这一套规则,便可以实现如金丝雀发布、A/B测试等丰富的路由语义,只需要配置一套规则,写入统一的控制面,就可以统一地控制所有集群。这样无论使用 Kubernetes 直接部署、亦或者是 Mesh 场景下使用 Thin SDK 或 Proxyless 混合部署甚至是用户直接手动部署集群均可以被同一套规则所控制,实现定义一次,到处使用的目标。

三、未来展望

Apache Dubbo 3.0.0 是捐给 Apache 后的一个里程碑版本,代表着 Apache Dubbo 全面拥抱云原生的一个重要节点。

在 2021 年 11 月我们会发布 Apache Dubbo 3.1 版本,届时我们会带来 Apache Dubbo 在 Mesh 场景下部署的实现与实践。

在 2022 年 3 月我们会发布 Apache Dubbo 3.2 版本,在这个版本中我们将带来全新的大规模应用部署下智能流量调度机制,提高系统稳定性与资源利用率。

Apache Dubbo 3 目前已经和阿里巴巴集团内部的 RPC 框架实现了融合,期望用它来解决内部落地问题,做到技术栈统一。未来,Apache Dubbo 3 将大规模落地阿里集团,承载 618、双十一等复杂业务场景。

社区衷心地希望欢迎大家向社区提交 issue 和 PR,社区的同学会尽快进行 review 和回复。另外,社区会尽可能保证一个较短的发版周期,及时对已有的问题进行修复。

同时在 Apache Dubbo 3 开始,社区也会采用更开放的态度对待生产环境下的定制需求,我们欢迎大家将自己的定制化实现贡献给开源社区,dubbo-spi-extensions 仓库未来会对这些定制化进行支持。

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

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

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

相关文章

python关键字中文意思_python 字符串只保留汉字的方法

如下所示&#xff1a; def is_chinese(uchar): """判断一个unicode是否是汉字""" if uchar > u\u4e00 and uchar < u\u9fa5: return True else: return False def is_number(uchar): """判断一个unicode是否是数字"&q…

启明星辰集团DT总部落地杭州 数据绿洲版图驱动未来发展

12月1日&#xff0c;启明星辰集团DT&#xff08;数据时代&#xff09;总部正式落地于杭州高新区&#xff08;滨江&#xff09;&#xff0c;与北京IT总部形成南北两个总部基地新格局&#xff0c;并发布数据安全新版图--数据绿洲&#xff0c;将结合杭州领先的数字应用的场景&…

Quick BI的可视分析之路

简介&#xff1a; Quick BI是专为云上用户量身打造的智能数据分析和可视化BI产品&#xff0c;帮助企业快速完成从传统的数据分析到数据云化分析云化的转变&#xff0c;将企业的业务数据产出后以最快的速度被推送到各组织侧消费使用。本篇着重介绍Quick BI在可视化分析上的能力与…

火山引擎进军云市场,计划未来三年服务十万客户

12月2日&#xff0c;火山引擎在升级为字节跳动企业级技术服务业务板块之后&#xff0c;首次亮相就正式发布全系云产品&#xff0c;包括云基础、视频及内容分发、数据中台、开发中台、人工智能等五大类、共计78项服务。 火山引擎云产品是字节跳动“敏捷开发”技术实践的对外输出…

win7计算机右键属性桌面进程重启,win7计算机右键属性打不开怎么办

有用户在鼠标右击win7桌面计算机选择属性的时候却发现打不开属性窗口&#xff0c;出现这样的情况可能是只要修复一下注册表就可以解决了&#xff0c;那么要如何操作呢?下面是学习啦小编给大家整理的一些有关win7计算机右键属性打不开的解决方法&#xff0c;希望对大家有帮助!w…

看Quick Audience 如何有效提升营销活动管理效率

简介&#xff1a; 营销活动为Quick Audience&#xff08;QA&#xff09;用户洞察下的一个功能模块&#xff0c;通过这个模块&#xff0c;可以将QA侧生成的受众以及营销渠道全部关联起来&#xff0c;从营销活动的视角&#xff0c;一站式完成活动目标制定、活动计划制定到活动任务…

【产品动态】一文详细解读智能数据构建产品Dataphin的“规划”功能

简介&#xff1a; 数据中台是传统的数据仓库的一种升级, 是数据采集、建设、管理与使用的一整套体系&#xff0c;Dataphin是一个构建数据中台的强大工具, 核心优势是在数据的建设与管理上引入了阿里巴巴多年来数据中台建设沉淀出的OneModel方法论。 前言 数据中台是当下大数据…

库克“一语成谶”:又有 30 万台安卓设备被“感染”了!| 文末福利

整理 | 郑丽媛出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;各家应用商店中的恶意软件总是层出不穷&#xff0c;哪怕是一向以“安全”著称的苹果&#xff0c;也不能完全杜绝 App Store 中恶意软件的乱入。但在这之中&#xff0c;作为“围墙花园”的苹果自认还是高…

深入解读 Flink SQL 1.13

简介&#xff1a; Apache Flink 社区 5 月 22 日北京站 Meetup 分享内容整理&#xff0c;深入解读 Flink SQL 1.13 中 5 个 FLIP 的实用更新和重要改进。 本文由社区志愿者陈政羽整理&#xff0c;Apache Flink 社区在 5 月份发布了 1.13 版本&#xff0c;带来了很多新的变化。文…

centos8共享文件夹挂载_CentOS 8 安装并配置NFS服务

NFS网络文件系统(Network File System)是一种分布式文件系统协议&#xff0c;通过网络共享远程目录。使用NFS&#xff0c;可以在系统上挂载远程目录&#xff0c;并像对待本地文件一样使用远程计算机上的文件。默认情况下&#xff0c;NFS协议未加密&#xff0c;并且与Samba不同&…

Flink 1.13,面向流批一体的运行时与 DataStream API 优化

简介&#xff1a; 在 1.13 中&#xff0c;针对流批一体的目标&#xff0c;Flink 优化了大规模作业调度以及批执行模式下网络 Shuffle 的性能&#xff0c;以及在 DataStream API 方面完善有限流作业的退出语义。 本文由社区志愿者苗文婷整理&#xff0c;内容来源自阿里巴巴技术专…

启动metabase_引入开源BI软件Metabase——数据分析平台建设(一)

引入BI系统是减少重复劳动、增加产出的必要手段和步骤什么是Metabase在选择使用Metabase之前&#xff0c;也调研过许多BI软件&#xff0c;满足免费开源&#xff0c;灵活多变&#xff0c;我们选择了Metabase。Metabase是一款开源免费的BI软件&#xff0c;适用于中小型企业、初创…

深入剖析数据多版本 MVCC 机制

作者 | 奇伢来源 | 奇伢云存储你以为删掉就没事了&#xff1f;有些童鞋以前还真是做过些傻事&#xff0c;以为删掉一些东西&#xff0c;覆盖一些东西就能掩盖某一些"不可告人"的秘密。来看看 etcd 的例子&#xff1a;./etcdctl put 张三 是个憨憨哎呀&#xff0c;这可…

同程旅行基于 RocketMQ 高可用架构实践

简介&#xff1a; 我们在几年前决定引入 MQ 时&#xff0c;市场上已经有不少成熟的解决方案&#xff0c;比如 RabbitMQ , ActiveMQ&#xff0c;NSQ&#xff0c;Kafka 等。考虑到稳定性、维护成本、公司技术栈等因素&#xff0c;我们选择了 RocketMQ。 背景介绍 ​ 为何选择 R…

重磅 | 数据库自治服务DAS论文入选全球顶会SIGMOD,领航“数据库自动驾驶”新时代

简介&#xff1a; 近日&#xff0c;智能数据库和DAS团队研发的智能调参ResTune系统论文被SIGMOD 2021录用&#xff0c;SIGMOD是数据库三大顶会之首&#xff0c;是三大顶会中唯一一个Double Blind Review的&#xff0c;其权威性毋庸置疑。 近日&#xff0c;智能数据库和DAS团队…

如何帮用户管好云账本?阿里云数据库助力收钱吧 | 甲子光年

简介&#xff1a; “收钱吧到账100万”成为普通商家最想听到的声音。 你有多久没摸过现金了&#xff1f; 中国互联网络信息中心发布的第47次《中国互联网络发展状况统计报告》数据显示&#xff0c;截至2020年12月&#xff0c;我国移动支付用户规模达到8.54亿&#xff1b;中国人…

Redis 会遇到的「坑」,你踩过几个?

作者 | Magic Kaito来源 | 水滴与银弹这篇文章&#xff0c;我想和你聊一聊在使用 Redis 时&#xff0c;可能会踩到的「坑」。如果你在使用 Redis 时&#xff0c;也遇到过以下这些「诡异」的场景&#xff0c;那很大概率是踩到「坑」了&#xff1a;明明一个 key 设置了过期时间&a…

bert 多义词_自然语言处理:Bert及其他

以下内容主要参考了文末列出的参考文献&#xff0c;在此表示感谢&#xff01;2018年被认为是NLP技术的new era的开始。在这一年&#xff0c;提出了多种有创新性的技术&#xff0c;而且最后的集大成者Bert在NLP的多项任务中屠榜&#xff0c;造成的震撼不比当初神经网络初次在Ima…

谈谈JVM内部锁升级过程

简介&#xff1a; 对象在内存中的内存布局是什么样的&#xff1f;如何描述synchronized和ReentrantLock的底层实现和重入的底层原理&#xff1f;为什么AQS底层是CASvolatile&#xff1f;锁的四种状态和锁升级过程应该如何描述&#xff1f;Object o new Object() 在内存中占用多…

JetBrains发布两项重要更新:基于IDE的远程开发解决方案、轻量级编辑器Fleet

近日&#xff0c;JetBrains 对外发布两项重要产品更新&#xff1a;专为云端和其他服务器打造的远程开发解决方案&#xff0c;以及轻量级编辑器Fleet。 为IntelliJ 平台引入远程开发支持 在近期陆续发布的2021.3 版本的各 IDE 中&#xff0c;JetBrains 向 IntelliJ 平台添加了远…