学习笔记:消息队列(二)消息队列|青训营;

77 阅读2分钟

在上一次,我们知道了消息队列所使用的场景,现在我们就要真正地了解什么是消息队列,他们的历史是什么以及有哪些消息队列。

什么是消息对列

从作用的角度来讲,消息队列是在消息传输的过程中保存消息的容器。它也具有队列先入先出的性质。需要支持:

  1. 高吞吐
  2. 高并发
  3. 高可用

消息队列的发展历史

消息中间件其实诞生的很早,早在1983年互联网应用还是一片荒芜的年代,美国设想了一种通用总线,世界上第一个现代消息队列软件The Infomation Bus(TIB)。

接近2000年的时候与联网代已经初见曙光,全球应用程序得到了极大的丰富,对于程序之间互联互通的需求更加深刻,但是各大公司之间还是建立技术壁垒来保证自己的商业利益,所以消息中间件在那时是大型企业才能够用的起的高级产品。

2001年sun发布了jms技术,试图在各大厂商的层面上再包装一层统一java规范。java程序只需要针对jms api编程,不需要关注传其使用了怎样的消息中间件。但是jms仅仅适用于java。

2004年AMO(高级消息队列协)诞生了。这才真正促进了消息队列的繁荣。任何人都可以对AMOP的标进行编码。有好的协议指导,再加上互联网分布式应用的迅速发展成为了消息中间件的动力。程序应用应里的互联互通,发布订阅,最大切合了消息中间件的初衷。

除了刚才介绍过的收费中间件,开源消息中间件开始层出不穷,常见比较流行的有ActiveM0. RabbitM0、Kafka,阿里的RocketM0,以及目前存算分离的Pulsar,在目前与联网应用中消息队列中间件基本上成为标配。

有哪些消息队列

消息队列名称消息队列特点
Kafka分布式的、分区的、多副本的日志提交服务,在高吞吐场景下发挥较为出色
RocketMQ低延迟、强一致、高性能、高可靠、万亿级容量和灵活的可扩展性,在一些实时场景中运用较广
Pulsar是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体采用存算分离的架构设计
BMQ和Pulsar架构类似存算分离,初期定位是承接高吞吐的离线业务场景,逐步替换掉对应的Kafka集群