【发布时间】:2018-10-03 16:57:43
【问题描述】:
我是微服务和事件溯源方面的新手,我正试图找出一种在 AWS 上部署整个系统的方法。
据我所知,实现事件驱动架构有两种方法:
- 使用 AWS Kinesis 数据流
- 使用 AWS SNS + SQS
所以我的基本策略是将每个命令转换为存储在 DynamoDB 中的事件,并利用 DynamoDB 流向其他微服务通知新事件。但是怎么做?我应该使用前两种解决方案中的哪一种?
第一个有以下优点:
- 消息排序
- 至少一次交货
但是缺点还是挺成问题的:
- 没有内置的自动缩放功能(您可以使用触发器来实现)
- 没有消息可见性功能(显然是要求确认)
- 没有主题订阅
- 非常严格的读取事务:您可以使用我阅读的here 中的多个分片来改进它,您必须具有未明确定义的具有不同调用优先级的 lamda 数量,并且未明确定义策略以避免跨多个实例重复处理相同的微服务。
第二个的优点是:
- 完全托管
- 非常高的 TPS
- 主题订阅
- 消息可见性功能
缺点:
- SQS 消息是尽力排序的,但仍然不知道它们的含义。 它说“标准队列会尽最大努力保持消息的顺序,但消息的多个副本可能会乱序传递”。 这是否意味着给消息的 n 个副本,与其他消息的副本相比,第一个副本是按顺序传递的,而其他副本是无序传递的?或者“更多”可能是“全部”?
非常感谢您的各种建议!
【问题讨论】:
标签: amazon-web-services microservices event-sourcing event-driven