gpt4 book ai didi

database - 使用 NATS Streaming Server 作为物联网位置数据的主要数据存储?

转载 作者:搜寻专家 更新时间:2023-10-30 23:32:28 25 4
gpt4 key购买 nike

我有一个从远程设备接收定位信息的 Mosquitto 代理。

我需要将这些数据存储在某个地方以供其他微服务处理。

目前有Node.js进程订阅broker,批量写入Postgres数据库。

Devices -> Mosquitto -> DB writer -> (source-of-truth) Postgres

(source-of-truth) -> Service A
-> Service B

但我看到的问题是现在任何其他需要处理此位置数据的服务都需要查询 Postgres 数据库。

约束:这是针对内部部署的,因此理想情况下我们希望维护尽可能少。一个带有数据库的虚拟机,可能还有一个指向客户维护的数据库的链接。

作为传感器数据真实来源的数据库替代方法是类似 Kafka 的事件日志/事件溯源方法。然后将有一个订阅者到代理,所有微服务都可以从中读取,并在它们出现故障时从中断处继续。

因为它是内部部署的,所以我想要比 Kafka 更轻量级的东西,并且找到了 NATS Streaming Server。

现在,可以通过使用数据存储配置 NATS 事件日志来持久化它。它目前支持简单的文件存储和 SQL 存储。

现在,如果我使用 SQL 存储,将原始消息存储到数据库、从数据库读取然后再次存储它们似乎是在浪费时间,而且对性能不利。 SQL 存储接口(interface)也有自己的批处理实现。我也不确定我有多信任文件存储作为真实来源。

那么,这是一种可行的方法吗?

最佳答案

您可以通过使用 MaxInflight 和 ManualAckMode 创建订阅,在 NATS Streaming 中“按批处理”使用消息。在没有收到来自客户端的相应消息确认之前,服务器不会发送超过 MaxInflight 的消息。

如果你需要在存储前做转换,我理解你的过程。但是,如果您只是不信任来自 NATS Streaming 服务器的 FileStore 或 SQLStore,那么您为什么要首先使用 NATS Streaming?也就是说,这些商店是由编写 NATS 流服务器的同一个人(包括我)实现的;-)

关于database - 使用 NATS Streaming Server 作为物联网位置数据的主要数据存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47530962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com