一:簡介
解決高吞吐量項目的需求
是一款為大數據而生的消息中間件,具有百億級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進行通信。