我正在研究云服务来托管电子商务网站。我正在尝试理解他们如何扩展事物的一些基础知识。
从我可以从AWS,Rackspace等收集到的……
关于设置#1,你是对的,如果你在每台机器上使用负载平衡复制整个数据库,你需要担心在节点之间复制数据,这将是复杂的,会对性能产生影响,或者你我需要牺牲一致性,或者将所有内容同步到一个大型数据库,然后你就会失去群集的效果。另外请记住,当吞吐量增加时,添加额外的服务器是一种手动操作,可能需要数小时,因此您无法按需响应吞吐量。
关于设置#2,这里扩展应用程序很容易,云提供商会自动为您执行此操作,但正如您所知,数据库将成为瓶颈。如果云提供商扩展您的应用程序并且所有这些应用程序实例与同一数据库通信,您将获得更多的应用程序吞吐量,但数据库将很快耗尽容量。有人建议通过在云上建立一个MySQL集群来解决这个问题,这是一个有效的选择,但请记住,如果吞吐量突然增加,你将需要重新配置复杂的MySQL集群,你将无法自动扩展为您的数据。
另一种方法是将云数据库作为服务,两者都有几个选项 亚马逊 和 Rackspace公司 云。你提到过 RDS 但它有同样的问题,因为最终它只限于一个没有自动缩放的数据库实例。另一个MySQL数据库服务是 Xeround ,它将负载分散到多个数据库节点上,并且有一个负载均衡器可以管理这些节点之间的连接并自动同步分区之间的数据。有一个访问点和一个循环DNS,可将请求发送到数千个数据库节点。因此,这可能满足您对单个访问点和数据库可伸缩性的需求,而无需每次进行扩展操作时都需要设置集群或更改集群。
我们有一个服务器设置为应用程序服务器,我们的数据库安装在同一可用区域中AWS上的一组独立机器上(最初是三个但可扩展)。我们设置它的方式是使用“k-safe”复制。这是可扩展的,因为数据在机器上分布,并且重复,使得一台机器可以完全消失并且站点继续运行。这也允许分发查询。 (另一种配置选项是复制每台数据库计算机上的所有数据)