关于阿里云:技术盘点消息中间件的过去现在和未来

41次阅读

共计 4962 个字符,预计需要花费 13 分钟才能阅读完成。

作者介绍:林清山(花名:隆基)

操作系统、数据库、中间件是根底软件的三驾马车,而音讯队列属于最经典的中间件之一,曾经有 30 多年的历史。其倒退次要经验了以下几个阶段:

第一个阶段,2000 年之前。 80 年代诞生了第一款音讯队列是 The Information Bus,第一次提出公布订阅模式来解决软件之间的通信问题;到了 90 年代,则是国内商业软件巨头的时代,IBM、Oracle、Microsoft 纷纷推出了本人的 MQ,其中最具代表性的是 IBM MQ,价格昂贵,面向高端企业,如大型金融、电信等企业;这类商业 MQ 个别采纳高端硬件,软硬件一体机交付,MQ 自身的架构是单机架构。

第二阶段,2000~2007 年。 进入 00 年代后,初代开源音讯队列崛起,诞生了 JMS、AMQP 两大规范,与之对应的两个实现别离为 ActiveMQ、RabbitMQ,开源极大的促成了音讯队列的风行度,升高了应用门槛,逐步成为了企业级架构的标配。相比于明天而言,这类 MQ 次要还是面向传统企业级利用,面向小流量场景,横向扩大能力比拟弱。

第三阶段,2007~2018 年。 PC 互联网、挪动互联网爆发式倒退。因为传统的音讯队列无奈接受亿级用户的拜访流量和海量数据传输,诞生了互联网消息中间件,外围能力是全面采纳分布式架构、具备很强的横向扩大能力,开源典型代表有 Kafka、RocketMQ,还有淘宝的 Notify。Kafka 的诞生还将消息中间件从 Messaging 畛域延长到了 Streaming 畛域,从分布式应用的异步解耦场景延长到大数据畛域的流存储和流计算场景。

第四阶段,2014~ 至今。 IoT、云计算、云原生引领了新的技术趋势。面向 IoT 的场景,音讯队列开始从云内服务端利用通信,延长到边缘机房和物联网终端设备,反对 MQTT 等物联网标准协议也成了各大音讯队列的标配。

随着云计算的遍及,云原生的理念深入人心,各种云原生代表技术层出不穷,包含容器、微服务、Serverless、Service Mesh、事件驱动等。云原生的外围问题是如何从新设计利用,能力充沛开释云计算的技术红利,实现业务胜利最短门路。

音讯队列自身作为云计算的 PaaS 服务之一,要进一步施展“解耦”的能力,帮忙业务构建现代化利用,这里最要害的一个能力演进是 Eventing 的演进。通过将音讯升华为“事件”,提供面向规范 CloudEvent 的编排过滤、公布订阅等能力构建更大范畴的解耦,包含云服务事件和业务利用的解耦、跨组织 SaaS 业务事件的解耦、遗留利用和现代化利用的解耦等,同时事件驱动也是人造合乎云计算 Serverless 函数计算的范式,是利用 Serverless 化演进的催化剂。

云原生对于消息中间件而言,还有另一层含意就是音讯队列本身架构的云原生化演进,如何充分发挥云的弹性计算、存储、网络,让本人取得更强的技术指标和 Serverless 弹性能力。

消息中间件在技术上有哪些停顿与冲破?

阿里云 MQ 是基于 RocketMQ 打造的一站式音讯服务,以 RocketMQ 作为对立内核,实现业界规范、支流的音讯协定,包含 MQTT、Kafka、RabbitMQ、AMQP、CloudEvent、HTTP 等,满足客户多样化场景诉求。为了进步易用性,咱们别离对不同的协定进行了产品化,以独立产品的模式提供音讯服务(如阿里云 RabbitMQ、阿里云 Kafka),开箱即用、免运维、齐备的可观测体系,帮忙开源客户无缝迁云。

在经验数万企业客户多样化场景的继续打磨,数年的超大规模云计算的生产实践,咱们的内核 RocketMQ 逐步往一体化架构和云原生架构演进。

1. 一体化架构

微服务、大数据、实时计算、IoT、事件驱动等技术潮流,一直的扩大音讯的业务边界,业界有不同的音讯队列满足不同的业务场景,比方 RabbitMQ 偏重满足微服务场景,Kafka 则是侧重于满足大数据、事件流场景,EMQ 则是满足了 IoT 垂直畛域场景。而随着数字化转型的深刻,客户的业务往往同时波及穿插场景,比方来自物联网设施的音讯、或者微服务零碎产生的业务音讯要进行实时计算,如果是引入多套零碎,会带来额定的机器、运维、学习等老本。

