一、 云计算加速开源创新
过去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应用的场景。
更多精彩内容,欢迎观看:
《云计算加速开源创新》——云原生背景下消息领域的一次重新定义(下):https://developer.aliyun.com/article/1224001?groupCode=tech_library