【问题标题】:Kafka Event Router: Filtering and Content based Routing, how?Kafka事件路由器:过滤和基于内容的路由,如何?
【发布时间】:2021-10-03 09:47:45
【问题描述】:

数据在 Kafka 的 chat.* 主题中可用。 我们可以只启动多个消费者,然后将所有内容挂钩到这个单一事件中以供消费。

但是,并非所有产品都希望处理主题中的完整事件。我们希望根据 topic 中记录的内容,将 topic 分支为多个 topic。如何在 Kafka 中执行基于内容的路由?

Kafka Streams 非常适合 Java 应用程序,但我们需要一个跨公司、适用于多种语言的多堆栈解决方案?

我们正在为 Kafka 寻找一种事件路由器。 AWS 事件桥就是这样做的!但它不是卡夫卡。你如何在 Kafka 中进行这种基于内容的路由?

有什么建议吗?

【问题讨论】:

  • 生产到主题时需要路由吗?还是从topic中消费,然后分别过滤处理?
  • 每个需要事件的产品都应该只获取单独主题中的事件子集。我是否需要编写一个路由器,其他消费者会在哪里订阅,或者在 Kafka 中是否有更好的方法来做到这一点?
  • 假设您参数化和打包/容器化一个将路由/过滤主题的 Kafka Streams(或 MirrorMaker)应用程序,它使用什么语言真的很重要吗?最终,这种“每个服务模型一个主题”将停止干净地扩展,例如,如果服务子集托管在同一个代理上,并且这些服务下降
  • @Cricketeer 他没有谈论他的代理部署架构,不太明白为什么它不能扩展?对于您的示例有 3 个副本,ha 部署,应该可以工作,您能详细说明一下吗?
  • 是的,我为 Kafka 设置了 HA。复制将发生在多个节点上。

标签: events apache-kafka publish-subscribe observer-pattern event-driven-design


【解决方案1】:

ksqldb 是 Confluent 解决此问题的开源解决方案。

它建立在 Kafka Streams 之上。它有一个类似于 DSL 的 SQL,可以使以下流连接成为可能。它还有一个 HTTP API,可以直接查询。

  • 支持过滤和流连接。
    • 流-流连接(窗口连接)
    • 流表连接(流丰富)
    • 表-表连接(物化视图)
  • 声明性查询语言指定如何从现有流和表创建派生流。 (KSQL) 用于指定查询以创建派生流的 API。 (KSQL 数据库 API)

KSQL DB 现在也支持添加源连接器。这看起来棒极了!打算试试看。

KSQL DB 的使用方法如下:

【讨论】:

    猜你喜欢
    • 2017-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多