一:简介
解决高吞吐量项目的需求
是一款为大数据而生的消息中间件,具有百亿级tps的吞吐量,在数据采集、传输、存储的过程中发挥着作用
二:为什么要使用消息队列
一个普通访问量的接口和一个大并发的接口,它们背后的设计逻辑是不同的
同步的通信方式:
-系统开销(响应时间)较大
-在同步的过程中要保证每个服务都顺利执行完,整个链路才执行完,因为网络等问题,整个链路成功执行的成功率会受影响
同步的通信方式存在性能和稳定性的问题
异步的通信方式:
-明显提升系统的吞吐量
-即使有服务失败,也可以通过分布式事务解决方案来保证最终的成功
相对于同步的通信方式,异步,可以让上游快速成功,极大提高系统的吞吐量。在分布式系统中,通过下游多个服务的分布式事务的保障,也能保障业务执行之后的最终一致性
消息队列解决的就是通信的问题
三、消息队列的流派
消息队列的中间件选型有很多种:
-
rabbitMQ:内部的可玩性(功能性)是非常强的
-
rocketMQ: 阿里内部一个大神,根据kafka的内部执行原理,手写的一个消息队列中间 件。性能是与Kafka相比肩,除此之外,在功能上封装了更多的功能。
-
kafka:全球消息处理性能最快的一款MQ
-
zeroMQ
它们之间的区别
1. 有broker
重topic:Kafka、RocketMQ、ActiveMQ 整个broker,依据topic来进行消息的中转。在重topic的消息队列里必然需要topic的存在
轻topic:RabbitMQ topic只是一种中转模式。
2.无broker
在生产者和消费者之间没有使用broker,例如zeroMQ,直接使用socket进行通信。