Kafka 架構(gòu)
Broker : 作為一個(gè)后臺(tái)服務(wù)袍冷。
Producer和Consumer作為SDK袖迎,將SDK引入工程當(dāng)中,從外部拿數(shù)據(jù)余蟹,通過(guò)Producer的sdk發(fā)送給broker卷胯,通過(guò)Consumer的SDK將數(shù)據(jù)拿到程序當(dāng)中。
如何刷新整個(gè)集群的元信息(Producer如何維護(hù)緩存的整個(gè)集群Broker的元信息)威酒?
????Producer在向某個(gè)Broker發(fā)送消息失敗之后窑睁,會(huì)主動(dòng)觸發(fā)刷新Broker元信息
????Producer會(huì)周期性地刷新Broker緩存的信息
????Consumer如何發(fā)現(xiàn)Broker?Consumer如何選擇連接到Broker
會(huì)涉及到Topic和Partition
Topic&Partition
Topic
? ??邏輯概念葵孤,同一個(gè)Topic的消息可分布在一個(gè)或多個(gè)節(jié)點(diǎn)(Broker)上
????一個(gè)Topic包含一個(gè)或者多個(gè)Partition
????每條消息都屬于且僅屬于一個(gè)Topic
????Producer發(fā)布數(shù)據(jù)時(shí)担钮,必須指定該消息發(fā)布到哪一個(gè)Topic
????Consumer訂閱消息時(shí),也必須指定訂閱哪個(gè)Topic的消息
Partition
? ??物理概念佛呻,一個(gè)Partition只分布于一個(gè)Broker上(不考慮備份)
????一個(gè)Partition物理上對(duì)應(yīng)一個(gè)文件夾
????一個(gè)Partition包含多個(gè)Segment(Segment對(duì)用戶透明,用戶無(wú)需感知)
????一個(gè)Segment對(duì)應(yīng)一個(gè)文件
????Segment由一個(gè)個(gè)不可變記錄組成
????記錄只會(huì)被append到Segment中病线,不會(huì)被單獨(dú)刪除或者修改
????清除過(guò)期日志時(shí)吓著,直接刪除一個(gè)或多個(gè)Segment
默認(rèn)kafka會(huì)將數(shù)據(jù)保存168小時(shí)。
Sync Producer(同步Producer)
????低延遲
????低吞吐率
????無(wú)數(shù)據(jù)丟失
Aync Producer(異步Producer)
????高延遲
????高吞吐率
????可能會(huì)有數(shù)據(jù)丟失