[英]Kafka topic partitions
關於Kafka主題和分區的快速問題。 假設以下場景:
Producer1將數據寫入Topic1。
Producer2將數據寫入Topic2
Consumer1從Topic1和Topic2讀取數據。
Consumer2僅從Topic2讀取數據。
問題是:每個主題中有多少個分區? 它是否真的取決於促進並行性的消費者數量? 或者它只是一個參數設置到文件server.config? 在后一種情況下,有沒有辦法讓不同的主題內部有不同數量的分區?
首先要理解的是,主題分區是Kafka中並行性的單位。 在生產者和代理端,對不同分區的寫入可以完全並行完成。 在消費者方面,Kafka總是將一個分區的數據提供給一個消費者線程。 因此,消費者(在消費者群體內)的並行度受到消費的分區數量的限制。 因此,通常,Kafka群集中的分區越多,可以實現的吞吐量越高。
每個主題中有多少個分區? 這是可配置的。 您可以增加分區,但一旦增加,您就無法減少分區。 Apache Kafka為我們提供了alter命令來更改主題行為並添加/修改配置。 我們將使用alter命令為現有主題添加更多分區。
這是將主題'my-topic'的分區數增加到20的命令 -
./bin/kafka-topics.sh --alter --zookeeper localhost:2181 --topic my-topic --partitions 20
您可以使用describe命令驗證是否已增加分區,如下所示 -
./bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-topic
您需要為主題設置多少個分區? 請在此處閱讀這份精心編寫的文件: https : //www.confluent.io/blog/how-to-choose-the-number-of-topicspartitions-in-a-kafka-cluster/
您可以指定主題創建的分區數。 例如,您已創建具有40個分區的Topic1 。 現在你只開始一個消費者。 此消費者將被分配到您的Topic1的每個分區。
如果要增加並行度,可以在使用者組中啟動多個使用者。 例如,啟動具有相同消費者組ID的10個消費者導致每個消費者被分配到大約4個分區。
僅僅開始消費者(在消費者群體中)比消費者群體更多的消費者沒有意義 - 一些消費者會閑着。
有關更多信息,請查看官方Kafka文檔: https : //kafka.apache.org/documentation/#intro_consumers
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.