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

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

  • 相关阅读:
    【转】VS2010中 C++创建DLL图解
    [转]error: 'retainCount' is unavailable: not available in automatic reference counting mode
    [转]关于NSAutoreleasePool' is unavailable: not available in automatic reference counting mode的解决方法
    【转】 Tomcat v7.0 Server at localhost was unable to start within 45
    【转】Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds. If
    【转】SVN管理多个项目版本库
    【转】eclipse安装SVN插件的两种方法
    【转】MYSQL启用日志,和查看日志
    【转】Repository has not been enabled to accept revision propchanges
    【转】SVN库的迁移
  • 原文地址:https://www.cnblogs.com/poptest/p/5145927.html
Copyright © 2011-2022 走看看