我正在研究托管电子商务网站的云服务。我正在尝试了解一些关于它们如何扩展事物的基础知识。
从我可以从 AWS、Rackspace 等文档中收集到的信息:
设置 1:您可以获得一个网络服务器(AWS - EC2,Rackspace - 云服务器)的实例。然后,您可以扩展该实例以拥有更多资源或制作该实例的副本以处理更多流量。似乎您可以在这些实例本地安装数据库。
设置 2:您可以启动网络服务器(AWS - EC2,Rackspace - 云服务器)的实例。您还可以启动数据库(AWS - RDS、Rackspace - 云数据库)的实例。因此,网络服务器实例可以通过单个访问点与数据库实例进行通信。
当我使用术语实例时,我只是在考虑可以通过单个访问点访问的副本,并且数据在后台在每个副本之间同步。这可能是错误的心理形象,但这是我现在得到的最好的。
我可以理解设置 2 的可扩展性。Webserver 实例根本不会改变,因为它只是源代码。所以所有的 http 请求都被分发到不同的 webserver 实例并且是负载均衡的。并且数据查询具有单个访问点,然后分布到不同的数据库实例并进行负载平衡,并且所有数据写入在对应用程序/网络服务器实例透明的所有数据库实例之间同步。
但是对于设置 1,在每个 Web 服务器实例中本地都有一个数据库设置,数据如何能够在其他 Web 服务器实例本地的其他数据库之间同步?由于每个网络服务器的实例不能相互通信,你如何启动多个实例来扩展应用程序?此设置是否主要用于具有静态内容且数据库内的数据未更改的站点?那么对于一个将订单写入数据库的电子商务网站,这种架构是不可行的吗?或者有没有办法让每个网络服务器实例将他们的本地数据库更新到某个主副本?
对不起这么简单的问题。我猜文档并没有说得很清楚,因为它太简单了,或者我只是找不到正确的文档/页面。
感谢您的时间!
更新:将问题移至此处:
https://webmasters.stackexchange.com/questions/32273/cloud-architecture