amazon-dynamodb - 临时机包最佳实践
问题描述
我正在尝试建立一个好的模式来管理和分发来自自主机器的传入数据包。
这个想法是拥有 1000 多台机器,将数据包(每 5 秒少于 1 个 ko)发送到 lambda 服务器,该服务器将存储在 dynamo-db 中,我将像使用传入缓冲区一样使用它。
此 dynamodb 将由另一个服务使用,该服务将解码数据包的搜索键以将其存储在 postgresql 数据库中以供进一步使用并将数据包路由到不同的业务服务,这些服务将根据其类型完全解码数据包。
我在想什么:
- 机器将数据包发送到带有 machine-sn、数据包优先级(0 到 3)、数据包时间戳、数据包 ID 和数据的 lambda。仅供参考,机器存储数据包,如果连接断开,稍后再尝试发送。
- Lambda 存储 PK : machine-sn ; SK 复合密钥:priority-timestamp-packetid ;原始数据包
- 另一个服务使用 scanindexforward false 读取以按优先级 0 和时间戳检索数据包,并将其存储在单个表中的 postgresql 数据库中 [pk-uuid, ts, sn, prio, packet_ts, packet-type, raw packet, service_1_forwarded(false ), service_2_forwarded(false)]。当事务成功提交时,我们从 dynamodb 中删除存储的数据包。以此类推,如果超时时间过长,我们接受延迟降低优先级的数据包。
- 另一个服务,使用 service_N_forwarded = false 读取表,并完全解码数据包并将其存储在专用的业务数据库中以供进一步使用。
我看到的主要优点:
- 我们依靠 Amazon 可扩展服务来管理传入数据。
- 如果我们有很多超时,我们可以部署另一个转发服务。
- 易于开发和维护。
- 该系统与数据包无关,直到它到达真正解码数据的业务数据库,我可以部署新版本的嵌入式软件,并在以后通过专用服务使用数据,同时不会丢失数据。
我的问题:
- 这是一种可持续的模式吗?
- 什么应该是为 dynamodb 创建 PK/SK 的聪明方法。
- 我知道亚马逊提供的物联网系统,但我更喜欢内部化这部分,以便顺利开始,好主意吗?
- 我可以使用 Lamba 服务限制来自 vpn 的传入连接吗?(机器可以通过 vpn 发送数据)。
谢谢您的意见 :)
祝你今天过得愉快 !
解决方案
推荐阅读
- oracle - PL/SQL 不打印到控制台(在 SQLDeveloper 中)
- javascript - 使用正则表达式在javascript中拆分字符串
- javascript - 地形图边缘不可见
- django - 如何在 django 中为以下查询编写等效过滤器
- javascript - 是否可以使用 Chart.js 为大量时间捕获数据制作动画?
- ios - ScrollView 中的 SwiftUI 动画不起作用
- python - ResolvePackageNotFound:在 mac OSX 上使用 conda 和 yml 文件创建环境
- html - 如何在我自己的视频 mp4 中添加响应式设计?
- javascript - 动态展开和折叠表格行
- unit-testing - 如何传递道具来测试组件?