如何解读消息中间件的演变

本文涉及的产品
性能测试 PTS,5000VUM额度
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 阿里云消息负责人 ,隆基,介绍消息中间件的演进背景及演进过程。

1. 演进背景之解耦

随着软件架构复杂度的提升,由于传统单机应用系统组件较少,逐渐演进成为后来的分布式系统,以及现代的微服务,通信的依赖复杂度愈来愈高。对于早期简单的系统而言,用户一般会使用RPC,但随着组件业务复杂度的提高,则会引入消息队列,以达到异步通信之上的一种能力——解耦。


解耦,即解除耦合,让各类组件彼此互不依赖,可以进行独立的演进,这也是很多软件设计的基本理念。如今,出现了各类数字化系统,其承载着企业的业务,需要根据实际情况应对市场的变化,进行快速的发展。业务要发展,则承载其发展的数字化系统就要保证其各种应用系统可以实现快速迭代,研发人员也要完成高效协作。于是,消息队列解耦的能力逐渐被视为重中之重,用户也越来越多。

 

2. 演进过程

在多年的演进过程中,其内在的本质变化微乎其微,仍旧是解耦。但是,应用很多维护的量级都在发生变化,因此近年来仍旧出现了各种各样的消息队列。这一点可以从流量的角度分析。

2.1 单机系统时期

在早期,大部分公司使用的系统都属于信息化系统,用户很少,一般多为企业内部的员工。随着业务的发展,虽然一些银行也推出了很多系统,但访问这些系统的仅为柜员或ATM机,均为较低并发的访问模式。这类访问模式,早期的单机系统足以满足其流量需求,如IBMMQ,以及后期出现的ActiveMQRabbitMQ等。

2.2 互联网时代——分布式系统

随着世界进入互联网时代,绝大多数的应用软件会面向全世界的人使用,访问量大幅攀升,单机系统再无法承载如此庞大的访问量,分布式的消息对列出现,如NotifyRocketMQKafaka等。当流量上涨时,它们可以通过加机器不断扩展其集群的容量。在需求的支配下,分布式时代的架构逐渐替代了原有的单机系统架构。

2.3 云时代

再到后来,消息队列依赖的底层计算存储网络资源发生变化。早期,计算存储网络资源多为物理机或虚拟机,在云时代,计算存储网络资源被池化,迁移至公共云。可以以汽车为类比,早期使用的是燃油车,其技术是基于燃油而演进的,如发动机、变速箱,但在新能源时代,其底层原理发生了变化,由然后变为了新能源电池,因此,发动机、变速箱等方面的技术被重新置换,为新能源车企提供了全新的发展机会,实现换道超车。云原生时代与之十分相似,各类基础软件依赖的底层资源变成了弹性资源。换言之,在保持消息本质不变的基础上,其实现方式需要随之改变变化,需要面向云的弹性计算、弹性存储、弹性网络做技术升级,使其各类技术指标能够基于云的IaaS弹性体系进一步的提升,如弹性速度、存储成本等,其产品的形态演进到Serverless化的形态,由软件变成服务,由原本的自研变为按需付费、按量付费。如人饮水,原本需要自己挖井取水,如今演变成为自来水模式,按使用量付费,这就是整个演进的过程。

相关文章
|
6月前
|
消息中间件 存储 负载均衡
消息中间件的选择:RabbitMQ是一个明智的选择
消息中间件的选择:RabbitMQ是一个明智的选择
110 0
|
5月前
|
消息中间件 存储 中间件
【消息中间件】详解三大MQ:RabbitMQ、RocketMQ、Kafka
【消息中间件】详解三大MQ:RabbitMQ、RocketMQ、Kafka
1390 0
|
4月前
|
消息中间件 编解码 Docker
Docker部署RabbitMQ消息中间件
【7月更文挑战第4天】Docker部署RabbitMQ消息中间件
275 3
|
1月前
|
消息中间件 编解码 Docker
【Docker项目实战】Docker部署RabbitMQ消息中间件
【10月更文挑战第8天】Docker部署RabbitMQ消息中间件
84 1
【Docker项目实战】Docker部署RabbitMQ消息中间件
|
3月前
|
消息中间件 Java 测试技术
消息中间件RabbitMQ---SpringBoot整合RabbitMQ【三】
这篇文章是关于如何在SpringBoot应用中整合RabbitMQ的消息中间件。内容包括了在SpringBoot项目中添加RabbitMQ的依赖、配置文件设置、启动类注解,以及如何通过单元测试来创建交换器、队列、绑定,并发送和接收消息。文章还介绍了如何配置消息转换器以支持对象的序列化和反序列化,以及如何使用注解`@RabbitListener`来接收消息。
消息中间件RabbitMQ---SpringBoot整合RabbitMQ【三】
|
3月前
|
消息中间件 Docker 容器
消息中间件RabbitMQ---Docker安装RabbitMQ、以及RabbitMQ的基本使用【二】
这篇文章提供了RabbitMQ的安装和基本使用教程,包括如何使用Docker拉取RabbitMQ镜像、创建容器、通过浏览器访问管理界面,以及如何创建交换机、队列、绑定和使用direct、fanout和topic三种类型的交换器进行消息发布和接收的测试。
消息中间件RabbitMQ---Docker安装RabbitMQ、以及RabbitMQ的基本使用【二】
|
3月前
|
消息中间件 存储 网络协议
消息中间件RabbitMQ---概述和概念 【一】
该文章提供了对消息中间件RabbitMQ的全面概述,包括其核心概念、工作原理以及与AMQP和JMS的关系。
消息中间件RabbitMQ---概述和概念 【一】
|
4月前
|
消息中间件 监控 负载均衡
中间件RabbitMQ性能瓶颈
【7月更文挑战第13天】
276 11
|
4月前
|
消息中间件 NoSQL Kafka
消息中间件(RocketMQ、RabbitMQ、ActiveMQ、Redis、kafka、ZeroMQ)以及之间的区别
消息中间件(RocketMQ、RabbitMQ、ActiveMQ、Redis、kafka、ZeroMQ)以及之间的区别
|
4月前
|
消息中间件 Java Spring
实现Spring Boot与RabbitMQ消息中间件的无缝集成
实现Spring Boot与RabbitMQ消息中间件的无缝集成