基本上我们将缓存数据保存在 Redis 上,我们希望每隔 X 秒将其转储到 MongoDB 中。
我们在 Redis 上存储了一个排序集,将每个用户的最后一次事件保存为分数,我们希望在一段时间不活动后定期转储用户的最终状态,我们希望确保:
- 我们不会让我们的 API 服务器不堪重负(这就是它必须在工作实例上运行的原因。
- 数据转储操作非常关键 - 我们要求这些工作实例具有可扩展性和对故障的高度弹性(并且应该优雅地处理故障)。
- 我们必须确保,如果我们有 X 台机器,数据将分布在各个实例中,并且我们从 Redis 中提取的每一项都将恰好处理一次。
我想知道部署定期处理数据的 EC2 Windows 实例的最佳架构方法是什么。
我曾考虑使用 Elastic Beanstalk,因为它易于部署、扩展和监控,但我想知道是否有更好的方法。
提前致谢!
最佳答案
除了 Amazon Elastic Beanstalk 是不错选择的应用程序之外,我建议您看看 Amazon Kinesis:http://aws.amazon.com/kinesis/
那是因为您提到了“可扩展”、“弹性”、“优雅地处理故障”和“恰好一次”。在分布式系统中很难获得这些属性,而 Kinesis Streams 和 Client Library 可以在这方面提供很大帮助。
关于amazon-web-services - AWS 上依赖 Windows EC2 后台 worker 的正确架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26151410/