维护大型网站

Maintaining a large website

当我更新网站时,我只是用新文件替换内容。

大型网站如何更新其内容?当成千上万的访问者正在查看该站点时。

如何做的例子,Facebook或Twitter是怎么做的?数以千计的开发人员在网站上工作,数以百万计的访问者。他们是在复制网站然后切换 DNS 吗?他们在使用 Git 吗?

他们都在使用 Git、SVN 等版本控制系统。因此他们可以在不同职能的团队中工作,并推送和审查提交以在实时环境中被拉取(拉取请求)。此外,大网站也有非常大的测试基础设施。

蓝绿是一种广泛使用的部署策略,可以避免停机。

首先,您需要一个 router/load 平衡器,它可以将对虚拟 IP 的请求转发到实际机器。在我工作的地方,我们使用 F5.

您还必须有两个生产环境,称为 "blue" 和 "green"。

任何时候只有一个是"live"。 我的意思是,您的路由器必须将所有传入请求转发到 "blue" 环境、 "green" 环境。

假设 "green" 已上线,您需要将应用的新版本发布到生产环境。

  1. 您将新的 content/application 部署到您的 "blue" 环境(请记住,这里没有路由请求,因此环境是 "offline")
  2. 然后测试 "blue" 环境并确保在上线前一切都已正确部署。
  3. 然后您更改路由器以将所有请求转发到新的稳定 "blue" 环境。

如果在上线后您发现有一个错误,只需再次更改您的路由器以将所有请求路由到您的 "green" 环境,使用 "old" 应用程序。

更多关于蓝绿部署的信息:BlueGreenDeployment

另一个众所周知的部署策略是金丝雀发布,它为少数用户启用新功能,一旦一切都经过正确测试,它就会为所有用户启用。