服务器可以持续服务多长时间?


  如何处理业务需求永续运行和服务器宕机之间的矛盾?有一点可以肯定,我们需要的不是永不宕机的服务器,而是永不宕机的系统。
  
  如果我们构建一个7×24×365稳定运行的系统,对于永续运行构成威胁的故障,一个是来自硬件,一是来自软件。无论硬件还是软件都会造成系统故障。从经验看,软件的故障率远远高于硬件。这是不是意味着硬件的高可靠性失去了意义呢?
  
  硬件的高可靠性并不因为软件高故障率而有所削弱。硬件的高可靠性不能够解决应用软件的故障。对此,专家指出,软件错误属于应用逻辑问题,硬件不能够修复逻辑的错误。解决软件故障需要通过软件升级和打补丁来解决,但这不意味着硬件高可靠性没有意义。在任何时候,我们都需要构建一个稳定可靠的硬件基础平台。硬件不可靠将直接导致系统崩溃。
  
  我们没有一个永不宕机的服务器。为了保障系统不中断,很多用户采用了HA(高可用性)解决方案,通过双机冗余的方式来解决问题。目前,双机方案普遍被采用,但是非常遗憾,系统中断仍然时有发生。远的不说,亚马逊云计算宕机事件仍然历历在目。
  
  专家指出,问题就出在双机方案。从根本上,设计双机冗余并能够解决系统不中断的问题。双机只保障了在系统发生故障时的,系统可以恢复运行的问题。至于恢复的时间,也就是解决了MTTR(平均修复时间)的问题。鉴于目前系统日益复杂,交易量和交易规模庞大,任何一个系统要想进行全面恢复,其MTTR一定不会断,5分钟基本是不可能的。
  
  如果双机冗余的方案行不通,就只有继续在硬件层面需求答案。容错服务器就是惟一的答案。道理很简单,从处理器、内存、I/O通道,容错服务器都采用了双系统,通过锁步技术确保计算的可靠性和可信性。说白了,就是2个一样的系统计算同一个应用,当答案一致,就认为计算结果可信。否则推倒重来。以往,业内对容错服务器的认知多集中在可信计算上。但人们也忽略了,双系统对可靠性的贡献。双系统同时发生故障的概率非常低,当其中一个部件,例如CPU出现硬件故障时,容错服务器失去锁步,也就是失去可信计算的功能。但系统服务不会中断,管理人员拥有充裕的时间对故障部件进行更换,恢复可信计算。
  
  双机冗余也是双系统,但与容错服务器最大的差别在于,容错的双系统是一个系统,运算处理同一个上层的应用。双机冗余在业务处理上,是两个单独的系统,分别处理应用。双机冗余依靠HA软件来判别故障。当一个系统产生故障时,双机冗余的系统,就会存在数据的不一致性。所以,双机冗余只能够恢复,而不能够保障业务不中断。容错与双机冗余不同,容错不存在应用软件不一致性,通过单系统承载应用,虽然降低了可信性,但却可以保障系统不中断。这也是为什么,容错可以提供超过99.999%可靠性的俄原因。