我有一个充当数据层的应用程序,负责对数据库执行所有CRUD操作。由于可用性问题,我们在其上维护Redis缓存,该缓存最终将充当辅助数据源。击中主要数据源通常会导致节流和延迟问题。
某些操作也会基于发布到数据库的更新而触发。
我正在尝试从数据访问层到serverless architecture提取辅助数据源更新和基于这些更新触发的操作。
步进功能最适合上述用例吗?还是我应该考虑不同的体系结构?
答案 0 :(得分:0)
基于您提出的架构,如下所示,我认为没有必要使用步进功能。
我将使用SNS向多个SQS队列散发更新:
我看不到在这里使用“步骤功能”的原因,因为SQS确保每个消息至少被处理一次。
+----------+
+---->Primary DB|
| +----------+ +----------------+ +------------+ +-----+
+ | | | | | |
Change +-----> SQS-Queue #1 +------> Lambda +---->Redis|
+ | | | | | | |
| | +----------------+ +------------+ +-----+
| +-----------+
| | |
+----> SNS |
| |
+-----------+
| +----------------+
| | |
+-----> SQS-Queue #2 | <------ Clients
| |
+----------------+
我认为SNS可能更适合向您的客户端推送更新,因为SQS是基于请求的。