我正在研究云服务来托管一个电子商务网站。我正在尝试理解一些关于他们如何能够扩展东西的基础知识。
根据我从AWS、Rackspace等文档中收集到的信息:
设置1:您可以启动get服务器(AWS - EC2、Rackspace - Cloud Server)的实例。然后,您可以将该实例扩展为具有更多资源,或者制作该实例的副本以处理更多流量。似乎您可以在这些实例的本地安装一个数据库。
设置2:您可以启动EC2服务器(AWS -EC2、Rackspace - Cloud Server)的实例。您还可以启动数据库(AWS - RDS、Rackspace - Cloud Database)的实例。因此,with服务器实例可以通过单个访问点与数据库实例通信。
当我使用术语实例时,我只是在考虑可以通过单个访问点访问的副本,并且在后台跨每个副本同步数据。这可能是错误的想法,但这是我现在得到的最好的。
我能理解为什么setup 2是可伸缩的。the服务器实例根本不会改变,因为它只是源代码。因此,所有的http请求都被分发到不同的and服务器实例,并且是负载均衡的。并且数据查询具有单个访问点,然后被分发到不同的数据库实例,并且被负载平衡,并且在对应用程序/ are服务器实例透明的所有数据库实例之间同步所有数据写入。
但是对于设置1,其中每个web服务器实例中都有一个本地数据库设置,如何能够在其他web服务器实例本地的其他数据库之间同步数据?由于每个app服务器的实例无法相互通信,如何启动多个实例来扩展应用程序?这种设置主要是针对包含静态内容的站点,其中数据库中的数据不会发生更改吗?那么,对于一个将订单写入数据库的电子商务网站,这种架构是不可行的吗?或者,有没有办法让每个get服务器实例将其本地数据库更新为某个主副本?
很抱歉问了这么简单的问题。我猜文档并没有明确地说明这一点,因为它太简单了,或者我只是无法找到正确的文档/页面。
谢谢您抽时间见我!
更新:已将问题移至此处:
https://webmasters.stackexchange.com/questions/32273/cloud-architecture
发布于 2012-07-18 11:01:25
我们将一台服务器设置为应用程序服务器,我们的数据库安装在同一可用区(最初为三台,但可扩展)的AWS上的独立机器集群中。我们设置它的方式是使用"k-safe“复制。这是可扩展的,因为数据分布在多台机器上,并进行复制,这样一台机器就可以完全消失,而站点可以继续运行。THis还允许分发查询。
(另一个配置选项是复制每台数据库计算机上的所有数据)
发布于 2012-08-07 20:57:05
关于设置#1,您是对的,如果您使用负载平衡在每台计算机上复制整个数据库,您需要担心在节点之间复制数据,这将是复杂的,并且会影响性能,或者您将需要牺牲一致性,或者将所有内容同步到单个大型数据库,然后您将失去集群的效果。还要记住,当吞吐量增加时,添加额外的服务器是一项手动操作,可能需要几个小时,因此您无法按需响应吞吐量。
关于设置#2,在这里扩展应用程序很容易,云提供商会自动为您做这件事,但如您所知,数据库将成为瓶颈。如果云提供商扩展您的应用程序,并且所有这些应用程序实例都与相同的数据库通信,您将获得更多的应用程序吞吐量,但数据库将很快耗尽容量。有人建议通过在云上建立MySQL集群来解决这个问题,这是一个有效的选择,但请记住,如果吞吐量突然增加,您将需要重新配置复杂的MySQL集群,您将无法自动扩展您的数据。
另一种方法是云数据库即服务,在Amazon和RackSpace云上都有几个选项。您提到了RDS,但它也有同样的问题,因为它最终仅限于一个数据库实例,没有自动伸缩功能。另一个MySQL数据库服务是Xeround,它将负载分散到多个数据库节点上,并且有一个负载平衡器来管理这些节点之间的连接,并自动同步分区之间的数据。只有一个接入点和一个循环DNS,可将请求发送到多达数千个数据库节点。因此,这可能会满足您对单一访问点和数据库可伸缩性的需求,而不需要在每次进行缩放操作时设置集群或更改集群。
https://stackoverflow.com/questions/11533647
复制相似问题