1. 程式人生 > >中介軟體(2)訊息佇列

中介軟體(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:流式資料,大資料的處理,不支援事務和訊息確認,一般用在日誌的收集方面,因為允許偶爾的訊息丟失。