【发布时间】:2019-12-14 15:43:32
【问题描述】:
关于使用外部数据丰富消息有几个问题,建议几乎总是相同的:ingest external data using Kafka Connect and then join the records using state stores。尽管它适用于大多数情况,但还有一些其他用例不适用,例如 IP 到位置和用户代理检测等。
使用基于 IP 的位置丰富消息通常需要lookup by a range of IPs,但目前没有提供这种功能的内置状态存储。对于用户代理分析,如果您依赖第三方服务,您除了执行外部调用之外别无选择。
我们花了一些时间思考这个问题,并提出了在支持范围查询的数据库(如 Postgres)上实现自定义状态存储的想法。我们还可以在状态存储后面抽象出一个外部 HTTP 或 GRPC 服务,但我们不确定这是否是正确的方法。
从这个意义上说,当您在流处理过程中无法避免查询外部服务但仍必须保证容错时,推荐的方法是什么?当状态存储在检索数据时发生错误(例如,请求失败)时会发生什么? Kafka Streams 是否重试处理消息?
【问题讨论】:
-
“在状态存储后面抽象一个外部 HTTP 或 GRPC 服务” - 这不是交互式查询的作用吗?
-
IQ 允许您将数据从商店获取到您的应用程序中——问题是关于将外部数据获取到
Processor。
标签: apache-kafka apache-kafka-streams