是我还是真的缺少 DynamoDb Streams?

Is it me or are DynamoDb Streams just really lacking?

我在 AWS 的多个区域有一个应用程序 运行,该应用程序从全局 DynamoDb table(s) 中读取。更新通过另一个进程在后台发生,我希望能够监视这些更新,以便应用程序可以使其缓存无效(我没有使用 DAX)。

不过,我想我可以为此使用 DynamoDb 流;在使用 Spring Kinesis Streams Binder 经历了一些障碍之后(例如,它需要 2 tables [SpringIntegrationMetadataStore & SpringIntegrationLockRegistry] 被创建,我的公司不允许动态创建 tables(所以这很有趣,因为我找不到任何提及在文档中 - ‍♀️ 也许我错过了)。现在我想我发现只有 ?

是真的吗?

有没有办法

有没有一种方法可以让仅从 DynamoDb 读取的多个应用程序在发生更新时得到通知?我在想我可以使用 DynamoDb Streams 这样每个应用程序都可以监视流的更新并能够使它们的缓存无效。如果上述情况属实,那么我需要做一些更复杂或更复杂的事情(使用 SNS/SQS 进行更新、elasticache、Redis、Kafka),这对于这种情况来说似乎有点矫枉过正。

e.g. the fact that it requires 2 tables [SpringIntegrationMetadataStore & SpringIntegrationLockRegistry]

好吧,这就是 Spring Cloud Stream Kinesis Binder 处理消费者组的方式。即使您只使用 KCL,在 DynamoDB 中它仍然需要额外的 table。因此,您的担忧听起来更像是对您使用的云服务缺乏信心。

Now I think I have found out that only 1 application can listen to a Kinesis stream at a time?

如果您的所有消费者应用程序都针对不同的消费者群体进行了配置,则情况并非如此。

请熟悉 Spring Cloud Stream 及其模型:https://docs.spring.io/spring-cloud-stream/docs/3.1.1/reference/html/spring-cloud-stream.html#_main_concepts

可能可以通过 AWS Lambda 触发器为 DynamoDB 流完成另一种方法:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Streams.Lambda.html