走进消息队列 | 青训营

78 阅读2分钟

      ~~~~~~消息队列,指保存消息的一个容器,本质是一种队列。但是这一队列,需要支持高吞吐、高并发、高可用的要求。在青训营课程中,我们了解并学习了消息队列,以下是我的新的感悟。
      ~~~~~~首先,我们需要先了解一下消息队列的前世今生:

1.png       ~~~~~~(从图中可以看出,消息队列的诞生很早。但是起初,消息中间件是只有大公司才能使用的高级物件,各大IT公司建立了牢牢地技术壁垒,以确保自身的商业利益。直到2002年消息队列规范发布,才真正促进了消息队列的繁荣发展。)
      ~~~~~~现如今,比较流行的消息中间件有以下几种:ActiveMQ、RabbitMQ 、Kafak、RocketMQ,以及目前存算分离的Pulsar。在课程中,老师主要讲述了Kafak、BMQ、RocketMQ三种消息队列。我也会在接下来的笔记中记录我对这三种消息中间件的理解。
      ~~~~~~首先是Kafak。想要使用它有四个步骤:创建集群->新建topic->编写生产者逻辑->编写消费者逻辑。它的最大特点是可以支持极高的吞吐率。从一条消息的角度来看,Producer采用批量发送的形式,并将批量发送的内容进行数据压缩,减少了消息的大小;Broker再将已经压缩过后的数据进行顺序写,然后使用消息索引和零拷贝的方式提高效率;而Consumer利用Rebalance的形式完成读入。这些就是Kafak拥有高吞吐的秘诀。
      ~~~~~~接下来是BMQ。它兼容Kafka协议,存算分离,云原生消息队列,初期定位是承接高吞吐的离线业务场景,逐步替换掉对应的Kafka集群,进而实现了对Kafka的优化。BMQ在重启、替换、缩容、扩容功能上都能实现秒级完成,在效率上完美替代了Kafka。此外,BMQ还具有泳道,Databus,Mirror,Index,Parquet等高级特性,这些可以更好的让BMQ完成众多消息的处理。
      ~~~~~~最后是RocketMQ。它主要针对电商业务线使用,如注册,订单,库存、物流等。它的高级特性在于事务消息,重试和死信队列,延迟队列。这些高级信息最大程度上提高了消息传递时的容错能力,同时也提升了时效性。
      ~~~~~~以上便是我对消息队列的理解与学习经历。其实在课上学习的消息队列只是很小一部分,我们未来还会接触更多,甚至自行研发,不过这就要求我们必须打好基础了。