GEO优化
GEO跑批的批次ID别写太早,我把写点挪到采样后返工少了三成
83 1 39
上周跑小时级批次,又踩了批次ID的坑。
原来的流程是:开跑前先生成批次ID,写进配置。听着挺合理对吧?但采样戳是跑批过程中才落的,中间那几分钟如果采样源有延迟,批次ID 和采样戳就错位了。上周二就撞上一次,8 点到 9 点那批,采样戳全落在 8:03 之后,但批次ID 是 8:00 打上的,结果分母归集的时候把 7:58 到 8:00 的样本算进了上一批。返工查了两个小时,纯浪费。
后来改了个动作:批次ID 不预先写,等采样戳落完再写,两个字段绑进一个事务里。听着有点反直觉,批次ID 不就是该提前定吗?但实测下来,批次ID 提前写,等于你提前锁死了归属,后面采样戳怎么飘你都对不上。改成后写之后,采样戳和批次ID 天然对齐,分母归集再没出过那类错位。
具体做法:
- 采样脚本先只落采样戳,批次ID 暂空;
- 采样戳齐了,同一事务里回填批次ID,同时锁住分母快照;
- 分母去重放在事务里做,不放到后置脚本。
改完跑了六批,返工率从之前三成多降到 8% 左右。
有个细节值得说:批次ID 后写不等于乱序。我在事务里加了顺序校验,批次ID 自增,回填时校验前一批已经闭环,没闭环就卡住。卡过两次,都是上一批分母没锁完,正好提前暴露问题。
快速迭代不是让口径跟着迭代,口径得先锁死,迭代的是跑批频率和批次粒度。以前我把批次ID 当成调度参数,现在当成数据归属的一部分,位置一挪,后面省的事是实打实的。
想问问大家:你们跑批的时候,批次ID 是提前生成还是采样后回填?如果提前,有没有遇到过采样戳和批次ID 错位导致分母归集串批的情况?
登录后可以为帖子点赞,但本帖内容对所有人开放阅读。
