我有多个lambda函数,一个文件要经过这些lambda函数进行处理,并且我想将每个计算的状态存储在计数器中,以便更好地记录和监视。

当前的计划是像这样记录它:

file-name  Lambda1  Lambda2 Lambda3
Name1      Done     Done    In-process


而且,我将在文件的相应Lambda函数下将值更新为ReceivedIn-processDone

因此,有两个疑问:



这是一个好习惯吗?如果没有,那么有没有更好的替代品呢?
如果有的话,那么哪家做得更好/更便宜呢? RDS还是DynamoDB?


#1 楼

为什么不像Redis这样的东西? (可以通过ElastiCache使用它)。不知道该项目的操作要求就很难回答。此数据是严格用于记录/研究的,还是可操作的(即,为了了解要调用哪个lambda而参考了该“表”)。 。 Dynamo具有非常好的可扩展性,可以为您提供有保证的吞吐量。但是,如果您的流量可以在整个小时内增长10倍(尖峰),则Dynamo可能太昂贵了,因为您需要配置最大的吞吐量,否则就会受到限制。
您选择的实例类型,因此它可以处理较大的峰值,但最终不如Dynamo那样可伸缩。再次,我会考虑使用Redis,因为它很简单(好像您只需要一个KV /柜台商店),以及令人难以置信的速度/效率。如果仅用于日志记录,可能就足够了。

#2 楼

对于问题1)

我认为在SoftwareEngineering SE上可能会得到更好的回答。

尽管如此,我还是要冒险回答:对于来自这种架构(分布式)的此类信息(状态),我建议使用事件源。如果有人尝试使用传统的数据库范式,它消除了分布式系统的性质所带来的复杂性和许多麻烦。要知道哪种更好,更便宜,我们需要更多地了解您的用例。

#3 楼

费用将取决于您每秒写入的消息数。通常,DDB更便宜。如果您有很高的吞吐量(每秒10k个请求),则需要相对于RDS仔细考虑您的DDB成本。

但是,在这种情况下,我实际上建议使用S3输出您的日志消息到一个文件。从技术上讲,我认为这将是一种足够好的溶质蛋白,与DDB或RDS相比,其设置和维护成本仅为一小部分。