中介軟體(2)訊息佇列
阿新 • • 發佈:2019-01-05
原文:
中介軟體(2)訊息佇列
訊息佇列也是構建大型網站架構過程中非常重要的一箇中間件。
訊息佇列
使用過訊息佇列的同學都知道,訊息佇列最常用的兩個場景是:
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:流式資料,大資料的處理,不支援事務和訊息確認,一般用在日誌的收集方面,因為允許偶爾的訊息丟失。