http - 物联网流式消费架构
问题描述
我在现场有一组物联网传感器,可产生 50,000 条消息/秒。我能够成功接收这些数据,对其进行转换并将其存储在传出的 Kafka 主题中。我的消费者有兴趣通过 HTTP API 使用这些消息。在这个执行阶段,我面临着一个架构决策,我希望在这个论坛上得到解答。这应该是推流还是拉流?各有什么优缺点?我的数据非常小,或多或少不会改变结构。
另外,有谁知道如何通过流式 API 在 Kafka 中公开消息?
解决方案
要以流方式在 Kafka 中公开消息,您可以查看Kafka Streams。关于它所服务的用例的一篇很好的文章在这里。有了这个,您可以将 Kafka 中的消息作为实时流使用,并将其推送到外部服务、数据库等。
关于使用拉取或推送的架构决策,这取决于该数据的下游消费者是什么以及他们希望如何使用它。例如,您在 Kafka 代理中接收到的消息被转换/聚合等,然后您有流式消费者将其写入作为 REST 服务(通过应用程序)公开的数据库。现在,这些数据的最终消费者可以将此 API 用于报告/显示等目的。如果您对最终消费者有实时交付要求,您可能会使用 websockets 等而不是轮询。
推荐阅读
- asp.net-core - 即使没有明确的 [AutoValidateAntiforgeryToken],是否也会自动添加防伪令牌?
- windows - 如何使用热键清除 Windows 命令提示符窗口中的屏幕?
- swift - SwiftUI 中子结构的计算属性未更新
- linux - 如何原子地修改不同目录(同一个磁盘)下的多个文件?
- python - 如何停止进一步输入python tkinter
- javascript - 如何在茉莉花中使用嵌套函数到达 toHaveBeenCalledTimes(9)?
- android - 无法对齐列 Jetpack 中的文本
- android - 无法反编译 React Native android apk
- python - 为什么 stripe.Charge.list 最多只能检索 100 个费用?
- go - Go:Robfig Cron 调度程序正在运行但未调用函数