谁说学数学没有用!一个真实 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% ,符合预期,问题解决!
在这里插入图片描述

附录

数据概率在生产生活中无处不在,在于你是否思考,发现事物的内在关系!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魏小言

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值