我目前有一个专用的 Web 和数据库服务器在数据中心 (DC) 1 中运行。我即将在数据中心 2 中扩展另一个 Web 服务器,该服务器将与 DC 1 中的数据库通信。
两个数据中心之间的延迟约为 2-5 毫秒。这对于高流量网站(每天有 400,000 多名访问者)来说合适吗?
答案1
也许吧(TM)。这肯定不会提高您的性能,而且我会担心我的机器会这样分散,因为它可能会引入故障模式,但这可能不是您最大的性能问题。
另一方面,托管服务提供商在受到压力时的能力令人惊叹,所以我会告诉你的提供商,他们提出的解决方案无法满足你的需求,如果他们无法在与你现有机器相同的网络中提供另一台服务器,那么你就会将业务转移到其他地方。他们很可能会奇迹般地在附近找到一些空间。
答案2
我认为 2-5ms 还不算太糟糕。不过,这还取决于您的应用程序如何处理数据库调用。
不过更有趣的是,容错,您可能希望在 DC2 中设置相同的解决方案,这样您在两个数据中心中都有一个数据库服务器,这样您就可以在一个数据中心中快速从任何灾难中恢复。 2-5ms 的延迟对于数据库复制来说非常合适,如果您使用 mySQL,您甚至可以设置多主复制并在 Web 服务器和最近的数据库服务器之间获得更好的性能
虽然迫使服务提供商承诺可接受的性能水平并没有错,但您也需要“面对事实”。如果数据中心相距 300 公里,那么前 2 毫秒只是因为光纤 WAN 线路的速度都无法超过光速(大约 300.000 公里/秒)。ping 时间是往返时间,因此 300 公里实际上意味着行驶 600 公里(单程 300 公里)所需的时间。以光速行驶需要 2 毫秒,而没有托管服务提供商可以篡改像光速这样的物理常数
答案3
实际上不可能回答您的问题——您没有提供对您网站的影响的任何测量,也没有定义您的性能目标是什么。
但有一点很重要:许多Web 应用程序框架使用阻塞读取策略即当 webapp 框架进行 SQL 查询时,操作系统会将有问题的 webapp 线程标记为繁忙。因此,您可以在您的前端由于增加了 SQL 查询延迟,服务器数量显著增加。
一些 Web 应用框架(例如 ASP.NET MVC)提供了异步输入/输出接口,这可以缓解上述问题。但默认情况下不使用异步 I/O,并且重新构建站点代码以使用此功能几乎肯定会过于昂贵。
为什么不将旧服务器迁移到新的 DC,并为新 DC 中的所有服务器设置一个良好的私有 VLAN?
答案4
在我看来,这个数字似乎有点高,虽然我的数据库位于不同的网络上,但它们始终位于同一物理位置,因此延迟不是问题。根据您平均为每个请求处理的查询数(以及您在 Web/应用程序层执行的缓存量),这个数字可能会真正开始增加。我希望在模拟适合您的使用模式的负载时对此进行彻底测试。
您在不同的数据中心设置 Web 服务器有什么原因吗?如果是为了冗余,那么设置一个到数据中心 2 的另一个本地数据库的复制方案可能更合适。