首页 > 解决方案 > 临时机包最佳实践

问题描述

我正在尝试建立一个好的模式来管理和分发来自自主机器的传入数据包。

这个想法是拥有 1000 多台机器,将数据包(每 5 秒少于 1 个 ko)发送到 lambda 服务器,该服务器将存储在 dynamo-db 中,我将像使用传入缓冲区一样使用它。

此 dynamodb 将由另一个服务使用,该服务将解码数据包的搜索键以将其存储在 postgresql 数据库中以供进一步使用并将数据包路由到不同的业务服务,这些服务将根据其类型完全解码数据包。

我在想什么:

  1. 机器将数据包发送到带有 machine-sn、数据包优先级(0 到 3)、数据包时间戳、数据包 ID 和数据的 lambda。仅供参考,机器存储数据包,如果连接断开,稍后再尝试发送。
  2. Lambda 存储 PK : machine-sn ; SK 复合密钥:priority-timestamp-packetid ;原始数据包
  3. 另一个服务使用 scanindexforward false 读取以按优先级 0 和时间戳检索数据包,并将其存储在单个表中的 postgresql 数据库中 [pk-uuid, ts, sn, prio, packet_ts, packet-type, raw packet, service_1_forwarded(false ), service_2_forwarded(false)]。当事务成功提交时,我们从 dynamodb 中删除存储的数据包。以此类推,如果超时时间过长,我们接受延迟降低优先级的数据包。
  4. 另一个服务,使用 service_N_forwarded = false 读取表,并完全解码数据包并将其存储在专用的业务数据库中以供进一步使用。

我看到的主要优点:

我的问题:

谢谢您的意见 :)

祝你今天过得愉快 !

标签: amazon-dynamodb

解决方案


推荐阅读