啥是消息队列
一般来说,消息队列是一种异步的服务间通信方式,是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。
为啥要用消息队列
主要原因是由于在高并发环境下,由于来不及同步处理,请求往往会发生堵塞,比如说,大量的insert,update之类的请求同时到达MySQL,直接导致无数的行锁表锁,甚至最后请求会堆积过多,从而触发too many connections错误。通过使用消息队列,我们可以异步处理请求,从而缓解系统的压力。
消息队列有哪些
- Kafka
- RocketMQ
- RabbitMQ
- pulsar
- activeMQ
- verneMQ
一个大型的分布式系统,通常都会异步化,走消息总线。 消息队列作为最主要的基础组件,在整个体系架构中,有着及其重要的作用。异步通常意味着编程模型的改变,时效性会降低。
kafka
是目前最常用的消息队列,尤其是在大数据方面,有着极高的吞吐量。而rocketmq
和rabbitmq
,都是电信级别的消息队列,在业务上用的比较多。相比较而言,ActiveMQ
使用的最少,属于较老一代的消息框架。
pulsar
是为了解决一些kafka
上的问题而诞生的消息系统,比较年轻,工具链有限。有些激进的团队经过试用,反响不错,但实际使用并不多。
mqtt
具体来说是一种协议,主要用在物联网方面,能够双向通信,属于消息队列范畴,推荐使用vernemq
。