看来,以运行 2 个大型实例的成本,我可以运行大约 40 个微实例。在分布式系统(我的情况是 MongoDB)中,40 个微实例听起来比 2 个大型实例快得多,假设两种情况下的数据库文件都在 EBS 上。
这是真的吗?
答案1
视情况而定。您假设所有查询都将在实例之间并行执行,因此尽管一个实例的速度慢了很多,但您仍然会获得巨大的速度提升。事实并非如此,http://www.mongodb.org/display/DOCS/Sharding+FAQ这取决于您运行什么类型的查询。
此外,您还需要找到一个非常非常好的分片键 - 您的分片缺乏 RAM,因此您需要非常小心以确保每个分片上没有太多数据。
最后,总的来说,请看一下 10gen 工程师的这篇博客文章http://www.snailinaturtleneck.com/blog/2010/08/09/sharding-and-replica-sets-illustrated/步骤 1:不要使用分片——MongoDB 分片是一个复杂的话题,您可能会遇到很多意外。
答案2
微型实例的调度非常粗糙,表现为非常难以预测的延迟。简而言之,微型实例可能会冻结长达一秒钟,这对事务处理不利。