一、架構圖
Broker:一臺 kafka 服務器就是一個 broker。一個kakfa集群由多個 broker 組成。一個 broker 可以容納多個 topic。
Producer:消息生產者,就是向 kafka broker 發消息的客戶端
Consumer:消息消費者,向 kafka broker 取消息的客戶端。
Topic:可以理解為一個隊列,一個 Topic 又分為一個或多個分區。一個topic可以有多個partition,每個partition可以有多個副本,一般是3個,副本分leader、follower角色
Consumer Group:這是 kafka 用來實現一個 topic 消息的廣播(發給所有的 consumer)和單播(發給任意一個 consumer)的手段。一個 topic 可以有多個 Consumer Group。
Partition:為了實現擴展性,一個非常大的 topic 可以分布到多個 broker上,每個 partition 是一個有序的隊列。partition 中的每條消息都會被分配一個有序的id(offset)。將消息發給 consumer,kafka 只保證按一個 partition 中的消息的順序,不保證一個 topic 的整體(多個 partition 間)的順序。
Offset:kafka 的存儲文件都是按照 offset.kafka 來命名,用 offset 做名字的好處是方便查找。例如你想找位于 2049 的位置,只要找到 2048.kafka 的文件即可。當然 the first offset 就是 00000000000.kafka。
Kafka 是如何做到消息的有序性?
kafka 中的每個 partition 中的消息在寫入時都是有序的,而且單獨一個 partition 只能由一個消費者去消費,可以在里面保證消息的順序性。但是分區之間的消息是不保證有序的。
kafka消費策略
kafka的三種語義
kafka為什么吞吐很大