2017-03-21 43 views
0

我正在使用Kafka 0.10.2.0。我有3個經紀人,我正在做一些故障轉移測試。有時候,當一位卡夫卡經紀人非正式關閉時,我失去了數據。 卡夫卡代理配置:Kafka如何防止經紀人丟失數據

zookeeper.connection.timeout.ms=6000 
num.partitions=50 
min.insync.replicas=2 
unclean.leader.election.enable=false 
group.max.session.timeout.ms=10000 
group.min.session.timeout.ms=1000 

消費者配置:

props.put(ConsumerConfig.GROUP_ID_CONFIG, getTopicName() + "group"); 
props.put(ConsumerConfig.CLIENT_ID_CONFIG, getClientId()); 
props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest"); 
props.put(ConsumerConfig.REQUEST_TIMEOUT_MS_CONFIG, 30000); 
props.put(ConsumerConfig.HEARTBEAT_INTERVAL_MS_CONFIG, 500); 
props.put(ConsumerConfig.SESSION_TIMEOUT_MS_CONFIG, 3000); 

製片配置:

props.put(ProducerConfig.LINGER_MS_CONFIG, 1); 
props.put(ProducerConfig.BUFFER_MEMORY_CONFIG, 33554432); 
props.put(ProducerConfig.MAX_IN_FLIGHT_REQUESTS_PER_CONNECTION, 1); 
props.put(ProducerConfig.CLIENT_ID_CONFIG, getClientId()); 
props.put(ProducerConfig.MAX_BLOCK_MS_CONFIG, 800); 
props.put(ProducerConfig.RETRIES_CONFIG, Integer.MAX_VALUE); 
props.put(ProducerConfig.REQUEST_TIMEOUT_MS_CONFIG, 800); 

我能做些什麼來阻止過卡夫卡經紀人丟失數據?

+0

集製片配置'的ACK = all'見http://kafka.apache.org/documentation/#producerconfigs –

+0

我已經添加了所有的生產者。 – melihcoskun

+0

隨着不乾淨的領導人選舉被禁止,並且acks =所有你不應該丟失任何數據。如果您可以可靠地重現此情況,請將潛在錯誤報告給[email protected](http://kafka.apache.org/contact)或打開Jira:https://issues.apache.org/jira/browse/KAFKA-1?jql = project%20%3D%20KAFKA –

回答

1
+0

是的所有主題都有複製因子3.我已經檢查了幻燈片。我正在使用autocommit false,並且在提交消息時我沒有任何問題。我相信製片人正在正確地發送消息給主題。但之後,當經紀人倒閉時,我正在失去數據。它並不總是在發生,但是在進行如下測試時:開始向kafka發送消息,關閉其中一個經紀人,然後再次打開它,然後關閉其他經紀人......我正在丟失關於這些情況的數據。 – melihcoskun

+0

您如何知道數據丟失?如果您使用控制檯使用來自開始偏移量的消息,則消費者是不再位於Kafka日誌中的數據?如果您切換回原始代理商,消息仍然存在? –

+0

我沒有從頭開始偏移,我正在使用commitSync.Strategy =最早的手動提交。我知道數據丟失了,因爲在日誌中我可以看到已經傳送給經紀人的消息。因此,當我在kafka主題上發佈消息時,我再次啓動了kafka代理,在消費者方面,當我調用poll方法時,我可以看到有些消息正在跳過。可能被抵消的位置發生了變化,但爲什麼或者我該怎麼做? – melihcoskun

相關問題