javascript - AWS 中是否有全局变量的真正替代品?
问题描述
我们有一个 lambda 函数,它访问一个外部资源,对于给定的 id,该资源只能一次执行一次。例如,对于 id=1 和 id=2 可以同时执行,但对于 id=1 和 id=1 不能同时执行。
为了使用 Node 应用程序实现这一点,我们将为每个 id 设置一个内存状态,它可以在使用资源时立即锁定,然后在不使用时再次解锁。
不幸的是,由于缺乏全局变量,这一概念在 AWS 中极难实现。我们考虑过:
- 使用 lambda 并发 1 / SQS 队列一次处理一个 - 不起作用,因为并发不严格限制为 1,它是每组 1
- 在 DynamoDB 中存储一个值 - 不确定这是否有效,因为 DDB 似乎没有(m)任何锁定选项。有一些东西,但看起来它只是 Java,我们是一个 JavaScript 团队。
- 建立一个带锁定的关系数据库——也许是可能的,但对我们来说这将是一个新的技术堆栈,并且对于实现如此简单的事情感觉非常复杂
这是我们第二次遇到这样的障碍,感觉就像是平台的弱点。谁能建议一种方法来实现这一目标?
解决方案
使用 lambda 并发 1 / SQS 队列一次处理一个 - 不起作用,因为并发不严格限制为 1,它是每组 1
如果您设置一个 FIFO SQS 队列并发送重复数据删除 ID 设置为您的唯一 ID 的消息,您将使用 SQS 实现锁定。
更多关于它:
推荐阅读
- docker - 当 --enable-feature=promql-at-modifier 使用 docker 运行 Prometheus 失败
- linux - splitmuxsink 元素 [Gstreamer 1.18] 不分割视频
- sql - SQL OpenQuery 与使用括号链接的 Oracle 数据库
- reactjs - okta-auth-js Uncaught TypeError: Super expression must be null or a function
- .net - 如何在 Ironpython 中将 .net 对象 ExpandoObject 类型转换为 IDictionary?
- reactjs - 开玩笑useContext返回值函数不是函数
- java - 如何将组件的显示视觉效果转移到 Harmony OS 中的临时画布?
- css - 在 CSS Grid 中只移动一项
- hibernate - 如何将类的属性定义为地图的键?
- typescript - TypeScript:对象或对象