在談及到Kafka的ACK以前咱們要向講一下Kafka的複製機制,爲了保證Kafka的高性能,設計了分區,一個topic的分區是的數據能夠分散,而後可讓更多的消費者來進行消費;避免單一分區,只能由一個消費者消費,形成串行處理,多分區本質仍是實現了並行消費的機制;其實但凡是分片,很大程度上都是爲了實現並行處理,好比Hdfs的Hive查詢,Spark以及ES,他們的使用的底層存儲技術無一不是分片保存;能夠將操做下放到每一個分片,而後再進行彙總,實現了增長了的數據處理的吞吐。併發
談完了高性能,咱們再來談高可用;分區確實能夠實現併發處理進而提供處理效率,那麼若是分區所在的盤掛了呢?因而Kafka引入了複製,注意,複製是分區級別的事情。爲了防止硬盤的掛掉致使的請求異常,Kafka引入了複製機制,角色有兩個:master,follower。master掛了以後,就須要經過選主操做(依賴zookeeper)選擇出舵主。性能
那麼到此咱們再來講一下Kafka的ACK:設計
0:沒有任何機制,producer將消息發出以後再也不關心;ast
1:只有broker確認master數據已經寫成功了,纔會返回1給producer端;效率
2:只有全部的follower返回OK可,才返回。zookeeper