zoukankan      html  css  js  c++  java
  • 系统可用性评估

    移动互联网时代,似乎大家都在强调架构或服务的高可用,那什么是高可用性呢?

    首先,我们来了解下什么是系统的可用性(System Usability),即系统服务不中断运行时间占实际运行时间的比例,所以高可用性就比较好理解了:系统服务不中断运行时间占实际运行时间的占比更大,换句话说符合我们的预期。

    其次,系统的可用性由哪些因素决定或受哪些因素影响呢?其实我们可以想象下,有没有系统可以提供长久的不中断服务?有人会回答说:有!真的这么肯定?
    其实,对于一个简单的系统,在单位时间内是可以保证服务不中断的,但无法保证:forever ,更何况现在的系统复杂性越来越高!又因为服务器硬件老化、供电及网络故障等不确定因素,很难保证这一点,所以说可用性是指一段时间内的可用性!

    系统可用性取决于系统的可靠性(MTTF)及可维护性(MTTR)的高低,其中可靠性是指系统服务多久不中断,可维护性是指服务中断后多久可恢复。那这3者是怎样的关系呢?
    System Usability = MTTF / ( MTTF + MTTR ) * 100%

    备注:
    MTTF:平均无故障时间
    MTTR:平均故障修复时间
    MTBF:平均故障间隔时间
    其中,MTBF = MTTF + MTTR,故System Usability = MTTF / MTBR * 100%

    那在实际的案例中如何计算呢?我们接着来了解下系统结构。

    对于串联系统:
    这里写图片描述

    对于并联系统:
    这里写图片描述

    对于组合系统:
    这里写图片描述

    以下是系统可用性与停机时间的一个关系图:
    这里写图片描述

    最后,如何提高系统的可用性呢?其实就是如何提高系统的可靠性和可维护性!

    (1) 对于系统中某个节点而言(可能是一台服务器、一个组件、或者一个功能模块),要求代码健壮、性能优、硬件配置高等

    (2) 对于整个系统而言,我们可以使用集群技术,这里集群分2类,一是高可用集群,二是负载集群

    (3) 如果说系统无Bug或不出问题,是不可能的,所以当出现故障时快速解决显得很重要,也就是可维护性要高!我们要尽可能做到:快速发现问题、定位问题、解决问题,这里依赖于监控(监控很重要),不能依赖于用户反馈,更重要的是时刻优化维护流程中不合理的地方(这一点很难,但是很有效率,因为有时解决问题需要组织层级推进,能否精简流程、快速响应等,也是我们要思考的地方)!

    总结:系统的可用性不是测试出来的,而是计算出来的,它是指单位时间内一个比例值,不代表所有时候!最后送大家一句话:今天的互联网时代,对系统可用性要求非常高,它直接影响着用户体验,也是衡量我们这些技术工程师团队的能力与价值的重要标准!

  • 相关阅读:
    微信小程序之阻止冒泡事件
    微信小程序之生成二维码
    微信小程序之数据缓存和数据获取
    微信小程序之分享功能
    抽丝剥茧——策略设计模式
    抽丝剥茧——单例设计模式
    抽丝剥茧——备忘录设计模式
    手把手教你Smarty缓存技术(转)
    二级域名session 共享方案(转)
    MySQL监控、性能分析——工具篇
  • 原文地址:https://www.cnblogs.com/qwop/p/6637368.html
Copyright © 2011-2022 走看看