簡體   English   中英

Kafka Topic - 過濾和發送消息

[英]Kafka Topic - filter and dispatch messages

背景

我們的軟件解決方案收集每個客戶的數據(“事件”)。
一些客戶(一小部分 ~3%)要求將這些數據輸入“他們的系統”(他們需要為這項服務付費)。
我們需要發送這些事件的目標系統可能是:

  1. AWS S3
  2. Azure 存儲
  3. 斯普倫克
  4. 數據狗
  5. 未來會有更多的目標系統......

上面的所有目標系統都有眾所周知的 Kafka Connect Sink 連接器,因此我們的想法是使用這些連接器來導出數據。

可能的解決方案

  1. 所有客戶事件都轉到一個“輸入”主題
  2. 自定義軟件使用來自 Kafka“輸入”主題的消息
  3. 該軟件查看消息屬性,並根據其中一個屬性值(我們稱之為customer_id )決定是否應該刪除消息或將消息發布到名為“< customer_id >_topic”的另一個 Kafka 主題。

目標主題可能屬於不同的集群 我知道這可以使用 Kafka Streams 輕松完成。

請注意,我知道Kafka stream 中的線程 Disperse messages

我的問題是——可以使用 Kafka Connect 和 SMT 來完成嗎?
我正在尋找一個“托管”解決方案,因為我們的 Kafka 在 AWS MSK 中運行,所以我不需要管理 Kafka Connect 集群。 使用 Kafka Streams,我必須在 EC2/ECS 上安裝我的軟件——不是嗎

目標主題可能屬於不同的集群。 我知道這可以使用 Kafka Streams 輕松完成

Kafka Streams 可以/應該只寫入同一個集群。 它不能保證交付給他人。


要將數據發送到其他集群,MirrorMaker 將是一個起點。

您可能知道, RegexRouter可以重命名主題,但它無法從記錄中提取動態字段並重命名主題 - 您需要為此編寫自己的轉換。

您還應該能夠使用Filter轉換來檢查/刪除事件,但開箱即用的這只適用於頂級字段,不適用於嵌套字段。



總的來說,我發現“每個 id”有一個主題名稱是一個糟糕的設計,假設您可能(最終)有數萬個 id。

或者,“每個客戶”管理數萬到數千個集群(或者至少用“每個客戶”的配額划分集群,盡管不確定多租戶如何處理重復的主題名稱)可能也很困難,但這基本上就是這樣MSK 或 Confluent Cloud 都在做。

暫無
暫無

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

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