地理分布的 Web 应用程序如何处理存储的数据?

Dea*_*ean 5 iis cloud web-server load-balancing

假设......我从澳大利亚登录到一个网络应用程序并更改了一些数据。在美国,我的同事正在使用相同的系统,并希望查看我更改的数据。如何在本地为澳大利亚用户部署 Web 应用程序,为美国用户本地部署(为了性能)但共享数据?

Google、Facebook 或任何其他全球系统如何为不同国家/地区的用户提高性能,但仍保持数据同步,以防用户前往不同地点或在全球范围内使用数据。或者他们实际上是否在一个位置拥有他们的数据库服务器?

San*_*nen 5

至于 Facebook、Google 等:数据库服务器并非都在一个位置,当然也不是所有时间都完全同步。它们都在不同地理区域的多个服务器集群上采用分布式系统。

集群分布在许多国家。集群之间的更新频率取决于系统正常工作的需要。

如果您使用 Facebook,例如:大多数时候您与您自己国家的朋友交流。因此,在您的国家/地区保留服务器将立即生效,您的朋友将立即看到您的消息。
其他国家的朋友可能会有延迟,这取决于集群服务器节点的更新频率。如果需要,IIRC Facebook 集群通过从其他集群请求信息进行交互。很多次我都收到一条消息,上面写着“此用户更新状态为 blah blah”。单击整个消息的链接时,我收到一条错误消息。这是集群之间的同步问题。一些信息已经同步,而另一些则没有。

您如何构建基础架构取决于有多少用户、需要同步数据的频率等。

另一个例子,电子邮件:电子邮件系统是一个遍布整个地球的分布式系统。与拥有 100 万用户的服务器相比,只有一个用户的服务器并不那么忙。您将如何解决繁忙服务器的交付问题?更分布式的本地服务器?更强大的服务器?更强大的互联网连接?上述所有的?由于电子邮件的基本概念(将消息从一个节点传递到另一个节点)不会因电子邮件用户的数量而改变,因此您需要设计特定的系统以适应所有用户。无论您如何设计您的系统,有时电子邮件会延迟交付,因为链中其他节点上的流量太多。

同样的概念也适用于 Facebook。他们为特定地区设计和建造农场,但整个系统依赖于“地理差异”。也就是说,与其他地区相比,您更有可能与您所在地区的用户进行互动。

至于你的具体问题:这完全取决于有多少用户。
单个数据库服务器(或集群服务器)可能适合您。如果需要分布式集群服务器群,那么您可能必须像 Facebook 和 Google 那样编写自己的同步系统。此解决方案取决于您的用户需要什么以及系统的工作方式。我不知道有任何标准化系统是“适用于所有人”的解决方案。

我已经在这里咆哮了很多,现在已经很晚了,我可能完全偏离了目标,但是嘿,这是我的 2 美分。

干杯!