介绍:稳定性和高可用是两个常用词。根据经验和感受,我们知道提升系统的这两个指标,会让系统更健康,产品会有更好的用户体验。但是如果要给稳定性和高可用下一个定义,应该怎么表达呢?稳定性和高可用有什么区别和联系?在我看来,首先要弄清这两个问题,才能明确目标,系统地制定出完整可行的方案。作者|子衡来源|阿里技术公众号1深入理解稳定性和高可用稳定性和高可用是两个老生常谈的词。根据经验和感受,我们知道提升系统的这两个指标,会让系统更健康,产品会有更好的用户体验。但是如果要给稳定性和高可用下一个定义,应该怎么表达呢?稳定性和高可用有什么区别和联系?在我看来,首先要弄清这两个问题,才能明确目标,系统地制定出完整可行的方案。在维基百科上搜索stability,定义如下:Stability是一个数学或工程术语,决定一个系统是否为有界输入产生有界输出。如果是,则称系统稳定;如果不是,系统被称为不稳定。再看高可用性:高可用性(英文:highavailability,缩写为HA),一个IT术语,指的是系统不间断地执行其功能的能力,代表系统的可用性程度。它是系统设计的标准之一。高可用性系统可以比组成系统的各个组件运行更长的时间。首先从稳定性的定义中提炼出关键词——系统、输入、输出。在Ant目前的技术架构中,一个应用可以看作一个系统,应用之间的服务请求是输入,服务响应是输出。当服务响应达到预期时,应用系统才算稳定。当它们组合成一个更大的系统,作为商业产品向用户表达时,用户的请求作为输入,产品表达作为输出。当产品功能正常运行时,可以认为产品系统稳定。综上所述,稳定性的定义可以概括为——当系统接收到输入时,能够产生正确的、预期的输出,系统称为稳定的;否则,系统称为不稳定。回到命题,为什么叫稳保?您可以更改术语以提高稳定性吗?从上面的定义我们可以得出结论,稳定性描述了系统的行为。一个系统是否稳定,就像我们评价一个人是否健康一样,很难用一句话来描述和量化。但是可以从消极的角度快速判断。人们通过良好的饮食和生活习惯来减少疾病的发生,保持身体健康。保证系统的稳定性或提高系统的稳定性也是如此。我们需要使用各种方法来避免那些不稳定的情况。所谓更稳定并不是客观存在的,而是主观上希望避免或减少不稳定的发生。与稳定性不同,可用性是一个可量化的指标。计算公式在维基百科中是这样描述的:根据系统损坏、不可用时间、从不可运行状态到可运行状态的时间,与系统总运行时间比较。我们经常听到的三个九(99.9%)和四个九(99.99%)衡量系统的可用性。高可用就是保证系统的这个指标保持在高水平。在公式的定义和描述中,系统的运行时间分为三部分:系统正常运行的时间,即系统处于稳定状态的时间。系统损坏或不可用的时间,即系统处于不稳定状态的时间。系统从不可运行状态恢复到可运行状态所用的时间,即系统从不稳定状态恢复到稳定状态所需的时间。系统可用性和系统稳定性是正相关的。然而,在现实生活中,系统不可能永远处于稳定状态。逆向思考,将上面的公式进行转换,更有利于我们的分析:至此,这个命题的目标,KPI就很明确了。保证系统稳定和高可用的目标是让系统保持稳定的工作状态,不对用户造成负面影响,避免出现在线问题和P级故障。核心kpi是系统的可用性。为了提高系统的可用性,首先要保证系统的稳定性,减少不稳定情况的发生。其次,当系统因各种组件故障而处于不稳定状态时,可以快速发现并恢复到稳定可用状态。.2.稳定性和高可用性保障的核心思想通过以上推导,我们可以得到以提高系统可用性为目标的两个基本的问题解决思路。如图所示,要解决问题,首要任务就是找到问题并定义问题。因此,为了提高系统的稳定性,我们首先列举应用系统中常见的不稳定情况,然后一一对症下药:功能:应用程序执行的功能有错误,不符合预期.容量:当系统接收到的请求数量增加时,应用无法正常处理,出现异常或超时,导致服务失败。安全性:当系统收到未经授权或恶意的攻击请求时,会导致应用异常甚至服务失败。容错:应用程序无法正确处理用户在使用中的错误。当出现上述情况时,说明系统处于不稳定状态,需要我们能够及时发现并处理。造成这些问题的原因在软件系统中通常可以归纳为以下三类:人为故障:由于软件开发各个环节的思考不够充分,或者执行不慎导致的各种问题。硬件故障:网络故障、硬盘空间不足、内存崩溃等。软件故障:线程池异常、JVM异常、中间件或其他依赖的应用服务异常。对于一个动态演进的系统,我们没有办法将故障发生的概率降为0,只能通过在软件生产过程中建立流程规范和机制,将其发生的概率降到最低。其次,对于运行中的系统,需要建立健全监控预警机制,及时发现系统故障,通过预案的实施快速恢复系统。基于以上结论,为了提高系统的可用性,需要从以下三个方面着手:故障预防、故障发现和故障恢复。人犯错的概率远大于机器,所以防错最重要的是建立机制,在团队内部达成共识,并按照这个流程不断进行研发工作,从而减少个人因素(思维、执行力、状态等)对系统稳定性的影响。对于故障发现和故障恢复,需要通过系统监控和应急方案,快速发现系统异常并进行恢复,将故障影响降到最低。以蚂蚁蚂蚁日常产品开发流程为例,从功能、容量、安全、容错四大核心要素出发,给出一套解决方案,仅供参考。1研发规范设计阶段团队细分文档模板高可用设计规范编码阶段代码规范1.通用代码规范2.工程结构规范单测覆盖率单测通过率代码覆盖率日志规范安全漏洞修复规范发布阶段变更规范:三重斧2容量保障容量评估机器容量DB容量缓存容量压测限流方案降级方案3监控告警日志规范监控梳理应用基础监控网关监控服务监控业务监控限流监控告警规范数据查看4应急快速响应日常计划硬件异常预案,中间件异常计划、业务异常计划、大促计划、计划实施规范3总结,如何保证稳定性和高可用是一个巨大的命题,任何一小部分内容在内网都能找到。文章。写这篇文章的目的是总结一下我对稳定性和高可用保障工作的理解,和大家分享一套系统框架思路。希望大家读完本书后,能够对安全生产有一个更全面的认识,而不是拘泥于细节。原文链接本文为阿里云原创内容,未经许可不得转载。