在过来“分”往往是技术实现的斗争,而当初“合”才是用户的真正需要。 RocketMQ 5.0 基于对立 Commitlog 扩大多元化索引,包含工夫索引、百万队列索引、事务索引、KV 索引、批量索引、逻辑队列等技术。在场景上同时撑持了 RabbitMQ、Kafka、MQTT、边缘轻量计算等产品能力,真正实现了“音讯、事件、流”,“云边端”一体化架构。

2. 云原生架构

云原生架构是指云上原生的架构,云计算是云原生的“源能源”,脱离了云计算谈云原生如同夸夸其谈。RocketMQ 过来几年正是立足于阿里云超大规模的云计算生产实践,帮忙数万企业实现数字化转型的教训中汲取营养,从而实现互联网消息中间件到云原生消息中间件的进化。这也是 RocketMQ 和其余消息中间件最大的区别,他是实际进去的云原生架构,上面咱们盘点一下 RocketMQ 在云原生架构的关键技术演进。

RocketMQ 是 2011 年诞生于淘宝外围电商零碎,一开始是定位于服务团体业务,面向繁多超大规模互联网企业设计。原来的架构并不能很好的满足云计算的场景,有不少的痛点,比方重型 SDK,客户端逻辑简单、多语言 SDK 开发成本高、商业个性迭代慢;弹性能力差,计算存储耦合、客户端和物理队列数耦合、队列数无奈扩大到百万级、千万级;而其余支流的开源音讯我的项目也同样未进行云原生架构的转型,比方 RabbitMQ 单队列能力无奈横向扩大、Kafka 弹性扩容会面临大量的数据拷贝平衡等,都不适用于在公共云为大规模客户提供弹性服务。

为此,RocketMQ 5.0 面向云计算的场景进行从新设计,冀望从架构层面解决根本性问题,对客户端、Broker 到存储引擎全面降级:

客户端轻量化。 RocketMQ 5.0 SDK 把大量逻辑下沉到服务端,代码行数精简三分之二,开发保护多语言 SDK 的老本大幅度降低;轻量的 SDK 更容易被 Service Mesh、Dapr 等云原生代表技术集成。

可分可合的存算拆散架构。 用户依据不同的场景诉求, 既能够同一过程启动存储和计算的性能,也能够将两者离开部署。离开部署后的计算节点能够做到“无状态”,一个接入点可代理所有流量,在云上联合新硬件内核旁路技术,能够升高拆散部署带来的性能及提早问题。而抉择“存储计算一体化”架构,则具备“就近计算”的劣势,性能更优。在云上多租、多 VPC 简单网络、多协定接入形式的场景下,采纳存储计算拆散模式可能防止后端存储服务间接裸露给客户端,便于实现流量的管控、隔离、调度、权限治理、协定转换等。

然而无利必有弊,存算拆散也同时带来了链路变长、提早增大、机器成本上升等问题,运维也没失去简化,除了要运维有状态存储节点外,还要多运维无状态计算节点。其实在大多数简略音讯收发场景,数据链路基本上就是写 Log、读 Log,无简单计算逻辑(计算逻辑和数据库相比太简略),这个时候优选 存储计算一体化架构,简略够用、性能高、提早低。 特地是在大数据传输场景下,存算一体可能极大升高机器及流量老本,这个从 Kafka 的架构演进也能够失去印证。总的来说不要为了存算拆散而拆散,还是要回归客户、业务场景的实质诉求。

弹性存储引擎。 面向 IoT 海量设施、云上大规模小客户场景,咱们引入 LSM 的 KV 索引,实现单机海量队列的能力,队列数量能够有限扩大;为了进一步开释云存储的能力,咱们实现分级存储,音讯存储时长从 3 天进步到月、年级别,存储空间能够有限扩大,同时还拆散了冷热数据,冷数据存储老本升高了 80%。

Serverless 化。 在老架构外面,客户感知物理队列,物理队列绑定固定存储节点,强状态。Broker、客户端、物理队列的扩缩容相互耦合,负载平衡粒度是队列级,对 Serverless 的技术演进很不敌对。为了实现极致弹性 Serverless,RocketMQ 5.0 对逻辑资源和物理资源做进一步的解耦。

