• 老李分享:系统可用性评估


    老李分享:系统可用性评估

     

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

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

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

  • 相关阅读:
    当···时发生了什么?
    数据存储-3、数据库分库分表思路
    数据存储-2、反模式设计
    数据存储-1、MySQL 索引使用的注意事项
    锁机制-4、synchronized 与 lock 的区别
    锁机制-3、synchronize 实现原理
    锁机制-1、乐观锁与悲观锁以及乐观锁的一种实现方式
    线程-11、线程的生命周期
    线程-10、线程池的几种方式
    线程-9、线程池的实现原理
  • 原文地址:https://www.cnblogs.com/poptest/p/5231655.html
Copyright © 2020-2023  润新知