本期我们来谈下稳定性生产这个话题,稳定性建设目标有两个:降发生、降影响,
在降发生中的措施是做到三点:系统高可用、 高性能、 高质量,三高问题确实是一个很热的话题,里面涉及很多点。
在降影响中要做到早感知、 快定位、 急止损,这三点也需要很多的技术配合才可以做到的。那么量化的指标有哪些呢?现在认识到的有这三个:业务可用程度、用户影响程度、资产损失程度 。
在业务可用程度中我们最关注SLA、 RTO、 RPO。
SLA是Service Level Agreement的缩写,中文翻译为“服务级别协议”。它是一种协议约定,旨在保证服务提供商和客户之间的服务质量达到一定水平。SLA通常用于商业、技术和服务行业,以确保双方在合作过程中达成一致的服务标准。通常以百分比表示,用于衡量服务系统的可用时间,例如99.9%表示系统的可用时间为99.9%
RTO含义为恢复时间目标,Recovery Time Objective,是指在发生灾难性事件后,业务系统或业务流程需要恢复正常运行所需的时间。较短的RTO通常需要更多的投入和成本,但可以最大程度地减少业务中断时间。
RPO含义为恢复点目标,Recovery Point Objective,是指在发生灾难性事件时,组织愿意丢失的数据量,或者说允许数据恢复到之前状态所允许的最大时间间隔。RPO标志着对数据容忍的程度,较短的RPO意味着组织可以容忍较小的数据丢失。
在用户影响程度中比较关注用户数量和用户级别两类数据。
在资产损失程度关注有形资产和无形资产两个指标。
一、分布式系统稳定性建设模式
那怎样完成降发生和降影响两个目标呢,那就需要一个好的建设模式,稳定性建设模式是指在开展稳定性建设工作过程中应重点关注的技术方法或方案,这里面有一系列技术模式来支撑稳定性能力实现。主要技术有架构设计、容量设计、运维方案设计、安全设计四个方面。
(一)架构设计
在架构设计中有五项内容做好就比较好了,分别是:去除单点、强弱依赖设计、关键数据保护、灾备设计、弹性设计。
(二)容量设计
容量设计中首先要做好数据增长预测,这里面包括网络流量 、消息量等。也关注内部资源使用情况,资源的伸缩性,IDC容量 ,一些弹性设计,链路分析。
(三)运维方案设计
在运维方案中,我们要做好变更管控 、可观测设计 、演练设计这三点。
(四)安全设计
在安全设计中,要做好系统安全设计、部署与操作系统安全、数据安全、网络安全这几个方面。
二、分布式系统稳定性建设路径
那我们在实际工作中怎样进行建设呢?需要做两件事:需求分析和实现分析。
(一)稳定性建设需求分析
需求分析可以分为确认分析对象主体和确定服务需求两部分。
确定对象主体:对象主体通常可以是一个应用系统,通常以独立的应用系统为分析对象,如聊天软件。
也可以是一组应用系统:通常以业务场景为主体对象关联,如电商订单支付关联,如微信聊天关联系统。
也可以是一个架构域:通常一个架构域内的重要性应用系统都会有一定的内在联系,以架构域为对象能够尽可能避免可能发生的对长尾业务场景的忽视。
确定了对象主体后,我们需要确定主体的三个方面需求,分别是:
主体提供的服务是系统服务,还是页面表现服务,还是restful服务或者终端设备交易服务等;
使用场景是有哪些业务和系统流程,存在于这些业务系统流程对应的上下游服务有哪些;
确定服务的重要性等级,一个服务的重要性由强依赖它的最高服务等级决定,根据各服务的重要性等级,确定对象稳定性需求。
(二)稳定性建设实现分析
进行需求分析后,我们在来进行实现分析,
1、服务实现流程分析
需要分析明确服务的实现流程,如服务实现的UML活动图、UML序列图或者业务依赖流程图。
2、强弱依赖分析
对于系统的每一个依赖,都要识别出以下几点:依赖强弱、同步或异步、依赖权重。
针对具体的服务类型,还需要针对性的开展依赖分析,如数据库依赖、系统间的协作关系、硬件服务依赖、基础技术服务依赖等。
3、部署架构分析
稳定性建设工作开展前需分析各个实现组件的生产部署架构,明确系统有哪些部分组成,以及明确系统间的协作关系,如集群划分、集群的 大小、集群IDC分布、网络拓扑等
4、访问模式与访问量分析
如果访问量、访问模式和业务量之间有关系,请明确关系函数,如果不明确,则要通过测试估算出三者之间的关系。
(三)稳定性建设活动
进行分析之后,那我们就要着手进行建设了,这些建设活动涉及人员、机制和文化,全方位的建设活动才能更好地落实建设模式。下面我们看下需要做哪些?
1、建设稳定性保障机制
其中包括:规范编制、方案评审机制、测试准入准出机制、值班及责任判定机制、能力考核机制、故障管理机制。
2、建设组织保障能力
包括人力资源支持、技术资源支持、组织优化
3、建设稳定性保障体系
包括如下内容:
在建设之后,我们可以依照如下指标来进行衡量建设的效果
以上就是我们本期稳定性生产方面的内容了,故障的发生是复杂多样的,需要多个技术团队的协同保障系统稳定,所以需要统一的系统化稳定性管理能力作为“连接器”实现多个团队的协同透明化作战,并进一步通过故障应急结果数据复盘,数据化风险趋势以确定建设重点,标准化故障管理流程,以提升故障管理效率,定义业务或者服务的slo以结构化,来保障稳定性能力。