这是我参与「第三届青训营 -后端场」笔记创作活动的的第5篇笔记
什么是消息队列
消息队列(MQ),指保存消息的容器,数据结构的本质是个队列。消息是指在应用之间传送的数据,消息可以是文本字符串,也可以是对象.
懂行的人应该知道线程这个词,线程之间共享资源其中有一种方式就是通过消息管道,这个消息队列你可以把它看成是一个专门用于进程之间通信的东西.
对于小白来说,你可以把它看成是古人通信之间专门去运送信件的官员.
消息队列的作用
消息队列在我看来有两大作用就是解耦,缓冲.
解耦
这个消息队列最大的作用就是解耦,什么叫解耦,就是你只需要把这个消息(信件)发送给消息队列(运信的官员),你就不需要再去担心是否能传到了收信人那里了,你只需要把消息发送出去就行,就是这么靠谱儿.
缓冲
消息队列还可以帮你缓冲一下,是个什么意思呢,就是说你发送出去消息后,在一定的延迟后,收信人才会收到消息,而这个延迟的缓冲,足够你做很多事了,当然这个缓冲有利有弊,利端很明显,它就会给你一段时间让你去做你想要准备的事,弊端的话,那就是如果这个消息很急的话,这个延迟很有可能拖垮你.
常见的消息队列
常见的消息队列有kafka,rabbitmq,rocketmq
kafka
Kafka是一种高吞吐量的分布式发布订阅消息系统,它通过O(1)的磁盘数据结构提供消息的持久化,Kafka服务器和消费机集群来分区消息
rabbitmq
rabbitmq是在易用性、扩展性、高可用性等方面表现不俗的消息队列
rocketmq
RocketMQ是阿里开源的具有高吞吐量、高可用性、适合大规模分布式系统应用的消息中间件,