1. 读完本章最大的收获是了解了应该如何评估一个系统的能力以及应该怎样为一个线上系统预留发展空间。在系统上线的时候,我们经常被问到的几个问题就是你的系统能承受多大的用户量?我们当前应该部署多少服务才能承载公司的当前和未来一段时间的业务?
2. 文中给出若干步骤用于预估系统的预留空间,将其总结如下:
(1)确定当前的系统负载量,包括了解系统的组成以及每个组成部分的当前负载量;我们现在一般都是采用分布式的微服务架构,每个系统都会有若干功能独立的微服务组成,这些微服务也都是由不同的研发人员负责完成,因此,我们要预估一个系统的当前承载量,首先得了解系统的结构,熟悉各微服务之间的调用关系,并且知道线上有多少个微服务实例以及每个微服务的负载情况,从而确定整个系统的负载(取决于最瓶颈点的负载);
(2)量化业务的增长,也就是预估并量化系统在未来一段时间内的增长情况;业务的增长量通常包括两个部分:自然增长量和预期增长量,自然增长量是指在某个时间段内没有任何新业务活动时系统的正常增长量,自然增长量可以通过统计系统过去一段时间的增长量来估计;预期增长量是指由于公司业务活动例如各种促销活动等引起的额外增长;
(3)预估系统的最大效使用量,系统的最大有效使用量=系统的最大容量*理想使用率;系统的最大容量可以通过压测、资源分配情况等计算出来,例如某个提供存储的服务,当容量为10G时,可承载10万用户,我们线上共分配了20G的可用存储空间,那么它的系统最大容量就是20万用户,这里理想使用率的估计是非常困难的;
(4)理想使用率,在做预估时一定不能使用系统的最大容量作为最大有效使用量,即理想使用率不能达到100%,因为系统最大容量的测试或预估有可能存在偏差,另外当系统接近极限的100%容量时非常容易发生无法预估的问题;书中建议:如果你不知道理想使用率应该用多少时就选择50%!!!随着系统在线上的运行,该值可逐步提升,但建议不要超过75%,即在你不知道怎么计算的情况下,理想使用率只能取50%~75%;另外一个计算理想使用率的方法是:理想使用率= 3 * 标准差,这里的标准差可采用最近一段时间(最近一周、一个月、三个月、6个月等等)的生产环境的服务器性能容量的标准差;
(5)系统预留空间的估算,系统预留空间是指当前系统离自己的最大有效负载能力还有多少冗余的空间,系统一段时间内的预留空间Capatity(t)的量化计算公式及说明
说明:
系统的最大容量*理想使用率就是系统的最大有效使用量;
公式中:(理想使用率 *系统最大容量) -当前使用量 表示当前系统的最大扩展能力;
公式中:月度增长量(n) 表示第n个月系统的增长量,按照步骤(2)的方式去预估;月度优化量(n)表示第n个月由于采用各种优化措施让系统又新增了这么大的承载量;
上述结果如果为负,表明系统无法满足未来t个月的发展。
(6)系统容量的预留时间预估,即评估当前的系统还能经过多久就达到极限。计算公式为:
上述公式可以简化理解为:
系统达到有效负载极限所需时间=系统当前预留空间大小/每年的实际增长量
(7)系统预留空间的计算步骤:
[1] 分析系统的有多少个微服务(或组件、模块)组成;
[2] 指定专人来确定每个微服务(或组件、模块)实际使用量和最大有效使用量,一般情况下,运维人员知道服务的当前实际使用量,测试人员指定服务的最大有效使用量(在做压测时就会记录此结果);
[3] 确定每个微服务(或组件、模块)的自然增长量;
[4] 确定每个微服务(或组件、模块)的由于活动代理的额外增长量;这个步骤估计需要经过咨询公司更高层才能知道在未来的一段时间内会有什么活动计划,活动预计会带来多少增长;
[5] 确定季节性峰值效应;
[6] 估计预留空间或者基础设施项目取得的容量;
[7] 进行预留空间的计算;