本文想来和大家聊聊那些年我们听烂了的名词之 ‘高可用’ ,那么第一个问题就是: “如何构建一个高可用系统呢?”
为了解答本文这个核心问题,需要分三个阶段来考虑:
系统可用性 = 平均无故障时间 / (平均无故障时间 + 平均故障修复时间) * 100%
一般行业内会使用几个9来代指系统可用性:
系统可用性% | 宕机时间/年 | 宕机时间/月 | 宕机时间/周 | 宕机时间/天 |
---|---|---|---|---|
90%(1个9) | 36.5 天 | 72小时 | 16.8小时 | 2.4小时 |
99%(2个9) | 3.65 天 | 7.2小时 | 1.68小时 | 14.4分 |
99.9%(3个9) | 8.76小时 | 43.8分 | 10.1分 | 1.44分 |
99.99%(4个9) | 52.56分 | 4.38分 | 1.01分 | 8.66秒 |
99.999%(5个9) | 5.26分 | 25.6秒 | 6.05秒 | 0.87秒 |
工作中遇到过的故障基本可分为如下三类:
我们也可以以服务为中心,从上下游依赖和服务自身运行过程为视角进行风险分析:
为了提高系统的可用性,我们可以从下面这个基础公式出发:
为了应对可能会发生的风险,我们可以采用五段式分析法,将研发流程划分为五个阶段,依次做好每个阶段的风险应对措施:
系统设计阶段:
常见的数据一致性问题解决方案如下:
容量评估就是评估系统在宕机前所能承受的最大流量;常见的容量评估包括流量,带宽,CPU,内存,磁盘等一系列内容,也可以通过一定的技术手段(压测)来检验系统是否达到了预估容量阈值。
我们可以通过全链路压测来检验系统容量,同时也可以验证系统瓶颈,验证预先准备方案的有效性等。
全链路压测的目标如下:
具体压测过程如下图所示:
这里重点关注压测安全性和压测结果置信度。
‘ 混沌工程 ’ 是指在生产环境的分布式系统中进行的一些实验,用来考验系统在动荡的环境下的健壮性,从而增强对系统稳定运行的信心。它的目标是减少业务损失,构建韧性系统。
混沌工程的目标是:
类型:
实践原则:
红蓝对抗:
系统功能迭代是研发流程中最常见,最容易出问题的环节,因此我们需要重点关注发布前,发布中,发布后三个关键点。通过流程制度规范的指定,让研发对规范操作形成肌肉记忆,减少功能迭代变更过程中可能会出现的低级问题。
功能迭代过程中常见的错误有:
为了避免上面可能出现的错误,我们需要遵循一定的发布流程规范:
增加系统监控并持续关注系统监控告警,可有效降低系统出问题的概率,并能够让系统owner第一时间获取系统健康情况。常见的风险监控指标如:
检测阶段我们需要重点关注以下四个指标:
如果已经成功度量了这四个指标,且在某个指标出现故障时(或者快要发生故障) 能够发出告警,那么从服务的监控层面来说,基本也就满足了初步的监控诉求。
Logging : 用于记录离散的事件
Metrics : 可聚合的数据,且通常是固定类型的时序数据
Tracing : 记录单个请求的处理流程
Logging & Metrics :可聚合事件
Metrics & Tracing : 单个请求中的可计量数据
Tracing & Logging : 请求阶段的标签数据
目标:
关键点:
视角 | 指标 | 实践建议 |
---|---|---|
用户监控 | 5xx,4xx,客户端监控等 | 从用户体验角度出发监控 |
业务监控 | 成功率,成功量,失败原因分析,RT值,一致率等 | 核心业务活动,业务流程节点 |
应用监控 | 健康检查/异常日志/jvm监控/qps/慢查询/下游依赖等 | 统一模版,通过治理告警优先级和数量避免告警泛滥 |
Pass监控 | DB/Redis/kafka/MongoDB 等 | 检查为主 |
基础监控 | CPU/磁盘/负载/内存/网络/网卡等 | 默认 |
关注告警数量和告警等级,告警响应率,高危告警,高频告警,新增异常等。
常见问题:
常见解决问题的手段有:
场景:
导致以上问题出现的本质原因还是 服务容错能力的缺失!
常见解决方案有:
限流是比较常见的处理突发流量,保护服务的手段;通过对请求数,并发数,用户操作等进行限制,从而实现服务保护措施。
关于限流处理,我们需要注意下面四个方面:
先定位,再通告,即时止损,然后分析根因,最后详细排查。
由管理者指定复盘制度,包括故障定级标准,复盘文档模版,复盘时机,复盘后续待办等。
要构建高可用系统,我们需要遵循"六要两不要"
原则:
在研发过程中要遵循五段式分析法:
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有