《Web容量规划的艺术》书评

twitter上@fire9给我推荐了这本书,花了一些时间把这本书看了两遍,总结性的点评语就是:“书的质量非常的高,一方面这本书中的内容来源于flickr.com实际的经验,另一方面是作者采用了很多生活中的例子来讲解一些复杂的技术,让人很快就明白了。”下面就具体来看看这本书传达的容量规划该怎么做。

twitter上@fire9给我推荐了这本书,花了一些时间把这本书看了两遍,总结性的点评语就是:“书的质量非常的高,一方面这本书中的内容来源于flickr.com实际的经验,另一方面是作者采用了很多生活中的例子来讲解一些复杂的技术,让人很快就明白了。”下面就具体来看看这本书传达的容量规划该怎么做。

容量规划主要分为四个步骤来进行:

1、设定容量的目标:例如网站需要在3秒内响应,达到99.99%的可用性。

2、收集对应的指标并找出面临的限制
这个步骤需要做的为:
测量和记录服务器的主要功能,例如数据库的主要功能为插入数据、删除数据、更新数据和获取数据,在这里书中举了个例子是没有油量表的车;
测量和记录基础硬件资源,例如cpu、文件IO、网络IO和内存的消耗;
判断服务器的主要功能如何与硬件资源关联,判断的方法为寻找主要功能增长时硬件资源的主要增长点,例如在书中的例子为flickr.com中数据库的主从复制的延时率与磁盘的IO关联,web服务器能支撑的请求量和cpu资源关联;
基于主要功能、硬件资源和容量目标,找出在目前的资源情况下所能承担的上限(例如复制延时率最多能接受的为延迟180ms,此时磁盘IO大概为40%,就此就可制对磁盘IO报警的阈值,并可观察此时系统能支撑的并发量),这里书中提到的一个方法为在生产环境中通过负载均衡来引导真实的流量来测试上限。
测量对于容量规划而言至关重要,因此书中写到了测量不是可选的,是必须的。

3、绘制趋势并根据指标和限制进行预测
基于历史数据进行曲线拟合,工具可采用excel或ftiyk,从而预测什么时候目前的资源将达到上限阀值;另外需要考虑的一点是如何制定红线,例如CPU消耗最多能接受多少,这里要根据历史的偶发高峰状况做个安全值的考虑,假设历史数据显示偶然比平时高个8%是常见的话,就至少要留个10%左右的安全空间。

4、容量部署和管理
基于上面的预测就可制定采购计划或架构调整计划了,到底什么时候需要采购机器是个复杂的问题,这个和零库存面临的问题基本是一样的;另外就是当机器到了后如何快速完成部署,因此需要自动化的部署工具。

按照上面的步骤不断的迭代可逐步的做好容量规划,但实践起来必然会有很多的难点,容量规划和性能调优的最大差别在于容量规划是基于现有状况来评估什么时候需要什么资源来支撑网站的运行,而性能调优更多的纯粹是考虑如何提升性能。

书中最后还提及到了如何应对突发增长的情况,对于突发增长的状况,由于不可能提前准备,书中给的几个建议是:禁用重量级的功能、临时采用静态页面、缓存而不是过期以及采用更为人性化的方式处理故障,最后一点我觉得最有意思,这也是我们现在处理故障时遗漏的,书中举了一个例子来比喻,就是如果厨房被淹了,此时有个水管工在处理的话,你会感觉到至少有人在处理,而一个好的水管工还会告诉你原因和解决的方法,在这样的情况下也许你能对这个故障更加容忍了。

最后,强烈向希望能够预测什么时候需要增加多少资源,或做什么架构调整的同学推荐这本书,相信会给你带来很多的感触,毕竟这是来源于flickr.com的实际经验。