Kafka的底層實現原理

Kafka的架構組建架構

Topic:消息存放的目錄主題socket

Producer:生產消息到topic的一方性能

Consumer:訂閱topic消費消息的一方操作系統

Consumergroup:各個consumer能夠組成一個組,每一個消息只能被組中的一個consumer消費,若是一個消息能被多個consumer消費,那麼這些個consumer確定不在同一個組中server

(因此同一個groupid下的consumer是各自消費消息的,不會出現消費同一個消息的狀況出現rabbitmq

 

 

 

Kafka性能優秀緣由揭祕進程

  1. kafka中的message並非保存在內存中的,而是保存在了磁盤上,惟一的區別是他運用了順序寫,而並不是採用隨機寫,順序寫的速度在600MB/S,隨機寫的速度在100KB/S,這個性能的提高的效果明顯的,順序寫的效率並不比內存寫差,甚至合理運用效率更高(充分利用了操做系統的預讀、後寫機制)
  2. kafka經過sendfile命令,減小了數據拷貝,數據的拷貝基本全在內存中完成。(原先是將數據從硬盤讀到內核區的pageCache,而後用戶進程copy到用戶區,用戶區在吧數據寫進socket中)如今是省掉了用戶copy數據這一步,直接讓內核區的數據寫入socket中
  3. push-and-pull:producer批量的push數據,consumer批量的pull數據,減小了io的次數

 

 

kafka和rabbitmq區別內存

 

  1. rabbitmq比kafka更嚴謹,不易出現消息的丟失,緣由是rabbit有一個ack消息確認機制,只有消息處理完畢後,consumer纔會給server發送一個回執,將queue中的消息刪除,不然不會被刪除
  2. rabbitmq一樣支持持久化,配置一個durable = true便可
相關文章
相關標籤/搜索