1、什么是稳定性保障
稳定性保障简单理解就是不让系统出现不可用的情况,或者不可用的情况每年只能发生几十分钟。
为什么要稳定性保障?因为现在很多的电商系统和支付系统已经属于社会基础服务,持续一段时间不可用会对社会影响比较大,同时也损失了用户的信任。
稳定性保障的场景非常多,只要流量非常大的业务就需要系统性的进行稳定性保障,包括直播、电商秒杀、电商大促等场景。2022年9月3日晚刘德华“把我唱给你听”线上演唱会,最终这场线上演唱会的在线观看人次达到3.5亿,那么支持3.5亿人次观看就是一种稳定性保障场景。每年电商网站618、99、双11和双12大促。除了大促以外,还有很多亿级用户的产品也需要稳定性保障,如电商交易、第三方支付、演唱会直播等场景。还有很多秒杀的场景,如每晚8点某电商网商1499秒杀茅台、在12306网站提前N天抢票。
2、明确稳定性保障目标
做稳定性保障的第一件事是要明确保障的一级目标,比如某明星直播要明确保障目标是3亿还是6亿人次观看,某大促交易峰值是20WTPS还是40W TPS。
2.1、明确一级目标
业务稳定性保障的目标通常是在保障某业务不可用的时间每年持续多久,某业务全年可用率目标99.995%,一年一共有525600分钟,每年的不可用时间必须控制在26(525600*0.00005)分钟以内。
系统稳定性目标是峰值QPS(每秒请求数)和TPS(每秒写入数)达到多少。注意一定是要峰值目标!这个峰值分为日常峰值和大促峰值,所以稳定性保障有日常保障目标和大促保障目标。从成本角度考虑,每场大促需要做单独保障,大促保障完之后需要回收服务器和各种资源,线上运行的机器一般只能支撑日常峰值或小促。那么我怎么知道今年大促峰值要支撑多少TPS呢,这个只能根据经验估算,一般的估算经验是日常峰值的十倍,或去年大促峰值的2倍,这个其实很难估算非常准确只能尽量估大。
2.2、拆解二级目标
如果一级目标是支付峰值,那么需要进一步拆解支付咨询量,交易创建量等二级指标,针对这些二级指标做稳定性保障。否则交易创建失败了,只做支付TPS的一级目标保障也没有任何用。
3、如何进行稳定性保障
稳定性保障的过程分为链路梳理、全链路压测、集群扩容、服务限流、增加提前预案和增加紧急预案。本文会用秒杀业务举例说明。