共计 7077 个字符,预计需要花费 18 分钟才能阅读完成。
作者:周新宇
阿里云音讯队列 RocketMQ 商业化历程
RocketMQ 诞生于 2012 年,诞生即开源。2012~2015 年,RocketMQ 始终在通过外部电商业务打磨本身服务能力, 并在 2015 年于阿里云上线公测。2016 年,阿里云 RocketMQ 实现商业化,同时被捐献给 Apache 基金会,同年取得了年度受欢迎中国开源软件荣誉。
在 Apache 孵化期间,Apache RocketMQ 经验了疾速倒退,2017 年即毕业成为了 Apache 顶级我的项目。同年,Apache RocketMQ TLP RocketMQ 4.0 正式公布。尔后,RocketMQ 4.0 经验了长足发展,期间阿里云商业和开源相辅相成、齐头并进,直到明天,独特迈入 RocketMQ 5.0 时代。
RocketMQ 5.0 公布后,阿里云商业会继续采取 OpenCore 的倒退模式,秉承上游优先的社区倒退准则,与社区一起将 RocketMQ 打造为一个超交融的数据处理平台。
阿里云音讯队列产品矩阵
阿里云基于 RocketMQ 音讯底座,构建了多元化的音讯产品系列。
RocketMQ 是阿里云主打的音讯品牌,互联网新兴业务畛域首选的数据通道。音讯队列 Kafka 是大数据的首选数据通道,微音讯队列 MQTT 是挪动互联网和物联网的数据通道,音讯队列 RocketMQ 是传统业务畛域的数据通道。音讯服务 MNS 是 RocketMQ 轻量版,次要利用于利用集成畛域,为平台型利用提供简略的队列服务。事件总线 Event Bridge 定位为云上事件枢纽,旨在阿里云上构建对立的事件核心。
阿里云音讯队列产品矩阵齐全构建在 RocketMQ 之上,根本实现了利用场景全笼罩,包含微服务解耦、SaaS 集成、物联网、大数据或日志收集生态,同时也在外部笼罩了阿里巴巴所有业务,在云上为数万阿里云企业提供了优质的音讯服务。阿里云的音讯产品矩阵涵盖了互联网、大数据、挪动互联网等畛域业务场景,为云原生客户提供不可或缺的一站式解决方案。
RocketMQ 在阿里云商业化历程中,始终致力于摸索业务音讯实际,也孵化了大量业务音讯个性,并继续反哺到开源社区。
RocketMQ 4.0 业务音讯摸索之路
RocketMQ 在商业化过程中,陆续推出了四种音讯类型来满足丰盛的业务场景。
- 一般音讯:一般音讯提供极致弹性、海量沉积能力,内置重试与死信队列来满足业务对失败重试的需要,同时具备高吞吐、高可用、低提早等个性,广泛应用于利用集成、异步解耦、削峰填谷等场景。
- 定时音讯:提供秒级定时精度,40 天超长定时,次要面向分布式定时调度、工作超时解决等场景,目前正在开源中。
- 程序音讯:反对全局与部分严格有序,从发送、存储到生产,保障端到端有序。面向有序事件处理、撮合交易、数据实时增量同步等场景。
- 事务音讯:分布式、高性能、高可用的最终一致性事务解决方案,广泛应用于电商交易系统中服务的一致性协调场景并且曾经开源。
RocketMQ 4.0 期间,商业和开源都致力于全方位拓展音讯接入能力,使 RocketMQ 可能十分轻松地连贯利用开源和云产品生态。比方商业上提供了多语言 SDK,开源也有相应的 SDK 可能笼罩 Java、Go、Python、C++ 应用 RocketMQ。同时反对 Spring 生态,可能通过 Spring Cloud 的形式应用 RocketMQ。商业上提供了一组非常简单易用的 HTTP API,提供了 6-7 种语言的实现。
除了 SDK 接入,RocketMQ 也在踊跃拥抱社区规范,在云产品侧提供了 AMQP 和 MQTT 的接入能力,其中 MQTT 已开源。
RocketMQ 也鼎力在倒退 connector 生态,可能通过 RocketMQ connector 接入很多数据源,包含 Redis、MongoDB、Hudi 等大数据系统。
另外,阿里云构建的事件总线 EventBridge 也已开源,通过该产品可能将阿里云的云产品、SaaS 利用、自建数据平台的数据引入 RocketMQ。
RocketMQ 4.0 版本做了大量尝试,提供了全方位的音讯接入能力。
RocketMQ 在服务阿里团体用户和商业化历程中,积淀了大量当先的业务音讯解决与服务能力。比方音讯订阅方面,RocketMQ 反对集群分布式生产能力,也反对播送生产。在音讯解决方面反对基于 Tag 和 SQL 做灵便过滤,其中基于 SQL 过滤是电商交易中十分重要的个性,可能反对在十分订阅比的状况下实现较低的投递比。
寰球音讯路由能力具备性能高、实时性强的特点。在云时代,数据中心人造散布在各个地区,各个地区之间还有 VPC 网络隔离。然而通过寰球音讯路由性能能够将地区与网络买通,可能满足更多业务场景。比方在阿里外部基于该能力实现了异地多活、异地容灾等企业级个性。
另外,寰球音讯路由具备十分高的易用性,提供了可视化工作治理界面,通过简略配置即可创立复制链路。
音讯治理方面,RocketMQ 提供了访问控制、命名空间、实例限流、音讯回放、重试音讯、死信音讯、沉积治理等能力。
服务能力方面,RocketMQ 经验了十分多积淀,它在为交易链路服务了 12 年,加入了 10 年双 11,这也保障了 RocketMQ 可能在阿里云上提供十分高的可靠性。双 11 音讯收发 TPS 峰值过亿,日音讯收发总量超过 3 万亿。而即便在双十一万亿级数据洪峰下,音讯也能做到 99.996% 毫秒级响应能力,音讯公布均匀响应工夫不超过 3 毫秒,最大不超过 20 毫秒,真正实现了低提早音讯公布。
商业化初期,客户遇到最大难题是在分布式环境下如何残缺地追踪异步音讯链路。基于此背景,咱们打造了可视化全生命周期音讯轨迹追踪零碎,可能提供丰盛的音讯查问、音讯下载、定点重投、轨迹追踪能力,通过可观测零碎帮忙用户解决分布式环境中不可观测的问题。
如上图所示,一条音讯从产生、发送至服务端存储到最终投递到消费者,整个发送和生产轨迹都有迹可循,包含投递给哪些消费者、哪些消费者在什么中央胜利生产或者生产失败、何时进行重投,真正帮忙客户解决了分布式观测难题。
除了性能个性,RocketMQ 在稳定性方面也做了很多建设。咱们始终保持,SLA 是云原生的基本,因而整个研发运维链路都有严格的稳定性保障措施:
- 架构开发 :每个方案设计都会面向失败设计,代码开发阶段会有严格 Code Review 阶段,也会残缺经验单元测试、集成测试、性能测试和容灾测试流程。
- 变更治理 :有着十分严格的变更制度,要做到每个变更可灰度、可监控、可回滚、可降级。
- 稳定性防护 :提供了限流、降级、容量评估、应急计划、大促保障等能力,会定期进行故障和预案演练,定期进行危险梳理。
- 体系化巡检 :在云上有全方位的生产环境黑盒巡检。基于用户视角,会对全地区所有性能做全功能扫描,蕴含高达 50 多项检测项,任意项性能出问题都能立即被监测到。在白盒巡检方面,会对 JVM 运行时指标、内核零碎、集群指标进行巡检。
- 故障应急 :有残缺地故障应急流程,包含监控报警、故障产生、疾速止血、排查根因、故障复盘。
RocketMQ 5.0 云原生架构降级之路
云原生时代,云上用户对云产品服务化水平、弹性能力、可控制性能力以及韧性都有了更高的要求。在此背景之下,咱们对 RocketMQ 进行了云原生架构降级,这也是 RocketMQ 5.0 的诞生背景。
- 轻量级 SDK:基于云原生通信规范 gRPC 开发了一组轻量级 SDK,可能与以后富客户端优势互补。
- 无状态音讯网关:在外围数据链路推出了无状态音讯网关。通过搭建无状态服务节点 Proxy,再通过 LB 进行服务裸露,将存储节点数据拆散来独立负责外围音讯存储和高可用。Proxy 与 Store 节点拆散部署,独立弹性。
- Leaderless 高可用架构:Store 节点身份齐全对等,齐全 Leaderless 化,去 ZK 和 HA 管控节点,可能做到十分高的可用性。同时相比传统的 Raft 一致性协定,该 Leaderless 架构可能做到正本数灵便抉择,同步异步主动升降级,实现秒级故障转移。高可用架构目前曾经实现开源并与 Dledger 进行了交融。
- 云原生基础设施:可观测验能力云原生化,OpenTelemetry 标准化。整体架构走向 Kubernetes 化,可能充分利用售卖区的资源弹性能力。
RocketMQ 4.0 举荐的接入形式次要是富客户端。富客户端提供了诸如客户端侧负载平衡、音讯缓存、故障转移等一系列企业级个性。但在云原生时代,轻量级、高性能的客户端更容易被云原生技术栈所集成。
因而,RocketMQ 5.0 重磅推出了全新多语言轻量级 SDK,具备以下劣势:
- 全新极简 API 设计 :不可变 API,有欠缺的错误处理。多语言 SDK 保障 API 在 Native 层面对齐。同时引入了全新的 Simple Consumer,可能反对按音讯模型进行生产,用户不再须要关怀音讯队列,只须要关注音讯。
- 通信层采纳 gRPC 协定 :拥抱云原生通信规范,gRPC 可能使服务更易被集成。多语言 SDK 通信代码也能够通过 gRPC 疾速生成,更 Native。
- 轻量级实现 :采纳无状态生产模式,可能大幅升高客户端的实现复杂度。客户端更轻量,采纳的利用也更容易被 Serverless 化、Mesh 化。
- 云原生可观测性 :客户端实现了 OpenTelemetry 规范,可能反对以 OpenTelemetry 模式导出 Metrics 与 Tracing。
RocketMQ 5.0 的另一个重大降级是引入了全新的无状态生产模型。该生产模型齐全构建在原先的队列模型之上。队列模型是与存储模型统一的生产模型,消费者齐全依照队列做负载平衡,也依照队列做音讯拉取,非常适合批量高速拉取以及对单条音讯状态不敏感的场景,比方流计算等。
RocketMQ 5.0 推出了 PoP 机制,奇妙地在队列模型之上构建了音讯模型,实现了鱼与熊掌兼得。在此音讯模型的设计上,业务能够只关怀音讯而无需关怀队列,所有 API 都可能反对单条音讯级别的生产、重试、批改不可见工夫、删除。
在音讯模型下,音讯发送过去被存储后,即对消费者可见。消费者通过 Receive Message API 对音讯进行生产后,音讯进入定时不可见状态。音讯超时过后又会从新处于可见状态,能被其余消费者持续生产。某消费者确认音讯后,服务端会对该音讯进行删除,随即不可见。
基于音讯系模型的生产流程下,API 齐全面向音讯而不是面向队列。而当 PoP 机制遇见了无状态 Proxy,除了存储层,其余节点都是无状态的;客户端、连贯和生产也是无状态的,可任意在 Proxy 节点上飘移,真正做到轻量级。
通过重构,RocketMQ 5.0 的可观测性也走向了云原生规范。
Metrics 侧:
- 指标涵盖丰盛:设计了更丰盛的指标,蕴含音讯量、沉积量、各个阶段耗时等指标,每个指标从实例、Topic、生产 GroupID 多维度做聚合和展现。
- 音讯团队实际模板:为用户提供实际模板,并继续迭代更新。
- Prometheus + Grafana:Prometheus 规范数据格式,利用 Grafana 展现。除了模板,用户也能够自定义展现大盘。
Tracing 侧:
- OpenTelemetry Tracing 规范:RocketMQ Tracing 规范曾经合并到 OpenTelemetry 开源规范,提供了标准和丰盛的 messaging tracing 场景定义。
- 音讯畛域定制化展现:依照音讯维度从新组织形象的申请 span 数据,展现一对多的生产,屡次生产信息直观且不便了解。
- 可连接 tracing 链路上下游:音讯的 tracing 可继承调用上下文,补充到残缺的调用链路中,音讯链路信息串联了异步链路的上游和上游链路信息。
Logging 侧:
- Error Code 标准化:不同的谬误有惟一的 Error Code。
- Error Message 残缺:蕴含残缺的错误信息和排序所须要的资源信息。
- Error Level 标准化:细化了各种不同错误信息的日志级别,用户可依据 Error、Warn 等级别配置更适宜的监控告警。
弹性方面,RocketMQ 5.0 商业版可能充沛撬动云的计算、存储和网络的池化资源。比方在计算方面,RocketMQ 5.0 所有工作负载齐全部署在 ACK 之上,充分利用了 ACK 弹性能力,撬动 ACK 弹性资源。次要依赖 ACK 的两项技术,一是弹性资源池,另一个是 HPA 反对计算能力疾速弹性。同时也会在 ACK 之上做跨可用区部署以提供高可用保障。
网络层面,RocketMQ 5.0 也会充分利用阿里云网络设施,为用户提供更便捷的网络拜访能力。比方 RocketMQ 5.0 实例可能反对公网随开随用,须要依赖公网做测试的时候即开即用,测试完立刻敞开,平安与不便兼具。同时反对多种私网类型的网络状态,包含 Single Tunnel、Private Link,另外也基于 CEN 构建了寰球互通设计网络。
存储方面,RocketMQ 5.0 商业版率先引入多级存储概念,基于 OSS 构建二级存储,可能充分利用 OSS 存储的弹性能力,存储计费也转向了按量付费。而用户可能在 RocketMQ 之上自定义音讯存储时长,比方将音讯从 3 天无效时长缩短至 30 天,可能真正将音讯变为数据资产。同时利用二级存储能力,将冷热数据拆散,为用户提供统一的冷读 SLA。
RocketMQ 5.0 商业版公布预报
RocketMQ 4.0 历经了五年倒退,开源和商业版本独特迈入了 5.0 时代。7 月底,阿里云音讯队列将会基于开源版公布全新的 5.0 商业化版本。注:截止发稿前,RocketMQ 5.0 曾经在阿里云音讯队列 RocketMQ 产品上全新公布,目前反对国内次要地区。
RocketMQ 5.0 版绝对于 4.0 版实例次要有以下几大扭转:
第一,新版本、新售卖,更便宜。新版本采取了全新计量形式,有包年、包月型,也有按量付费和公网流量弹性计费。也有更全的售卖体系,比方新增专业版实例,可能满足局部用户需要。同时每个商品系列都新增了测试环境专用实例,可能不便用户以低成本的形式搭建本人的开发环境。
第二,更强弹性,降本提效利器。存储齐全走向弹性,可能通过 Serverless 按需应用,按量付费。预留弹性,实例根底规格反对实时升降配,用户能够很不便地在流量到来之前做弹性。此外,专业版反对突发流量弹性,可能解决线上稳定性危险。
第三,全新架构,加强可观测运维。无状态音讯生产模型可能解决一些老版本的痛点。同时在可观测上全面采取了云原生接入栈。
音讯的全新状态:事件总线 EventBridge
事件总线 EventBridge 曾经开源到 RocketMQ 社区中。云原生时代,事件无处不在,云计算资源散落在各地,各类生态孤岛随处可见。因而,以事件和事件驱动的形式来集成这所有是大势所趋。
基于此,阿里云推出了全新事件型产品 EventBridge。该产品构建在 RocketMQ 之上,是 RocketMQ 之上的一个事件驱动架构实际。
EventBridge 的事件源包含阿里云服务的管控事件比方资源变更事件、审计事件、配置变更事件,阿里云服务的数据事件,也包含自定义利用、SaaS 利用、自建数据平台、其余云厂商服务等。
事件通过 EventBridge 解决后会投递到事件指标,事件指标包含函数计算、音讯服务、自建网关、HTTP(S)、短信、邮箱、钉钉等。
事件源到事件指标之间会经验残缺的事件处理,包含事件源接入到 EB 后,能够对事件进行过滤、转换、归档、回放等。事件在 EventBridge 整个流程中也有欠缺的可观测性设计,包含事件查问、链路追踪。事件的接入形式十分丰盛,能够通过 OpenAPI 来接入、7 种多语言 SDK、CloudEvents SDK、Web Console 和 Webhook。
EventBridge 具备如下特点:
- 可能大幅度缩小用户开发成本,用户无需额定开发,通过创立 EventBridge 源、事件指标、事件规定等资源即可实现事件架构。用户能够编写事件规定,对事件做过滤、转换。
- 提供原生 CloudEvents 反对,拥抱 CNCF 社区,可能无缝对接社区 SDK。标准协议也能对立个阿里云事件标准。
- 事件 Schema 反对:可能反对事件 Schema 主动探测和校验,反对 Source 和 Target 的 Schema 绑定。
- 寰球事件任意互通:组建了寰球事件任意互通网络,组件了跨地区、跨账户的事件网络,可能反对跨云、跨数据中心的事件路由。
EventBridge 在云上生态曾经初具规模,曾经集成了 255+ 云产品事件源和 1000+ 事件类型。
EventBridge 率先对音讯生态做了交融。阿里云的音讯产品矩阵生态均通过 EventBridge 做了齐全交融。任何一款音讯产品与另一款音讯产品的数据都能互通。同时,依附 EventBridge 的寰球事件网络,可能为所有音讯产品赋予寰球音讯路由的能力。
EventBridge 目前曾经在外部接入钉钉 ISV、聚石塔 ISV,内部也有 50+ SaaS 零碎能够通过 Webhook 的形式接入。另外,海量事件源能够触达 10 多种事件指标,曾经对接了全系云产品 API,任何事件都能够驱动全量云产品 API。
退出 Apache RocketMQ 社区
十年铸剑,Apache RocketMQ 的成长离不开寰球靠近 500 位开发者的积极参与奉献,置信在下个版本你就是 Apache RocketMQ 的贡献者,在社区不仅能够结识社区大牛,晋升技术水平,也能够晋升集体影响力,促成本身成长。感兴趣的同学能够退出钉钉群与 RocketMQ 爱好者一起宽泛探讨:
钉钉扫码加群
作者介绍:
周新宇 – Apache Member,Apache RocketMQ PMC Member,阿里云音讯队列 RocketMQ 研发负责人。
点击此处,进入官网理解更多详情~