一、云计算加速开源创新
过去20年伴随着互联网、云计算的快速发展,开源技术迎来一波波浪潮。如下图能看到开源项目的投资量在逐年上涨,在消费互联网时代,互联网业务爆发式增长激发了第一波开源浪潮;进入产业互联网时代,云计算蓬勃发展引领了第二波开源浪潮。
在数字时代,开源和云计算的兴起都有着共同的底层逻辑,就是通过变革生产关系来提高软件行业生产力。开源改变了软件开发模式,通过开源社区建设能够快速获取开发者的需求反馈,同时流行的开源项目能吸引数百数千个开发者协同开发共建,使得开源软件迭代速度极大提高。开源也打破了技术烟囱,促成了软件的标准化,标准化又进一步提升了产业协同效率。
云计算则是改变了软件交付方式,让基础设施、基础软件服务化,客户开箱即用,按量付费,为企业数字化降本提效,加速了数字经济的进程。
如同新能源带来了汽车行业的变革,云计算也为开源基础软件带来技术创新机会。越来越多的开源软件采用云原生架构、释放云计算红利,带来技术竞争力新突破:
第一个是弹性
云计算提供弹性的计算、存储、网络能力,基础软件应实现弹性架构,和云的弹性算力无缝结合,释放弹性红利。
第二个是成本
云基础设施层基于软硬结合技术深度优化,达到最优成本。基础软件应将更多的能力下沉到基础设施层,如充分利用云存储重构存储模块,释放低成本红利。
第三个是高可用
云计算提供全球多region、多可用区的基础设施,基础软件应具备数据、状态多可用区同步的能力,释放全局高可用能力。
二、Apache RocketMQ发展史
接下来我们以RocketMQ为例,聊聊云计算如何加速RocketMQ的创新。先来回顾Apache RocketMQ过去十年的发展历程,可分为“诞生于互联网”与“成长于云计算”两大阶段。
第一个阶段是RocketMQ的从0到1,在阿里内部规模化落地。2012年,为了支撑超大规模电商互联网架构,阿里中间件研发了RocketMQ,并在产品诞生初期开源,2017年RocketMQ统一了阿里消息技术体系。
第二个阶段是云计算 。2015年RocketMQ上云,这也是业界首个提供公共云SaaS形态的开源消息队列。2016年,阿里把RocketMQ捐赠给Apache,17年孵化毕业,成为国内首个TLP的互联网中间件。
在云计算和开源双轮驱动下,RocketMQ在阿里外部完成全面规模化,帮助千行百业完成数字化转型,产品能力也得到进一步的飞跃。2022年5.0正式发布,Apache RocketMQ正式迈进云原生时代。
三、互联网场景下Apache RocketMQ核心优势
面向大规模电商和金融场景,Apache RocketMQ打造了四个核心优势
第一个优势能力是支撑超大规模复杂业务的能力,具备丰富的消息特性。每个大型互联网公司都会有主营业务(比如阿里的交易、蚂蚁的支付、饿了么的外卖),以主营业务为中心扩展业务能力,阿里电商就是围绕交易事件建设的电商操作系统,每笔交易事件都会触发不同的业务,不同细分业务会关注不同类型的交易事件,比如垂直市场只关注某个类目的交易事件、天猫超市只关注某个卖家的交易事件、购物车只关注下单成功的交易事件等,RocketMQ的SQL订阅提供最灵活的消息过滤能力,能够满足下游消费者按照不同的业务维度进行消息过滤的诉求。除了主营业务之外,大型互联网公司还会快速迭代多样化创新业务,对于消息队列来说会产生大量的小流量topic,RocketMQ具备单机万级topic的能力,能够最大化资源利用率提供多租服务。在大型互联网业务中,还会有各种定时事件触发场景,最典型的是交易超时关闭机制,阿里交易或者12306订票都有类似的机制。RMQ的定时消息,能够很方便的满足这类诉求。
第二个优势能力是一致性,无论是阿里交易、还是蚂蚁支付都天然对数据一致性有着极高的要求,RocketMQ在一致性方面也打造了多个关键特性。最具代表性的是分布式事务消息,RocketMQ是第一个实现这种特性的消息队列,这个特性能够保障交易的上下游对于订单状态达到最终一致。这个方案也成为异步消息一致性方案的事实标准,被多个互联网公司所采纳,甚至也有公司把他移植到定制版的Kafka。除了分布式一致性之外,在一些场景有顺序一致性的需求,比如分库分表产生的异构数据库复制场景。比如淘宝买卖家库的数据复制,RocketMQ可以严格按照顺序将源库的binlog分发到目标库进行数据重放,从而达到不同业务维度下数据一致性。
在互联网高并发流量下,应用会大量使用缓存技术,除了集中式的缓存服务之外,应用还会增加本地缓存进一步加速,RocketMQ的广播消息能够把缓存失效广播给应用的所有机器,实现分布式本地缓存的一致性。
第三个优势能力是稳定性。这是交易和金融场景的根本,稳定性是个系统工程,RocketMQ不仅具备核心的HA能力,还提供了全方位的稳定性保障,比如自适应拉模式,避免慢消费者被打垮,真正实现削峰填谷;消息轨迹,业界第一个自带消息级别可观测能力的消息队列,用户可以精准定位,快速排查线上问题;消息回溯、消息死信机制,为业务bug或数据问题导致消费失败,提供了多样化的稳定性兜底手段。
第四个优势能力是高性能,在双十一的极限流量下,RocketMQ写消息延迟 4个9在 1ms内,100%在 100ms内;RocketMQ采用share-nothing的分布式架构,在吞吐量方面也具备无限扩展的能力,已经连续10年支持了双十一万亿级消息洪峰,为百万级的应用实例提供低延迟消息服务。
在进入云计算时代,RocketMQ面向云原生进行两个方向的演进,向上RocketMQ产品形态演进,更好的支撑云原生应用架构(微服务、EDA、Serverless);向下RocketMQ自身进行云原生架构改造,充分释放云基础设施的弹性能力,全方位提高关键技术指标。
四、云原生时代的Apache RocketMQ产品形态演进
接下来我们先看面向云原生应用架构,RocketMQ在产品形态的演进。
微服务是云原生应用架构的核心,引入微服务架构,数字化企业能够按照小型化的业务单元和团队划分,以“高内聚、低耦合”的方式高效协作。但是微服务架构也会带来新的问题,比如大量同步微服务会面临延迟增大、可用性降低等风险,引入消息队列建设异步微服务体系,可提高微服务的韧性,降低延迟。
在微服务领域已经形成了几个事实标准,比如Spring Cloud体系,Dubbo体系。与此同时下一代的微服务技术也在快速发展中,主要体现在基础设施下沉,比如servicemesh,解耦了业务逻辑和分布式基础设施的实现,两者可以独立灵活演进。基础设施再进一步下沉,则是往serverless的方向演进,服务粒度变得更小,到函数级别;代码开发和运维解耦,开发人员无需关注的应用运维,更多时间专注业务开发。
面向微服务的趋势,RocketMQ5.0提供轻量SDK,大量特性实现下沉到服务端,比如消息重试、负载均衡等。轻量SDK对Mesh技术更加友好,RocketMQ的mesh能力现已合入 CNCF Envoy 官方社区。轻量SDK采用消息粒度的负载均衡机制,客户端无需绑定队列消费,实现彻底的无状态化,更加匹配了Serverless应用的场景。
今天我们以RocketMQ5.0核心能力为基础,支撑了阿里云RocketMQ、MNS、RabbitMQ等多款云消息产品,帮助客户建设现代化应用架构。
在云原生时代,事件驱动架构应用范围扩大,成为Gartner年度十大技术趋势。在新型的数字化商业解决方案中,会有60%采纳EDA架构。
事件驱动是个比较经典的概念。早在几十年前,无论是操作系统内核的设计、还是客户端编程框架都大量采用了事件驱动技术。EDA的价值是为软件设计提供“解耦”的能力,“解耦”是软件实现快速迭代的核心。在全行业数字化转型、全面上云的时代,事件驱动架构的价值将被全面释放。
· 事件驱动释放数字化转型的红利
现实世界中的企业业务可以抽象为一个个的事件触发、事件响应的流程,比如在A在超市购买了商品,会产生用户A购买某件商品的事件,超市响应这个事件,可能触发商品补货Action;B在ATM存款完成,会产生A存款XX元事件,银行响应这个事件,可能会触发理财产品推荐Action。用事件来思考业务,进行业务建模,用事件驱动技术进行业务数字化建设,能够为企业建设高度可扩展、高度敏捷的数字化系统。比如在超市的案例中,购买商品的事件未来能扩展更多的Action,比如建设CRM系统、商品货架摆放优化、优惠券发放等等,EDA的数字化系统将持续创造业务增量。另一方面,现实世界中的商机往往转瞬即逝,事件驱动的业务系统,天然就是实时触发的,快速响应业务,例如在电商网站中,通过实时分析用户在网站的点击事件、购物车事件,实时分析用户喜好和需求,精准实时推荐,进一步提高购物成功率和成交量。
· 事件驱动建设数字化商业生态
当全行业大规模数字化转型后,跨业务、跨组织的业务合作将从线下搬到线上,在数字经济时代,数字化商业生态规模将持续扩大。在过去,跨组织业务协同更多的是通过同步API调用的方式进行,现在随着规模的扩大、参与方的增多、业务迭代速度的加快,同步API的调用方式已经远远不能满足数字化商业生态的发展诉求。比较显著的问题包括:跨组织的业务因耦合无法独立演进迭代、可用性下降、性能无法满足2C的规模等等。而EDA天然具备的异步、解耦的特性可以解决这一系列的问题,跨组织业务协同更需要彻底解耦。比如阿里聚石塔业务就是事件驱动的模式,聚石塔实时发布交易事件,合作伙伴包括ISV、软件服务商、品牌商家订阅消费交易事件,建设个性化的CRM、商家运营、后台管理系统等,形成一个庞大的电子商务数字化生态;钉钉则是启动“云钉一体”的战略,通过钉钉连接器+EventBridge开放全面的钉钉事件源,以事件集成的方式和业界合作伙伴共建数字化办公生态。事件驱动架构将为跨组织的商业新生态打破业务孤岛、数据孤岛,行业级的事件规范CloudEvent也已经形成,未来“连接”将创造新价值。
· 事件驱动加速云原生技术的落地
作为云原生代表技术,Serverless架构范式本身也是事件驱动的。现在主要的serverless产品形态,无论是阿里云的函数计算、还是AWS的Lambda,它们的主要触发源都是各种形态的事件,比如云产品事件,OSS文件上传,触发用户基于函数进行文件加工处理计算;用户业务事件,EventBroker触发函数运行消费逻辑;云产品运维事件,用户通过响应事件,在云平台的基础上扩展自己的自动化运维体系。事件驱动架构的大规模使用,能够帮助数字化企业释放云计算Serverless的技术红利。
随着EDA架构被大规模跨组织的落地,CNCF推出了CloudEvent规范,基于统一的规范,跨系统、跨组织的数字化协同有了共同的“语言”,能够实现更高效的系统集成,沉淀面向事件的软件基础设施。面向EDA的趋势,RocketMQ5.0发布了全新的产品形态,叫eventbridge。它的领域模型以事件为中心的,支持cloudevent规范,提供低代码的事件编排、过滤、路由能力,具备灵活的事件集成能力。
今天我们以RocketMQ5.0核心能力为基础,支撑了阿里云EventBridge产品,助力云客户实现事件驱动、事件集成的商业生态。
五、云原生时代的Apache RocketMQ技术架构演进
现在我们从RocketMQ自身的技术架构角度来看云原生的演进,这是RocketMQ的云原生架构全景图,从客户端、到服务端都进行了全方位的改造,更高弹性、可用性,更低成本。
· 客户端采用轻量SDK设计理念,将原来富客户端的逻辑下沉到Broker,满足现代化应用轻量化、Serverless化的趋势。
· Broker彻底进行弹性架构改造,分离RocketMQ Proxy和Store层。其中Proxy 是完全无状态的计算节点,专注多协议、多领域场景覆盖,可以面向不同工作负载独立弹性,如物联网、微服务、大数据不同场景有不同的资源诉求。同时对RocketMQ的Topic资源也进行了三层解耦,面向消息的Topic、面向流的Topic逻辑分片、面向底层存储的Topic物理分片,每一层都可以独立弹性。Store层则专注消息的高可用存储,包括副本复制、主备切换和云存储集成。其中新的HA技术引入Leaderless的架构,Store节点身份对等,资源利用率全面提升;保持极简架构,内置分布式一致性组件,无需依赖外部zookeeper等分布式系统;多副本策略可定制,面向不同场景,用户可以在可用性+可靠性+成本进行灵活组合;基于全新的高可用架构,用户可以面向云的多可用区、多region组建Geo全局高可用能力。
在云存储集成方面,云服务形态的RocketMQ 5.0可基于云盘、对象存储的打造多级存储架构,提供低成本的无限存储能力,冷热数据分离,为用户提供一致的冷读 SLA。
六、Apache RocketMQ 5.0业务全景
经历7年大规模云计算实践,RocketMQ迈进5.0的时代,从原来的互联网业务消息中间件,扩展到"消息、事件、流"超融合处理平台,解锁更全面的能力。
· 在消息领域,全面拥抱云原生技术,更好的弹性架构和高可用能力。
· 在事件领域,支持CloudEvent规范,以事件为中心的产品新界面,助力客户建设跨业务、跨组织的数字化商业生态。
· 在流领域,流存储增强批量特性,大幅度提高数据吞吐量;新增逻辑队列特性,在流场景也具备无缝伸缩能力;新增流数据库RSQLDB,提供实时事件流处理、流分析能力。
· 在物联网领域,RMQ基于端云一体化架构实现了完整的物联网消息队列的能力,从原来的连接应用扩展到连接物联网设备。同时RocketMQ 5.0 也继续保持极简架构的原则,能够以最低的资源消耗、运维成本搭建服务,适合边缘计算。
如下图所示,物联网设备持续产生数据,边缘的RocketMQ直接进行实时数据分析计算,能够快速响应用户。同时通过实时ETL、实时决策产生的高价值事件或者数据,也可以传输到云端,通过RocketMQ的Eventing的能力,链接到云平台,充分利用公共云的一站式平台技术进一步放大数据价值。现在RocketMQ已经具备连接一切、随处运行的能力,提供“云、边、端”一体化的实时数据解决方案。
七、Apache RocketMQ生态与社区建设
一个人可以走得很快,但一群人可以走得更远,接下来我们将继续加大对RocketMQ 5.0的生态建设投入。一方面是应用架构生态的建设,这里既有经典的开源项目、规范的集成,比如JMS、AMQP等,也会有云原生技术生态的集成,比如CloudEvents、Dapr、Envoy。同时RocketMQ也会进一步发力数据架构生态,全链路集成大数据的摄入、数据存储、数据处理、数据分析组件,从离线大数据到实时大数据。RocketMQ通过联动社区生态项目,为客户交付完整的业务价值链条,实现多场景的业务覆盖,如事件驱动架构解决方案、实时数据解决方案。
在全球 700+ Contributors的共同建设下,RocketMQ产品竞争力持续提升,获得更多用户认可,近期荣获多个奖项,如中国开源云联盟优秀 基础软件、进入科创中国“开源创新榜”、Apache中国开源项目领导者象限。随着潜在用户数的增大,RocketMQ的商业价值也进一步放大,目前已经有10+云厂商提供Apache RocketMQ的商业服务, 真正无厂商锁定。RocketMQ已然成为头部互联网、金融、云厂商的共同选择,是消息领域的事实标准。
未来RocketMQ将继续围绕 消息、事件、流一体化的云原生MQ持续演进,这是近期RocketMQ规划的关键特性,欢迎社区开发者参与共建。