我正在开发一个项目,该网站(所有组件都在Azure中托管)将同时拥有美国和国际用户。我们使用Blob和Table存储来获取99%的数据。我不明白的是如何设置全局实例,包括多个表等,并保持所有内容同步。假设用户从法国登录该站点,我怎样才能确保他们始终访问同一个数据中心(这意味着相同的存储实例)?如果他们遇到不同的存储实例,他们的数据就不会存在和/或陈旧。
答案 0 :(得分:1)
计算和存储都与特定数据中心相关联。没有全局计算或全局存储部署概念。
话虽如此:您通常会在单个数据中心托管面向人的应用(例如网络应用)。通常,如果只有相对较少量的数据在两者之间移动,浏览器和服务器之间的延迟就不是问题。大多数带宽通常在Web服务器和应用服务器和/或数据库实例之间。在Azure中,数据不一定需要与Web应用程序位于同一数据中心(尽管从延迟+出口带宽成本的角度来看,这是理想的情况)。
如果您想要在多个数据中心中进行计算,则需要使用更高级别的机制为您执行某种类型的负载平衡(例如Azure的流量管理器)。但是,即使使用交通管理器的“最接近”设置,您也无法确保法国用户能够访问W. Europe与N. Europe数据中心。您总是需要计划访问任何数据中心的访问者。这就是为什么在单个数据中心处理Compute要简单得多。
关于数据:如果您的Compute位于单个数据中心,则无需(除了灾难恢复)将数据写入多个数据中心。如果您做决定将Compute部署到多个数据中心,则需要您自己的方法来同步数据。对于Azure blobs&在表存储中,您可以考虑某些类型的命令模式(例如CQRS),其中您的操作是由队列驱动的。这允许您处理跨不同数据中心的多个存储帐户的每个排队数据操作。
现在,您可能存在数据主权问题,其中数据必须基于其地理位置针对特定客户驻留在特定数据中心。同样,您需要在应用层中实现此功能。对此的一个想法是在设置时将用户与特定数据中心联系起来(并将数据中心映射与您的Web层一起存储在单个数据库中)。此时,当访问者登录时,您可以轻松查找其正确的数据中心,并在其浏览会话中从特定数据中心访问其数据。