谁说学数学没有用!一个真实 Bug 引发的数学概率运算.....
Posted 魏小言
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了谁说学数学没有用!一个真实 Bug 引发的数学概率运算.....相关的知识,希望对你有一定的参考价值。
谁说学数学没有用!一个真实 Bug 引发的数学概率运算…
从幼儿园的算术到小学到数学,再到大学的高数,甚至是研究生的专数,数学学科贯穿全部,是同学频频吐槽难、用不到的学科之一。
那么学数学到底有没有用呢?
答案是:有。
学数学除了精神层面可以锻炼个人思维逻辑,那么实际生产中用的到吗?
答案还是:有用到。下面聊一聊,一个真实 Bug 引发的数学概率运算…
生产背景
实际生产场景比较复杂,简单抽象为
Ab Test 配置两个实验维度分别为 userId、requestId,名称分别为 Exp1、Exp2,命中比例都为 90%,且命中实验将落地日志。
就是在这两条实验中,发生了诡异的事情…
问题疑现
服务上线之后,通过落地日志打点,监控发现每个实验命中实验总量比请求总量少 ~19% !
单独看这个值,很诡异!如果是实验的随机性和正交性导致的波动,为什么是 ~19%?
问诊分析
理论是实践的先驱者
下面来分析一波,毕竟 理论是实践的先驱者 。从数学概率上分析分析正常的功能监控值应该是多少?到底是差了多少?折损在哪部分?
分析如下:
- 命中 Exp1 & Exp2 : 0.9 * 0.9 = 0.81
- 命中 Exp1,未命中 Exp2 :0.9 * 0.1 = 0.09
- 命中 Exp2,未命中 Exp1 :0.9 * 0.1 = 0.09
- 未命中 Exp1 & Exp2 :0.1 * 0.1 = 0.01
可以看出正常情况下,落地监控应该为 总量的 99%「1-0.01=0.99」,比请求总量少 1% 「0.01」。
故,可以断定出现 ~19%为非正常, 肯定是日志落地或实验命中逻辑出现了问题!
摸脉寻根
发现了问题,迅速进行定位。新增完善各个环节监控,梳理代码逻辑,定位在日志落地阶段。
最终发现落地遍历两个实验命中结果时,若发现未命中 Exp1 or Exp2,就直接退出。
这样的话,场景 “ 命中 Exp1,未命中 Exp2 “ or ” 命中 Exp2,未命中 Exp1 ”、“ 未命中 Exp1 & Exp2 “ 三种情况被拦截在外,只落地了 “ 命中 Exp1 & Exp2 ” 这部分日志。
根据计算场景概率:
- 拦截流量占比:0.09 + 0.09 + 0.01 = 0.19
- 落地流量占比:0.81
这不,十分吻合,问题摸清楚了,干它!
药到病除
进行代码修复调整:
落地遍历两个实验命中结果时,若发现未命中 Exp1 or Exp2,不落地处理,continue继续遍历。
上线观察,命中实验占比为总量的 99%,未命中/落地实验占比为 1% ,符合预期,问题解决!
附录
数据概率在生产生活中无处不在,在于你是否思考,发现事物的内在关系!
以上是关于谁说学数学没有用!一个真实 Bug 引发的数学概率运算.....的主要内容,如果未能解决你的问题,请参考以下文章