簡體   English   中英

Apache Kafka主題分區

[英]Apache Kafka Topic Partitioning

我有一個用例,我將讀取一組鍵/值對,其中鍵只是一個字符串,值是一個JSON。 我必須將這些值作為JSON暴露給REST端點,我將使用kafka-streaming使用者來做。

現在我的問題是:

  1. 我如何處理Kafka分區? 我打算為消費者使用spark-streaming

  2. 制片人怎么樣? 我想以固定的間隔從外部服務輪詢數據,並將生成的鍵/值對寫入Kafka主題。 是流媒體制作人嗎?

  3. 這甚至是雇用Kafka的有效用例嗎? 我的意思是,我可以有另一個消費者組,它只是將傳入的鍵/值對記錄到數據庫中。 這正是吸引我使用Kafka的原因,讓多個消費者群體可以做不同的事情!

我認為對主題進行分區是為了增加並行性,從而提高消費者的吞吐量。 這種吞吐量與沒有分區相比如何? 我有一個用例,我必須確保訂購,所以我無法對主題進行分區,但同時我希望為我的消費者提供非常高的吞吐量。 我該怎么做呢?

有什么建議么?

試着就此分享一些想法

主題是卡夫卡的主要並行水平。 具有N分區的主題可以由N個並行線程消耗 但是,具有多個分區主要在數據排序中產生問題。 例如,如果您有N個沒有分區P並且您將生產者配置為隨機發布消息(默認行為),則在時間T1生成的消息M1可能轉到分區P1,消息M2 @ T2轉到P2,M3 @ T3轉到P2然后轉到M4再來P1。 您可以配置自定義規則以生成到特定分區的消息(使用名為Key東西),但需要在您的最后處理。

不確定你對制作人的確切含義。 通常,您可以創建觀察者來監聽這些事件,並在生產者到達時調用它們。 您也可以選擇批量發送郵件。

選擇Kafka的一個關鍵原因是兼容不同的計算引擎,如apache storm,apache spark等。但就我的理解而言,Kafka的主要目標是高吞吐量,期望數據在非常頻繁的持續時間內發布。 如果在你的情況下事件之間的間隔很高,那么在最終確定Kafka之前可能值得考慮其他可能性,因為維護空閑集群不是一個好主意。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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