【问题标题】:Is it me or are DynamoDb Streams just really lacking?是我还是 DynamoDb Streams 真的缺乏?
【发布时间】:2021-06-03 09:47:27
【问题描述】:

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

不过,我想我可以为此使用 DynamoDb 流;在使用 Spring Kinesis Streams Binder 经历了许多障碍之后(例如,它需要创建 2 个表 [SpringIntegrationMetadataStoreSpringIntegrationLockRegistry]),我的公司不允许动态创建表格(所以这很有趣,因为我在文档中找不到任何提及 - ????‍♀️也许我错过了)。现在我想我发现只有1 application can listen to a Kinesis stream at a time?

这是真的吗?

有没有办法

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

【问题讨论】:

    标签: spring-cloud spring-cloud-stream amazon-kinesis amazon-dynamodb-streams


    【解决方案1】:

    例如事实上它需要 2 个表 [SpringIntegrationMetadataStore & SpringIntegrationLockRegistry]

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

    现在我想我发现一次只有 1 个应用程序可以收听 Kinesis 流?

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

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

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

    【讨论】:

    • 感谢您的回复!所以我对表格的主要“问题”(无论是 Binder 的 2 还是 KCL 的 1)是我在文档中没有真正看到任何提及它。所以我花了一段时间才弄清楚这就是它不起作用的原因。正如我提到的,我的公司不允许动态表创建,因此必须通过 Terraform 事先创建。有趣的是,如果每个应用程序实例都有自己的组,那么它可以收听更新吗?谢谢你的链接,我去看看!
    • 不确定您对文档的含义。确实在这里:github.com/spring-cloud/spring-cloud-stream-binder-aws-kinesis/…
    • 感谢您的帮助,不想争论文档质量,事后看来,信息就在那里。有了你的指点,我现在有了工作代码。 ?
    • 好。是时候考虑这个了:stackoverflow.com/help/someone-answers?
    猜你喜欢
    • 1970-01-01
    • 2012-02-29
    • 2012-10-09
    • 2012-02-04
    • 1970-01-01
    • 2012-01-06
    • 1970-01-01
    • 2011-03-22
    • 1970-01-01
    相关资源
    最近更新 更多