1. 程式人生 > >中間件(2)消息隊列

中間件(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:流式數據,大數據的處理,不支持事務和消息確認,一般用在日誌的收集方面,因為允許偶爾的消息丟失。

中間件(2)消息隊列