kafka的結構如下:
一、生產者
1、生產者(Producer)使用send方法 發送消息是異步的,所以可以通過get方法或回調函數拿到調用的結果。如果失敗了,可以重試。
重試次數可以稍微大些,比如5次。間隔可以稍微長些。
二、消費者:
基礎概念:當消息被追加到分區(partition)時,會為其分配一個偏移量(offset)。這個偏移量可以記錄consumer消費到這個patition的哪個位置。
所以:kafka是通過偏移量(offset)來保證消息在某個分區的順序的。
1、解決消費端丟失數據:關閉自動提交offset,等消費者處理完成后再手動提交offset。
2、kafka的partition有多副本機制,其中一個為leader,別的稱之為follower。消息到了之后先存在leader,follower副本再去leader拉取同步,這樣生產者和消費者都只和leader交互,follower副本是leader副本的備份,保證數據存儲的安全性。
除此之外如果leader所在的broker掛了,那么會在follower之間選一個leader。