Kafka簡介:
Kafka是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng)腹纳,它可以處理消費(fèi)者規(guī)模的網(wǎng)站中的所有動作流數(shù)據(jù)痢掠。這種動作(網(wǎng)頁瀏覽驱犹,搜索和其他用戶的行動)是在現(xiàn)代網(wǎng)絡(luò)上的許多社會功能的一個關(guān)鍵因素。這些數(shù)據(jù)通常是由于吞吐量的要求而通過處理日志和日志聚合來解決足画。
Kafka數(shù)據(jù)丟失原因:
可能是設(shè)置offset為自動定時提交雄驹,當(dāng)offset被自動定時提交時,數(shù)據(jù)還在內(nèi)存中未處理淹辞,此時剛好把線程kill掉医舆,那么offset已經(jīng)提交,但是數(shù)據(jù)未處理象缀,導(dǎo)致這部分內(nèi)存中的數(shù)據(jù)丟失
Kafka數(shù)據(jù)丟失問題解決方案:??????????????????????????????????????
首先對kafka進(jìn)行限速蔬将, 其次啟用重試機(jī)制,重試間隔時間設(shè)置長一些央星,最后Kafka設(shè)置acks=all霞怀,即需要相應(yīng)的所有處于ISR的分區(qū)都確認(rèn)收到該消息后,才算發(fā)送成功莉给。
Kafka數(shù)據(jù)重復(fù)原因:
原因1:強(qiáng)行kill線程毙石,導(dǎo)致消費(fèi)后的數(shù)據(jù)廉沮,offset沒有提交。
原因2:設(shè)置offset為自動提交
Kafka數(shù)據(jù)重復(fù)問題解決方案:
把kafka消費(fèi)者的配置enable.auto.commit設(shè)為false徐矩,禁止kafka自動提交offset滞时,從而使用spring-kafka提供的offset提交策略。spring-kafka中的offset提交策略可以保證一批消息數(shù)據(jù)沒有完成消費(fèi)的情況下滤灯,也能提交offset坪稽,從而避免了提交失敗而導(dǎo)致永遠(yuǎn)重復(fù)消費(fèi)的問題。
Kafka0.9版本新特性:
Kafka 0.9+增加了一個新的特性 Kafka Connect,可以更方便的創(chuàng)建和管理數(shù)據(jù)流管道鳞骤。它為Kafka和其它系統(tǒng)創(chuàng)建規(guī)墓羝可擴(kuò)展的、可信賴的流數(shù)據(jù)提供了一個簡單的模型弟孟。
通過 connectors可以將大數(shù)據(jù)從其它系統(tǒng)導(dǎo)入到Kafka中贝咙,也可以從Kafka中導(dǎo)出到其它系統(tǒng)。
Kafka Connect可以將完整的數(shù)據(jù)庫注入到Kafka的Topic中拂募,或者將服務(wù)器的系統(tǒng)監(jiān)控指標(biāo)注入到Kafka庭猩,然后像正常的Kafka流處理機(jī)制一樣進(jìn)行數(shù)據(jù)流處理。
而導(dǎo)出工作則是將數(shù)據(jù)從Kafka Topic中導(dǎo)出到其它數(shù)據(jù)存儲系統(tǒng)陈症、查詢系統(tǒng)或者離線分析系統(tǒng)等蔼水,比如數(shù)據(jù)庫、 Elastic Search录肯、 Apache Ignite等趴腋。
KafkaConnect有兩個核心概念:Source和Sink。 Source負(fù)責(zé)導(dǎo)入數(shù)據(jù)到Kafka论咏,Sink負(fù)責(zé)從Kafka導(dǎo)出數(shù)據(jù)优炬,它們都被稱為Connector。
kafkaConnect通過Jest實(shí)現(xiàn)Kafka對接Elasticsearch