簡體   English   中英

Kafka主題分區

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM