[英]Kafka topic per producer
假設我有多個設備。 每個設備都有不同類型的傳感器。 現在我想將每個傳感器的每個設備的數據發送到 kafka。 但我對 kafka 主題感到困惑。 用於處理這些實時數據
每個設備都有 kafka 主題並且來自該設備的所有傳感器都將數據發送到特定的 kafka 主題是否好,或者我應該創建一個主題並讓所有設備將數據發送到該主題。
如果我采用第一種情況,我們將為每個設備創建主題,然后,
設備 1(傳感器 A、B、C)-> 主題 1
設備 2(傳感器 A、B、C)-> 主題 2
Case 2: where, 向一個topic發送數據
設備 1(傳感器 A、B、C)、設備 2(傳感器 A、B、C)....設備 N....-> 主題
這不會成為數據的瓶頸嗎? 由於它將表現為來自某個傳感器的隊列數據將遠遠落后於隊列並且不會被實時處理。
這個模型會縮放嗎?
編輯
假設每個設備都與用戶相關聯(多對一)。 所以我想根據設備處理數據。 所以我想處理數據的方式是,每台設備及其傳感器數據經過一些處理后都會發送給用戶。
說我在關注
設備 1
-> 傳感器 A - 主題 1 分區 1
-> 傳感器 B - Topic1 Part 2
設備 2
-> 傳感器 A - Topic2 分區 1
-> 傳感器 B - Topic2 分區 2
我想要一些發布/訂閱類型的行為。 由於可以添加或刪除設備,因此也可以添加或刪除傳感器。 有沒有辦法動態創建這些主題和分區。
如果不是 kafka,什么 pub/sub 會適合這種行為。
這取決於您的語義:
例如,如果您有不同類型的傳感器收集不同的數據,您應該為每種類型使用一個主題。
由於可以添加或刪除設備,因此也可以添加或刪除傳感器。 有沒有辦法動態創建這些主題和分區。
如果設備元數據(用於區分日期來自何處)嵌入在每條消息中,則您應該使用具有多個分區的單個主題來橫向擴展。 添加新主題或分區是可能的,但必須手動完成。 對於添加新分區,問題可能是它可能會更改您的數據分布,從而可能會破壞語義。 因此,最佳實踐是從一開始就對主題進行過度分區以避免添加新分區。
如果沒有嵌入的元數據,您將需要多個主題(例如,每個用戶或每個設備)來區分消息來源。
作為替代方案,可能具有多個分區的單個主題和從設備/傳感器到分區的固定映射——通過使用自定義分區器——也可以工作。 對於這種情況,添加新分區沒有問題,因為您可以控制數據分布並保持其穩定。
更新
有一篇博客文章討論了這個: https : //www.confluent.io/blog/put-several-event-types-kafka-topic/
我會創建基於傳感器的主題和基於設備的分區:
A sensor on Device 1 -> topic A, partition 1.
A sensor on Device 2 -> topic A, partition 2.
B sensor on Device 2 -> topic B, partition 2.
等等。
我不知道你有什么樣的傳感器,但它們似乎在語義上屬於同一組數據。 在分區的幫助下,您可以進行並行處理。
但這取決於您希望如何處理數據:一起處理傳感器還是處理設備更重要?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.