翻车了,被读者找出 BUG|世界信息
2023-06-12 18:23:04 来源:博客园
大家好呀,我是小楼。
(资料图片)
本文是上篇文章《使用增强版 singleflight 合并事件推送,效果炸裂!》的续集,没看过前文必须要先看完才能看本文,实在不想看,拉到文章末尾,给我点个赞再退出吧~Doge
上篇文章发出后,有一位读者朋友给我发私信,写了一大段话:
一开始,没太看懂,于是就细问了一下
在看了解释之后,感觉好像有点懂了,再三思考后,确认了,这里面有 BUG。
理想状态为了描述简单,这里我用字母本身表示事件发生,如 A
,用字母加一撇表示事件开始执行,如 A"
,用字母加两撇表示事件执行结束后的状态,如 D""
。
如下表示我们之前思考的理想状态:A 事件到来便执行,在执行结束前又先后来了 B、C、D 三个事件,先 Hold 住,待 A 执行完成后,B、C、D 同时进入 sigleflight group 中抢执行,最终结果是 D"",感觉非常完美。
对应到代码上是这样:
case 1但这位读者提出了一个疑问,如果在 B、C、D 执行的时候又来一个 E 事件,那这个 E 事件将会重走 A 事件的路,如果这个 E 事件执行的比较快,先于 B、C、D 事件完成,那不就有问题了?
E 事件最后到,我们期望的结果应该是 E"",但按这个推理,最终结果是 D"",显然不符合预期。
case 2同理,如果在 E 事件执行期间累积了 F、G 事件,且 F、G 也比较争气,在 B、C、D 完成之前完成了:
期望的是 G"",但最终结果是 D""。
线上有问题吗?这两个场景确实很难测试到,如果不幸遇到,还是有风险的。我们复盘了自己的系统,发现我们的系统是可以解这个问题的。
我们的系统会针对推送下去不一致的数据会定期补偿,具体怎么做的呢?
在推送之前,针对同一种推送,也就是相同的 key 生成(存在则更新)同一条记录,该记录包含两个时间 t1、t2,推送的开始时间 tn(精确到纳秒)记录到 t1,推送完成后将 tn 记录到 t2,这两次记录在一个方法中,伪代码是这样:
tn := time.Now().UnixNano()markT1(key, tn)push(key)markT2(key, tn)
如果 t1 = t2 则说明推送没有问题,如果 t1 != t2 则说明这条推送需要补偿,每 10s 扫描一次需要补偿的事件进行重新下发推送
我们以 case 1 为例,按照时间顺序
A 执行完成时,t1= ta,t2 = taD 开始执行,t1 = tdE 开始执行,t1 = te,E 执行结束 t2 = teD 执行结束,t1 = te,t2 = td10s 后发现 t1 != t2,于是触发重新下发逻辑,重新推送最新数据为 E""最后还好我们线上系统有一层保护机制,否则可能要出事。如果在 singleflight 层面去解决这个问题,暂时我还没有想到很好的办法,如果读者朋友们有好的方法,欢迎私信我。
不得不说读者朋友们当中还是有不少读了我的文章,而且认真思考了的,在此表示感谢,也欢迎大家指出文章中的错误。
最后感谢能抽空看到这里,如果你能点赞
、在看
、分享
,我会更加感激不尽~
搜索关注微信公众号"捉虫大师",后端技术分享,架构设计、性能优化、源码阅读、问题排查、踩坑实践
[责任编辑:]
相关阅读
- (2023-06-12)翻车了,被读者找出 BUG|世界信息
- (2023-06-12)世界快讯:【主题教育】阿坝师范学院党委副书记、纪委书记朱建军一行莅临预科教育学院指导工作
- (2023-06-12)天天基金网官网(天天基金网是个什么网站)
- (2023-06-12)6月12日龙虎榜追踪,机构青睐这些个股_全球播报
- (2023-06-12)走进长春!100个网红打卡地之石人沟村
- (2023-06-12)民生信用卡提醒消费者警惕非法“代理维权”陷阱
- (2023-06-12)即时焦点:基金回调是什么意思啊(基金回调是什么意思)
- (2023-06-12)华统股份:5月生猪销售收入同比增长58.9%
- (2023-06-12)集电弓和受电弓_集电弓-天天日报
- (2023-06-12)世界动态:同济大学继续教育学院_同济大学65472是什么意思梗
- (2023-06-12)绿豆煮粥需要泡吗? 快看点
- (2023-06-12)卷!全系车型降价3万元,蔚来李斌:凌晨三点还在反复推敲
- (2023-06-12)两年35起融资,上科大多家医药企业正等待跨入B轮_每日热点
- (2023-06-12)乱套!三队当家球星恐遭甩卖,湖人勇士面临重组,哈登欧文搅局
- (2023-06-12)江苏省交通运输行业盐城法律服务站揭牌|全球实时
- (2023-06-12)天天要闻:江苏召开“知识产权·青年行”志愿者专题培训会
- (2023-06-12)全球微速讯:“90斤穿不下S码裙子”,是谁在制造身材焦虑?
- (2023-06-12)2022年五大计划单列市GDP一览,有潜力,更有后劲!
- (2023-06-12)湖医附一医院入选湖南省公立医院高质量发展示范性医院培育单位 热点
- (2023-06-12)特斯拉股价连续11天上涨 做空机构亏损超60亿美元 环球今亮点
- (2023-06-12)2023年贵州六盘水市高校毕业生“三支一扶”计划招募面试公告
- (2023-06-12)2023年四川省青少年羽毛球巡回赛(成都站)完赛 全球微速讯
- (2023-06-12)米利托今天迎来44岁生日,国际米兰官网发文祝福_世界消息
- (2023-06-12)Cell:章鱼利用RNA编辑通过改变蛋白功能来快速响应温度变化-每日看点
- (2023-06-12)从不打网球的人 怎么也会得“网球肘”?_环球热门
- (2023-06-12)当前快播:记者:泰山队放假至14日重新集结,备战中超联赛及足协杯赛
- (2023-06-12)三大指数涨跌不一 汽车板块全天强势 | 今盘三点半
- (2023-06-12)每日短讯:天正建筑7 5免费下载_天正建筑2020免费下载
- (2023-06-12)国家发改委已下达2023年以工代赈中央投资73亿元 占年度拟下达投资规模的90%以上
- (2023-06-12)人从众!梅西被迫宅在酒店、训练取消?最新情况——