当前位置:首页 > 科技  > 软件

好坑,流水号重复竟然导致了一次生产事故!

来源: 责编: 时间:2024-06-05 17:44:56 291观看
导读大家好,我是君哥。最近我负责的系统出了一次生产事故,这次事故竟然是因为流水号重复导致的。今天来给大家分享一下。1.问题背景这个流水号的使用场景是上游系统调用下游接口时传入一个唯一 ID,流水号这个参数在联调或定

大家好,我是君哥。pSb28资讯网——每日最新资讯28at.com

最近我负责的系统出了一次生产事故,这次事故竟然是因为流水号重复导致的。今天来给大家分享一下。pSb28资讯网——每日最新资讯28at.com

1.问题背景

这个流水号的使用场景是上游系统调用下游接口时传入一个唯一 ID,流水号这个参数在联调或定位问题时很方便。pSb28资讯网——每日最新资讯28at.com

我们系统中的流水号是一个 32 位的字符串,为了能让上下游系统联动,下游系统接到上游传过来的这个 ID 后,会取前 23 位,再自己拼接剩下 9 位,传到自己要调用的下游系统,这样整个调用链通过请求 ID 就可以快速串起来。pSb28资讯网——每日最新资讯28at.com

图片图片pSb28资讯网——每日最新资讯28at.com

2.流水号使用

在我的系统中,自己定义流水号的后 9 位,为了能够更清晰地从流水号中看到请求链上的系统调用关系,我们把流水号后 9 位定义成了系统编号(3位) + 子系统编号(2位) + 自增序列(4 位) 。pSb28资讯网——每日最新资讯28at.com

如下图,我的系统生成的流水号前 23 位来自上游,后 9 位是 001(系统编码) + 01(子系统编码) + (0 ~ 9999自增)。pSb28资讯网——每日最新资讯28at.com

图片图片pSb28资讯网——每日最新资讯28at.com

在我们的业务场景中,上游系统调用我的系统,我的系统有 10000 个流水号,支撑 10000 笔交易,理论上足够使用了。pSb28资讯网——每日最新资讯28at.com

不幸的,系统中的业务开发同事并没有注意到流水号生成规则,因为流水号生成工具是一个成熟的 util 类,大家直接调用获取流水号。pSb28资讯网——每日最新资讯28at.com

而这一次的事故中,我们的业务是一个批量业务,收到上游系统的请求后,我们的处理逻辑是读取合作方推送的文件,然后对每一个文件调用下游接口进行处理。每一个文件处理需要调用下游四个接口,每一个接口都需要新的流水号。pSb28资讯网——每日最新资讯28at.com

图片图片pSb28资讯网——每日最新资讯28at.com

这样我们就能看到流水号生成工具的瓶颈了,如果超过 2500 个文件,10000 个流水号就会被用完。而流水号生成工具的逻辑是如果流水号用完,就会从 0 开始重新生成,造成了流水号重复。pSb28资讯网——每日最新资讯28at.com

下游系统会对流水号进行判断,收到重复的流水号,直接返回接口调用失败。因为失败的调用比较多,触发了生产告警。pSb28资讯网——每日最新资讯28at.com

3.事故处理

比较庆幸的是,这次事故并没有造成交易阻断、现金损失、客户体验差等问题。还有一点幸运是正好赶在上线窗口前发现了,没有走紧急上线流程。要知道,紧急上线对团队和个人的绩效考核都会产生影响。pSb28资讯网——每日最新资讯28at.com

但交易失败的三方文件会影响合规检查,必须进行交易补偿。pSb28资讯网——每日最新资讯28at.com

我们团队做的修复工作是及时修改了流水号生成规则,我们把后面 6 为定义成自增的序列,这样足够满足所有场景的使用了,而我们保留系统编码,对系统交易链路追踪是非常必要的。pSb28资讯网——每日最新资讯28at.com

上线后,请上游系统再次触发接口调用,对之前失败的三方文件进行补偿处理。pSb28资讯网——每日最新资讯28at.com

4.聊聊事故

无论在国企、银行还是互联网公司上班,生产事故的出现,都可能会影响到公司正常业务的开展,甚至让业务遭受损失。严重的,事故当事人会收到严格处罚,甚至被淘汰掉。pSb28资讯网——每日最新资讯28at.com

除了对考核的影响,解决故障的过程也是非常耗时的。pSb28资讯网——每日最新资讯28at.com

4.1 应急措施

在没有定位到问题之前,必须先采取紧急措施接触生产告警,以免造成大的业务损失。应急措施包括但不限于重启服务、执行应急脚本、业务降级等。pSb28资讯网——每日最新资讯28at.com

4.2 定位问题

采用应急手段解决故障后,就要开始定位问题了。有的问题可能不太好定位,尤其是一些老代码,作者已经离职,也没有留下什么详细的文档。接手人可能之前看过代码,但是过了很长时间又记不清了。pSb28资讯网——每日最新资讯28at.com

4.3 评估业务影响

再复杂的问题,最终肯定能定位到原因。接着就是评估业务影响,这一步也是必须要做的,因为多数情况下,对业务的影响大小决定了这次事故的级别,这项工作一般会有业务参与。pSb28资讯网——每日最新资讯28at.com

比如我过往的一家公司规定,故障超过 15 分钟,影响超过 100 笔订单的故障定义为一级故障。pSb28资讯网——每日最新资讯28at.com

4.4 向上汇报

接着就是给领导汇报,甚至需要层层汇报。这一步可以说是最难做的。pSb28资讯网——每日最新资讯28at.com

首先需要明确问题责任人或者责任团队,因为故障可能会影响到绩效考核,所以很多时候会遇到扯皮或帅锅的情况,没有一个领导愿意让自己的团队背锅。有时候把锅甩给中间件,数据库或其他底层组件,也是一个选择。pSb28资讯网——每日最新资讯28at.com

撰写事故报告也是非常耗时的一个工作,领导不可能像技术人员一样通过看代码了解事故原因,他们需要故障报告能够清晰易懂,甚至几句话就能讲明白。pSb28资讯网——每日最新资讯28at.com

4.5 复盘

事故复盘是为了让团队能够了解到故障的根本原因,作为经验教训,防止再犯。pSb28资讯网——每日最新资讯28at.com

5 总结

今天分享了我在工作中遇到的一次生产事故。生产事故除了影响业务正常运转,处理事故的过程也是非常花费时间和精力的。完全不出事故是不可能的,如果能对历史故障吸取教训,多花心思研究自己的系统,可以有效降低故障率。pSb28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-92145-0.html好坑,流水号重复竟然导致了一次生产事故!

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 如何线程安全的使用 HashMap

下一篇: 架构本质和微服务,你了解吗?

标签:
  • 热门焦点
  • 小米平板5 Pro 12.4简评:多专多能 兼顾影音娱乐的大屏利器

    疫情带来了网课,网课盘活了安卓平板,安卓平板市场虽然中途停滞了几年,但好的一点就是停滞的这几年行业又有了新的发展方向,例如超窄边框、高刷新率、多摄镜头组合等,这就让安卓
  • 企业采用CRM系统的11个好处

    客户关系管理(CRM)软件可以为企业提供很多的好处,从客户保留到提高生产力。  CRM软件用于企业收集客户互动,以改善客户体验和满意度。  CRM软件市场规模如今超过580
  • 如何使用JavaScript创建一只图像放大镜?

    译者 | 布加迪审校 | 重楼如果您曾经浏览过购物网站,可能遇到过图像放大功能。它可以让您放大图像的特定区域,以便浏览。结合这个小小的重要功能可以大大改善您网站的用户体验
  • 多线程开发带来的问题与解决方法

    使用多线程主要会带来以下几个问题:(一)线程安全问题  线程安全问题指的是在某一线程从开始访问到结束访问某一数据期间,该数据被其他的线程所修改,那么对于当前线程而言,该线程
  • 破圈是B站头上的紧箍咒

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之每年的暑期档都少不了瞄准追剧女孩们的古偶剧集,2021年有优酷的《山河令》,2022年有爱奇艺的《苍兰诀》,今年却轮到小破站抓住了追
  • 10天营收超1亿美元,《星铁》比《原神》差在哪?

    来源:伯虎财经作者:陈平安即便你没玩过《原神》,你一定听说过的它的大名。恨它的人把《原神》开服那天称作是中国游戏史上最黑暗的一天,有粉丝因为索尼在PS平台上线《原神》,怒而
  • 网红炒股不为了赚钱,那就是耍流氓!

    来源:首席商业评论6月26日高调宣布入市,网络名嘴大v胡锡进居然进军了股市。在一次财经媒体峰会上,几个财经圈媒体大佬就“胡锡进炒股是否知道认真报道”展开讨论。有
  • 华为Mate 60保护壳曝光:硕大后置相机模组 凸起程度有惊喜

    这段时间以来,关于华为新旗舰的爆料日渐密集。据此前多方爆料,今年华为将开始恢复一年双旗舰战略,除上半年推出的P60系列外,往年下半年的Mate系列也将
  • DRAM存储器10月价格下跌,NAND闪存本月价格与上月持平

    10月30日,据韩国媒体消息,自今年年初以来一直在上涨的 DRAM 存储器的交易价格仅在本月就下跌了近 10%,此次是全年首次降价,而NAND 闪存本月价格与上月持平。市
Top