高可用

什么是高可用

先逛一逛百科和博客……

  • 高可用通常是指,通过设计减少系统不能提供服务的时间。
  • 高可用通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性。
  • 高可用指系统无中断地执行其功能的能力,代表系統的可用性程度。

定义什么的就这样吧……

核心准则

看到一篇文章的作者总结得很好(究竟啥才是互联网架构“高可用”):

保证系统高可用,架构设计的核心准则是:冗余

想想其实也挺好理解,如果运行一个系统的资源是冗余的,那就更能应对突发的情况,如:流量激增、部分服务故障、电缆被砍等。

所以当我们看到一个产品、或系统、或服务说自己是高可用时,就可以留意它在哪些资源上做了冗余,而这些冗余能抵御的又是哪些故障。

容错机制

即使系统的资源是冗余的,也还是需要一定的手段或说机制,来保证系统的高可用运作起来

  • 自动侦查(Auto-Detect)

    就是系统要能监控资源的可用情况,那系统又是如何进行监控?定时检查?以任务执行状态判断?

  • 自动切换(Auto-Switch)

    就是系统检测到存在资源不可用时,该如何用上其冗余的资源?

  • 自动恢复(Auto-Recovery)

    就是在故障资源修复完成后,如何通知系统重新用上该资源?

  • 其它

    觉得还有许多其它的机制也可以为高可用服务:扩容、缩容、重载、降级、削锋……

工作方式

百度百科有一段介绍高可用的“工作方式”,但我想这一块应该主要是想探讨系统的各资源之间可能存在的关系:

  • 主从(非对称)

    主资源工作,冗余资源处于监控准备状态。当主资源发生故障时,冗余资源接管工作,待主资源恢复正常后,将切换并重新使用主资源,或者不切换作为冗余资源。

  • 双机双工(互备互换)

    两个资源同时支持各自的系统服务并相互监测运行情况,当其中一个资源发生故障时,另一个资源立刻接管其工作。

  • 集群(多服务器互备)

    要解析集群可能要新开一篇总结了…..

    搭建集群系统,是为了单点故障:

    • 消除供电的单点故障
    • 消除磁盘的单点故障
    • 消除 SPU(System Process Unit)单点故障
    • 消除网络单点故障
    • 消除软件单点故障
    • ……

实施

说了这么多,那具体我们又要在哪些地方实施高可用策略?这就涉及到系统架构设计的整个流程了……

……

参考:

究竟啥才是互联网架构“高可用”

百度百科:高可用性)