kafka為什么吞吐量高,怎樣保證高可用


1:kafka可以通過多個broker形成集群,來存儲大量數據;而且便於橫向擴展。

2:kafka信息存儲核心的broker,通過partition的segment只關心信息的存儲,而生產者只負責向leader角色的partition提交數據,而消費者pull數據的時候自己通過zk存儲offset信息,嚴格講broker基本只關心存儲數據;

3:kafka的ack策略也是提高吞吐量的手段:

  1)生產者的acks如果設置0則只向leader發送數據,並不關心leader數據是否存儲成功;

  2)如果設置為1在向leader發送數據后需要等待leader存儲成功后才會認為一次操作成功;

  3)如果設置為-1在向leader發送數據后不但需要等待leader存儲成功,還要等待各個follow角色的partition,從leader拉取數據后存儲完成才算一次完整的ack,當然這種情況會降低kafka的吞吐量;

     而且follow從leader拉去后存儲完成才能將本地的(segmentLog)LEO標記移動到最后,如果follow未同步完成kafka為了保證數據一致性“HW高水位線”也只能保證到一個較低水平;

 

高可用:

ps:而且kafka底層是通過NIO順序寫數據,效率也是非常高的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM