我在一家从事云计算工作的公司面试时问了以下问题,并没有得到很好的答复。关于如何分析这个问题的任何建议都将非常感激。
我们公司拥有数亿用户,我们希望在生产中实现零停机时间,解释技术和编程实践,以帮助改进前端,中间层和后端服务(包括数据库服务)的冗余和故障转移功能
答案 0 :(得分:2)
这个问题非常符合"Impossible Question" from Joel.这个问题没有正确答案。
我会开始将其分解为所有可能的失败点列表:
然后,对于他们中的每一个,我会找出破损的原因,以及如何在没有停机的情况下从中恢复。那些我不知道答案的人,我会尽那么多。
例如,让我们构建数据库服务器关闭的原因列表。由于我们正在寻找100%的正常运行时间,因此我们无视任何事情 - 无论有多远,
一些可能的解决方案(考虑Windows后端的SQL Server)
你可以基本上继续回答这个问题,直到面试官放弃,因为这个问题确实没有单一答案。
答案 1 :(得分:0)
这是一个非常广泛的问题。如果他们期望零停机时间,请告诉他们忘记它或将所有利润转为建立冗余。现在,如果他们只想要“五个9,或99.999%正常运行时间”,那么我们可以谈谈。 :)
您通常可以通过常规罐头来回答这些问题,即建立一个包含大量单元测试的可持续,自动化的构建环境。使用像MVC或类似设计模式可以帮助提高可测试性。执行定期安全审核。这比一个开发问题要大得多,这是一个关于网络和服务器架构,维护二级和三级数据中心等问题。这类问题确实让你有机会让面试官感到重要。