@Stephen 指出的这类细节确实非常重要。因为我们需要理解什么是“零停机时间”。例如,我可以通过以下方式“黑客式”地满足零停机要求:
我将零停机定义为:在请求有效时,绝不向用户返回除 HTTP 200 以外的任何状态码(同时根据需要保留 300 和 400 系列状态码)。然后,我在一台 10 美元的单容器 droplet 上部署 Discourse,并参考 Add an offline page to display when Discourse is rebuilding or starting up 来添加离线页面,从而避免 500 错误。这样一来,用户就不会看到网站已停机的提示。
那么,在理性的思维下,我会认为这算作零停机吗?绝对不会。但它是否按设想那样运行了呢?当然可以。我甚至可以再添加一台位于其他区域的备用服务器,使其更加“零停机可靠”。
这就是为什么界定和语义如此重要。始终向用户展示某些内容,与始终确保网站功能可用,两者并不相同。