kafka 常用組件以及說明


kafaka 常用組件:
1,producer:消息的生產者, 自己決定哪個 partions 中生產消息, 兩種機制:hash 與 輪詢
2,consumer:通過 zookeeper 進行維護消費者偏移量, consumer有自己的消費組,不同組之間維護同一個 topic 數據,互不影響.相同組的不同 consumer消費同一個 topic,這個 topic相同的數據只被消費一次
3,broker:broker 組成 kafka 集群的節點,之間沒有主從關系, 依賴 zookeeper進行協調, broker 負責消息的讀寫與存儲, 一個 broker可以管理讀個 partions
4,topic:一類消息的總稱/消息隊里, topic是由 partions組成, 一個 topic 由多台 server 里的 partions 組成
5,zookeeper 協調 kafka broker,存儲元數據, consumer的 offset+ broker 信息 +topic信息+ partions信息
6,partions 組成 topic 的單元, 每個 topic有副本(創建 topic 指定), 每個 partions 只能有有個 broker管理
kafka的消息存儲和生產消費模型:
1,一個topic分成多個partition(就是讀寫文件),多個 partition 是為了增加並行化,也就是可以多一個consumer去連接
2,每個partition內部消息強有序,其中的每個消息都有一個序號叫offset
3,一個partition只對應一個broker,一個broker可以管多個partition
4,消息直接寫入文件,並不是存儲在內存中,根據時間策略(默認一周)刪除,而不是消費完就刪除
5,producer自己決定往哪個partition寫消息,可以是輪詢的負載均衡,或者是基於hash的partition策略
kafka的消息存儲和生產消費模型:
1,kafka里面的消息是有topic來組織的,簡單的我們可以想象為一個隊列,一個隊列就是一個topic,然后它把每個topic又分為很多個partition,這個是為了做並行的,在每個partition里面是有序的,相當於有序的隊列,其中每個消息都有個序號,比如0到12,從前面讀往后面寫。
2,一個partition對應一個broker,一個broker可以管多個partition,比如說,topic有6個partition,有兩個broker,那每個broker就管3個partition。
3,這個partition可以很簡單想象為一個文件,當數據發過來的時候它就往這個partition上面append,追加就行,kafka和很多消息系統不一樣,很多消息系統是消費完了我就把它刪掉,而kafka是根據時間策略刪除,而不是消費完就刪除,在kafka里面沒有一個消費完這么個概念,只有過期這樣一個概念
kafka 使用操作:
# 創建 topic 指定分區個數, 可以不指定 端口,使用默認
./kafka-topics.sh --zookeeper master:2181,slave1,slave2 --create --topic t0425 --partitions 3
# 查看 topic list
./kafka-topics.sh --zookeeper sr128:2181,sr129,sr130 --list
# 生產者
./kafka-console-producer.sh --topic t0425 --broker-list master:9092,slave1:9092,slave2:9092
# 消費者
./kafka-console-consumer.sh --zookeeper master:2181,slave1,slave2 --topic t0425

zookeeper 查看元數據(上述存儲的只有 v ,k 為 none 所以只會一個partition)

kafka 便簽:
1,Offset:kafka的存儲文件都是按照offset.kafka來命名,用offset做名字的好處是方便查找。例如你想找位於2049的位置,只要找到2048.kafka的文件即可。當然the first offset就是00000000000.kafka
2,每個group中可以有多個consumer,每個consumer屬於一個consumer group,通常情況下,一個group中會包含多個consumer,這樣不僅可以提高topic中消息的並發消費能力,而且還能提高"故障容錯"性,如果group中的某個consumer失效那么其消費的partitions將會有其他consumer自動接管


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM