SEO 百科
弹性伸缩
本页目录
弹性伸缩
弹性伸缩 是一种按负载、按流量增减服务器资源的机制,规则提前写好,流量一冲高就多开几台机器,流量回落再把多开的收回。对做网站的人,它处理的是两件事:高峰来了别把机器压垮,平时机器闲着别一直付钱。用不用它,先看流量有没有明显的波峰波谷。
它解决的一对矛盾
一台机器的处理能力是固定的,流量却会起伏。按最高峰来配机器,峰谷之间的大量时间都在为闲置算力付费;按平均流量来配,一到高峰处理器被打满,请求排队,响应变慢。
弹性伸缩把这两头拆开:平时只留够用的机器,判定到负载升高再临时加,负载退去就减。加和减都由规则触发,不用人半夜爬起来点按钮。前提是这台机器上的网站能被多台机器分担,这一点在下面两节展开。
两种伸缩方向
伸缩有两个方向。一种是加机器,业内叫水平扩展,多买几台相同规格的实例一起接请求;另一种是换更高配置,叫垂直扩展,把一台机器的处理器和内存升上去。多数云平台上的“弹性伸缩”指第一种,因为它能自动做,第二种多半要重启。
垂直扩展有上限,一台机器最多升到那个规格,再高就升不动了;水平扩展理论上能一直加机器。代价是水平扩展要求程序能被多台机器同时跑,用户的一次访问如果依赖某台机器上存的状态,换一台就丢了。这类状态要挪到共享的数据库或缓存里,机器才能随意增减。
触发规则与冷却期
伸缩由指标触发。常用的判定量有处理器利用率、并发连接数、请求队列长度。指标越过设定的高水位,就扩容;回落到低水位,就缩容。中间要放一段冷却时间,免得指标在阈值附近来回摆动,机器反复开关。
下面是一份策略的大致写法,参数各家控制台的名字不同,结构相近:
伸缩组名称:web
最小实例数:2
最大实例数:10
扩容触发:CPU 利用率连续 5 分钟不低于 70%,加 2 台
缩容触发:CPU 利用率连续 10 分钟不高于 30%,减 1 台
冷却时间:一次扩容后 300 秒内不再重复触发
冷却期这一段最容易被省。省掉的后果是流量抖一下,伸缩组就跟着抖动,一边加一边减,账单和日志都乱。
用得上与用不上的场景
用得上弹性的站点,流量有明显的波峰波谷,活动、秒杀、突发新闻的访问能在几分钟内涨好几倍;或者白天忙、夜里几乎没人,按峰值常备会浪费一大截。这两类用弹性伸缩,比常备高配省钱。
用不上的有两种。流量常年平稳的小站,包年包月买一台固定的更划算,弹性带来的复杂度换不回收益。慢在代码或数据库上的站,加机器也不解决。一个每次都要查大表、又没有缓存的页面,机器加到十台,单条请求照样慢。这种先优化程序,再谈扩容。
与抓取和收录的关系
高峰不只影响用户,也影响爬虫。抓取工具和访问者要的是同一份服务器资源,处理器被打满时,两边的请求一起排队。Google 把抓取容量的上限和服务器承受能力绑在一起,网站响应变慢、返回 5xx 或 429 时,“抓取容量上限会降低,Google 的抓取量也会减少”[2]。
百度把一次收录拆成三步,第一步就是从互联网抓取网页[3]。抓取这一步依赖机器一直可达,Bing 也提醒,如果“我们无法持续抓取你的网站,就可能不再收录它”[1]。弹性伸缩在流量冲高时把机器补上,让响应别掉到 5xx,抓取量才不会被压下来。
落地前要准备的东西
上弹性之前,有几件事得先就位。新实例是被临时开出来的,上面得有现成的环境和代码才能马上接活,这一般由一份提前定好的镜像来保证。伸缩会自动开关机器,计费上限和告警要先设好,防止某个指标异常把实例数一路顶到最大值,费用跟着失控。
还有一条要写清楚:哪些机器能被随时收回。承载长事务、正在跑定时任务的实例不该被缩容误删,得和接前端请求的实例分开。这些边界划定之后,弹性伸缩才敢真的动。
附录
参见
参考资料
官方(境外)
- 《Why is my site not in the index?》,Bing 网站站长文档。
- 《优化抓取预算》,Google 搜索中心。
官方(国内)
- 《百度搜索的工作原理》,百度搜索资源平台,2023-12-21 更新。
第三方
无。
外部链接
无。