第一部分可用性概念一览永不停止总是不现实的。那么,在可操作性范围内,如何将影响降到最低,如何衡量影响?概念一:MTBF(meantimebetweenfailure)MTBF是指相邻两次系统故障(服务故障)之间的时间间隔。工作时间的长短。它也可以称为故障时间或故障间隔。该值越大,系统的故障率越低,系统越可靠。因此,我们通常希望这个时间间隔尽可能大。概念二:MTTR(MeanTimetoRepair)MTTR是指从故障到修复的时间长度。也称为修复时间。该值越低,越容易从故障中恢复,系统的可维护性越好。因此,我们通常希望这个时间间隔越小越好。因此,系统可用性可以量化为:MTBF/(MTBF+MTTR)例:系统可用性要求为99.999%,那么,按一年365天计算:全年允许停机时间只有5分钟多一点.第二部分高可用性保证全年停机5分钟?从前面的部分我们可以知道,我们的目的是尽可能的增加系统的无故障运行时间,同时在出现故障的时候尽快完成恢复。故障有很多种。经过这么多年的研究和发展,我们可以对它们进行分类和总结,并给出分析和相应的解决方案。Level1:配置修改错误是最不应该犯的错误,但我感觉很多人都会犯错误。原因也很简单,要么格式不对,要么配置数据不对,错误的配置直接发到线上,直接导致业务异常甚至宕机。解决方案主要由两部分组成:变更控制+灰度配置工单+审批,使配置变更流程化、常态化,提高配置变更的重要性。利用配置灰度发布平台的功能,通过灰度多环境上线前的测试验证加上版本回滚能力,减少配置问题导致的可用性下降。Level2:代码BUG人为的BUG往往是系统异常的罪魁祸首。编码员?不,请叫我buger~虽然是最常见的,但这部分相对来说也是最容易对付的。解决方案有两个方面:控制研发质量+测试质量:需要通过系统分析文档的编写和审核,提前分析业务问题和系统边界。通过容错设计、片面、CR来提高代码的健壮性。通过测试分析明确测试重点和??影响点。确保原始逻辑不受在线请求录制和回放等模拟测试的影响。Level3:依赖于服务故障业务快速发展,系统横向和纵向拆分,越来越复杂。几乎没有一个系统可以独立存在,总会有依赖关系。但是,依赖的系统在整个业务流程中占了很大的比重,而我们自己却无法控制。因此,服务依赖治理是可用性保证中非常重要的一环。解决方案包括:依赖排序+指标约定+故障解决首先根据业务自身情况,梳理强弱依赖,区分不同级别的依赖。比如弱依赖可以剥离主链,使用异步或者离线的方式;而RPC中间件等强依赖只能增加监控,提高问题发现率。二是自定义指标,做好指标监测和百分位预警。例如,当预估依赖系统调用量,sla协议达到百分位阈值时,及时重复告警,制定故障预案,如主链路限流、弱依赖熔断等。该计划需要多次演练才能上线。Level4:突发流量与流量高峰的对应关系不够业务按照我们预先规划的线路增长是不现实的。一不留神突然看到一波涨幅是很常见的~有两种应对方式:流量规律预测+异常流量保护规则,需要分析业务规则,合理安排策略,比如提前请求排队和扩容。例如,在打车场景中,高峰(上下班)和突发流量(雨雪大风天)是非常典型的。为什么司机经常抱怨不能接单,下雨下雪又为什么要从派单模式转为抢单模式?帮助减少无效重试,使用缓存等策略防止底层服务雪崩。比如电商商品详情系统,晚上流量增加,爬虫无疑;又如系统超时导致用户不断刷新流量放大等级5:容量预估不足。此外,还有缓存容量、底层数据存储容量、服务器容量、带宽容量等。解决方案有四个方面:容量规划+限流降级+冗余+全链路压测。前期需要做好容量规划和容量预警预案,考虑到可能出现的突发流量,尽可能实现核心模块。冗余部署和容灾部署;同时,通过多维告警,尽早及时发现容量问题。当故障发生时,根据上述依赖服务治理方案,根据重要程度进行限流、降级或熔断。减少对容量的持续冲击。故障发生后,通过冗余部署快速切换路由,分担前端单元的容量压力。单服务压测只能触及当前服务的高度,但这个高度是否满足全链路的要求需要全链路。这时候全球统一路由和影子库的基础设施建设就显得非常重要了。Level6:硬件甚至整个机房故障与动辄百万的大型服务器相比,普通电脑和docker的稳定性大打折扣。因此,停机是不可避免的。除了服务器,交换机甚至光纤都可能出现抖动。解决方案有两个方面:去中心化+冗余:俗话说,不要把所有的鸡蛋都放在一个篮子里,而是要分成几个篮子。这样,打破一个篮子就不会影响到所有的鸡蛋。Ant的单元化部署就是基于这个思想。不同的用户根据其ID被分配到不同的处理单元。因此,即使本机彻底宕机,最坏的情况下,也只会影响到本机的用户群。冗余是有备无患的想法。主从互备,同城机房互备,两地三中心,三地五中心,就是这种思路的具体实现。第三部分总结,越重要的系统,对高可用的要求就越高。而高可用治理会考验整个技术团队的技术积累。如果后面遇到对系统可用性非常敏感的情况,希望本文能对你的思路和出发点有所帮助。
