中間件(2)消息隊列
阿新 • • 發佈:2017-07-26
數據庫服務 之間 生產者 不同 特性 大數 條件 異步 收集
消息隊列也是構建大型網站架構過程中非常重要的一個中間件。
消息隊列
使用過消息隊列的同學都知道,消息隊列最常用的兩個場景是:
1,解耦,一般用在大的網站進行業務拆分的時候,用於各應用之間進行消息通訊。
2,異步,針對那些不需要同步執行,可以晚點執行的操作都可以使用異步,比如發送郵件和短信,實際上使用消息隊列來處理異步還能提升性能,因為消息隊列服務器的處理速度遠高於數據庫服務器。
最常用的消息隊列組件有兩個:RabbitMQ和Kafka,下面就來總結下它們之間有什麽區別。
RabbitMQ vs Kafka
基本信息
先看下面這個表格:
可以得出以下結論:Kafka更受歡迎,rabbitMQ版本更新更快。
架構模型
RabbitMQ:
Kafka:
從上圖可以看到:RabbitMQ和Kafka都有消息生產者和消費者,但是兩者在broker的處理是不一樣的,RabbitMQ有exchange交換機的概念,而Kafka沒有。
性能對比
沒有可比性,因為兩者應用場景不一樣。 測試條件:普通pc,雙核cpu Kafka:100k msg/s RabbitMQ:40k msg/s應用場景
既然說到應用場景,來看下兩者在應用場景方面有什麽不同:
RabbitMQ:內置支持高並發(erLang語言特性),支持事務和消息確認可靠性更高,一般用在應用間通訊方面。
Kafka:流式數據,大數據的處理,不支持事務和消息確認,一般用在日誌的收集方面,因為允許偶爾的消息丟失。
中間件(2)消息隊列