Kafka消息中間件相關

Kafka消息中間件實現幾十萬QPS的原理

  1. 磁盤順序寫:寫磁盤是以文本追加的方式[append-only]
  2. 頁緩存技術:不是直接寫磁盤,並且寫入操做系統層面的os cache
  3. 零拷貝技術:若是os cache有從os cache裏取,不然從磁盤取,直接發送到網卡,不須要其餘拷貝的操做

Kafka消息中間件實現消息不丟失

  1. 分佈式存儲:大量的數據不能單單存儲在一臺服務器上,能夠將一個topic的數據經過Partition來分發到多個服務器上;
  2. 高可用架構:每一個Partition的數據均可以有副本,主Partition成爲Leader,副本成爲Follower,副本在其餘服務器,當Leader所在的服務器宕機,Follower會提高爲Leader;
  3. 防止數據丟失問題ISR機制: (1)場景:假設一條數據到了Leader,Follewer還沒來得同步數據,Leader全部的主機或者Leader自己的線程宕機,這時候Follower就會提高爲Leader,這時候就會丟失了那條數據。 (2)ISR機制解決方案:自動給每一個Partition維護一個ISR列表,這個列表裏必定會有Leader,而後還會包含跟Leader保持同步的Follower,假設場景(1)出現了,這時候ISR列表裏面的Leader就會被踢掉

Kafka寫數據流程

  1. 每一個Partition都至少得有1個Follower在ISR列表裏,跟上了Leader的數據同步
  2. 每次寫入數據的時候,都要求至少寫入Partition Leader成功,同時還有至少一個ISR裏的Follower也寫入成功,纔算這個寫入是成功了
  3. 若是不知足上述兩個條件,那就一直寫入失敗,讓生產系統不停的嘗試重試,直到知足上述兩個條件,而後才能認爲寫入成功
  4. 按照上述思路去配置相應的參數,才能保證寫入Kafka的數據不會丟失
相關文章
相關標籤/搜索