繁体   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