我有一个服务器应用程序进行mathmath密集计算。 用户可以产生一个“进程”并轮询进度,直到计算结束。
现在我想迁移到亚马逊AWS。 我非常喜欢Auto Scaling和Elastic Load Balancing。
如果我使用Elastic Load Balancing,如何确保用户请求(进度和最终结果)停留在用于计算结果的EC2单元上。
如果没有办法做这个工作。 这可能是一个更好的方式来更新数据库,例如SimpleDB,让用户使用数据库进行进度和结果查询?
ELB有一个称为“粘性会话”的function,在会话期间,用户将(通过cookie)分配给单个实例。
另一种select是,正如你所猜测的那样,将数据存储在一个中央数据库(SimpleDB,DynamoDB,RDS等)中,让你的前端服务器检查它们。
@弗里德里希,我同意分布式解决scheme是去这里的方式,至less这是我的select;)。
通常,分布式数据库解决scheme中的所有系统组件都分布在多个服务器上,这种types的体系结构有助于提高数据库的可用性和可伸缩性,并且有助于在需要执行大量资源的操作时防止冻结。 除了分布式devise之外,一些数据库解决scheme还提供了复制function,可以执行pipe理和维护任务,而不会对数据库的可用性和性能造成不利影响。
由于您有兴趣迁移到Amazon AWS,因此我build议您查看RDS和Xeround ,它们都是EC2上可用的托pipe数据库。 我认为Xeround体系结构更加分散,可以在没有任何停机的情况下自动扩展,而我不确定RDS是否有这个选项。 无论如何,我build议你检查和比较这两个,看看哪种DB架构最适合你的需求。