在 Messaging/ 无序音讯的场景,客户指定 Topic 进行音讯无序收发,新架构对客户端屏蔽队列概念,只裸露逻辑资源 Topic。负载平衡粒度从队列级到音讯级,实现了客户端的无状态化,客户端、服务端弹性伸缩解耦。

在 Streaming/ 程序音讯的场景,客户端须要指定 Topic 下的某个队列(也称分区)进行音讯程序收发。在新架构里,对客户端屏蔽物理队列,引入逻辑队列概念,一个逻辑队列通过横向分片和纵向分段,扩散在不同的物理存储节点。横向分片解决了高可用问题,同一个逻辑队列的多个分片多点随机可写,基于 Happen before 的原理保序,秒级 Failover,无需主备切换;纵向分段,解决逻辑队列的扩容问题,通过多级队列映射,实现 0 数据迁徙的秒级扩容,逻辑资源和物理资源的弹性伸缩解耦。

如何对待音讯畛域生态玩家?

在云原生、IoT、大数据的趋势疏导下,音讯成为现代化利用架构的刚需,应用场景更加宽泛,可利用于微服务的异步解耦、事件驱动、物联网设施数据上下行、大数据流存储、轻量流计算等场景。客户需要旺盛、市场沉闷,吸引了不少厂商退出角逐。

从好的角度来看,厂商的充沛竞争,会进一步激活翻新,造就更多用户,独特做大音讯的市场,用户看起来也有更多的抉择;

从坏的角度来看,将来局部竞争得胜的音讯队列会进入停滞期、下线期,用户的利用就会面临迁徙大革新和稳定性危险,所以倡议用户在满足本身业务需要的状况下,尽可能抉择标准接口、协定的形式接入,或者间接应用业界事实标准的音讯队列。

消息中间件将来的发展趋势是什么?

随着 IoT、5G 网络的继续倒退,数据量增速 28%, 预计到 2025 年物联网设施将达到 400 亿台,进入万物互联的时代。物联网时代的音讯存储量和计算量会爆发式增长,音讯零碎将面临微小的老本压力。将来音讯零碎,须要 深挖新硬件的红利,比方长久内存、DPU 等技术,采纳软硬联合的形式深度优化,将音讯的存储计算成本进一步升高。

IoT 时代还有另外一个很重要的趋势是 边缘计算,Gartner 预计到 2025 年,75% 的数据将在传统数据中心或云环境之外进行解决, 音讯零碎须要进一步轻量化、升高资源耗费以适应边缘计算环境。这也意味着,消息中间件的一体化架构,要具备良好的插件化设计,可能依据场景的特点实现多状态输入。比方公共云的状态能够和公共云的基础设施深度集成,充分利用云盘、对象存储加强存储能力,集成日志服务、利用监控等服务晋升可观测能力;而边缘计算的状态则是以最小的资源代价输入外围存储、轻量计算的能力,简略够用即可。

近几年云计算高速倒退,得益于寰球范畴内大量企业在进行数字化转型,通过业务在线化、业务数据化、数据智能化来晋升企业竞争力。数据化转型也随同着商业思维的转型,越来越多的企业采纳“事件驱动”的模式来构建商业逻辑和数字化零碎。

Gartner 预测,将来超过 60% 的新型数字化商业的解决方案会采纳“事件驱动”模式,从业务角度看,“事件驱动”的模式可能帮忙企业实时响应客户,抓住更多的商业机会,发明增量价值;从技术角度看,“事件驱动”的架构,可能以动静、灵便、解耦的形式来链接跨组织、跨环境的异构零碎,人造适宜用于构建大型的跨组织数字化商业生态。

为了应答这个趋势,Messaing 往 Eventing 演进,呈现了 EventBridge(EventBroker)的产品状态。在 EventBridge 里,“事件”这个概念成为一等公民,事件的发布者和订阅者不耦合任何一种具体的音讯队列 SDK 和实现。EventBroker 围绕规范的 CloudEvent 标准构建更加泛化的公布订阅模式,可能链接所有跨组织、跨环境的异构事件源和事件处理指标。

目前以“事件驱动”构建的数字化商业生态才刚起步,将来 EventBridge 将围绕事件这一抽象层次实现更弱小的能力,比方事件的全链路可观测、事件剖析计算、低代码开发等个性,帮忙企业全面落地云时代的“事件驱动”架构。

作者介绍:

​林清山(花名:隆基),阿里云资深技术专家,阿里云音讯产品线负责人。国内音讯领域专家,致力于音讯、实时计算、事件驱动等方向的钻研与摸索,推动 RocketMQ 云原生架构、超交融架构的演进。​

正文完
 0