触发条件写得含糊,规则就会形同虚设,这是动态调度落地时最常见的问题。写成网络不好的时候切一下,机器无法判断什么叫不好;写成延迟连续三分钟超过设定值,就变成一条能执行的规则。代理IP的调配规则也一样,能不能执行,全看里面有没有具体数字。
触发条件要有数字
数字包括两个部分:阈值和持续时间。阈值定的是到什么程度算异常,持续时间定的是持续多久才算真异常。只写阈值不写持续时间,一次瞬时抖动就会触发切换,切完之后发现原本没事,白白折腾一趟。英雄联盟手游的对局里瞬时抖动并不少见,持续时间这一项不能省。
阈值取多少
阈值一般取日常均值的六成到八成作为警戒线。取得太低,规则一天触发十几次,通知会把人淹没;取得太高,真出问题时又不触发,规则等于没写。英雄联盟手游的对局中段对延迟的要求比开局略低,阈值可以按阶段分两档来写,这样触发次数会更贴近实际需要。
持续时间怎么写
持续时间按业务的最短可感知单位来定。对局里一次卡顿超过三秒就能被玩家感觉到,持续时间取三十秒到一分钟比较合适:足够过滤掉瞬时抖动,又不会拖到玩家已经难受了才动手。这个区间可以先用两周的触发记录校准一次,再看要不要收窄。代理IP的切换动作有几十毫秒的代价,这点开销换来的稳定是划算的。
含糊的条件等于没有条件。
触发之后怎么恢复
规则的另一半是恢复。切换只是临时动作,什么时候切回来同样要写清楚。常见做法是把恢复条件设得比触发条件宽松一些,比如触发是延迟超过设定值,恢复是回到设定值的八成以下,并且持续五分钟。这样能避免在临界点附近来回切换,也减少了对代理IP的反复占用。
恢复正常要等多久
等五分钟是个稳妥的起点。等得太短,抖动还没真的过去就切回来了,接着又要切走;等得太长,明明已经好了还在用备用线,白白占着资源。这个数值可以在跑一段时间后按触发记录做微调。
两条规则打架怎么办
两条规则同时命中时,需要一条优先顺序来裁决。顺序按影响面排:影响全部号的规则优先于影响单个号的规则,涉及切换的规则优先于只改配额的规则。写规则的时候把顺序一并写进说明,出问题时才好复盘,也方便交接。
规则的顺序定下来,冲突就不需要临时判断。
数字写清楚,规则才拦得住抖动。
动态调度的触发条件,写的时候记住三件事:阈值和持续时间都要有,恢复条件比触发条件宽松一点,两条规则打架时按影响面排序。这三条落到纸面,代理IP的自动调配就不会变成一堆没人看得懂的设置。
