偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

好坑,流水號(hào)重復(fù)竟然導(dǎo)致了一次生產(chǎn)事故!

開(kāi)發(fā) 項(xiàng)目管理
今天分享了我在工作中遇到的一次生產(chǎn)事故。生產(chǎn)事故除了影響業(yè)務(wù)正常運(yùn)轉(zhuǎn),處理事故的過(guò)程也是非?;ㄙM(fèi)時(shí)間和精力的。完全不出事故是不可能的,如果能對(duì)歷史故障吸取教訓(xùn),多花心思研究自己的系統(tǒng),可以有效降低故障率。

大家好,我是君哥。

最近我負(fù)責(zé)的系統(tǒng)出了一次生產(chǎn)事故,這次事故竟然是因?yàn)榱魉?hào)重復(fù)導(dǎo)致的。今天來(lái)給大家分享一下。

1.問(wèn)題背景

這個(gè)流水號(hào)的使用場(chǎng)景是上游系統(tǒng)調(diào)用下游接口時(shí)傳入一個(gè)唯一 ID,流水號(hào)這個(gè)參數(shù)在聯(lián)調(diào)或定位問(wèn)題時(shí)很方便。

我們系統(tǒng)中的流水號(hào)是一個(gè) 32 位的字符串,為了能讓上下游系統(tǒng)聯(lián)動(dòng),下游系統(tǒng)接到上游傳過(guò)來(lái)的這個(gè) ID 后,會(huì)取前 23 位,再自己拼接剩下 9 位,傳到自己要調(diào)用的下游系統(tǒng),這樣整個(gè)調(diào)用鏈通過(guò)請(qǐng)求 ID 就可以快速串起來(lái)。

圖片圖片

2.流水號(hào)使用

在我的系統(tǒng)中,自己定義流水號(hào)的后 9 位,為了能夠更清晰地從流水號(hào)中看到請(qǐng)求鏈上的系統(tǒng)調(diào)用關(guān)系,我們把流水號(hào)后 9 位定義成了系統(tǒng)編號(hào)(3位) + 子系統(tǒng)編號(hào)(2位) + 自增序列(4 位) 。

如下圖,我的系統(tǒng)生成的流水號(hào)前 23 位來(lái)自上游,后 9 位是 001(系統(tǒng)編碼) + 01(子系統(tǒng)編碼) + (0 ~ 9999自增)。

圖片圖片

在我們的業(yè)務(wù)場(chǎng)景中,上游系統(tǒng)調(diào)用我的系統(tǒng),我的系統(tǒng)有 10000 個(gè)流水號(hào),支撐 10000 筆交易,理論上足夠使用了。

不幸的,系統(tǒng)中的業(yè)務(wù)開(kāi)發(fā)同事并沒(méi)有注意到流水號(hào)生成規(guī)則,因?yàn)榱魉?hào)生成工具是一個(gè)成熟的 util 類,大家直接調(diào)用獲取流水號(hào)。

而這一次的事故中,我們的業(yè)務(wù)是一個(gè)批量業(yè)務(wù),收到上游系統(tǒng)的請(qǐng)求后,我們的處理邏輯是讀取合作方推送的文件,然后對(duì)每一個(gè)文件調(diào)用下游接口進(jìn)行處理。每一個(gè)文件處理需要調(diào)用下游四個(gè)接口,每一個(gè)接口都需要新的流水號(hào)。

圖片圖片

這樣我們就能看到流水號(hào)生成工具的瓶頸了,如果超過(guò) 2500 個(gè)文件,10000 個(gè)流水號(hào)就會(huì)被用完。而流水號(hào)生成工具的邏輯是如果流水號(hào)用完,就會(huì)從 0 開(kāi)始重新生成,造成了流水號(hào)重復(fù)。

下游系統(tǒng)會(huì)對(duì)流水號(hào)進(jìn)行判斷,收到重復(fù)的流水號(hào),直接返回接口調(diào)用失敗。因?yàn)槭〉恼{(diào)用比較多,觸發(fā)了生產(chǎn)告警。

3.事故處理

比較慶幸的是,這次事故并沒(méi)有造成交易阻斷、現(xiàn)金損失、客戶體驗(yàn)差等問(wèn)題。還有一點(diǎn)幸運(yùn)是正好趕在上線窗口前發(fā)現(xiàn)了,沒(méi)有走緊急上線流程。要知道,緊急上線對(duì)團(tuán)隊(duì)和個(gè)人的績(jī)效考核都會(huì)產(chǎn)生影響。

但交易失敗的三方文件會(huì)影響合規(guī)檢查,必須進(jìn)行交易補(bǔ)償。

我們團(tuán)隊(duì)做的修復(fù)工作是及時(shí)修改了流水號(hào)生成規(guī)則,我們把后面 6 為定義成自增的序列,這樣足夠滿足所有場(chǎng)景的使用了,而我們保留系統(tǒng)編碼,對(duì)系統(tǒng)交易鏈路追蹤是非常必要的。

上線后,請(qǐng)上游系統(tǒng)再次觸發(fā)接口調(diào)用,對(duì)之前失敗的三方文件進(jìn)行補(bǔ)償處理。

4.聊聊事故

無(wú)論在國(guó)企、銀行還是互聯(lián)網(wǎng)公司上班,生產(chǎn)事故的出現(xiàn),都可能會(huì)影響到公司正常業(yè)務(wù)的開(kāi)展,甚至讓業(yè)務(wù)遭受損失。嚴(yán)重的,事故當(dāng)事人會(huì)收到嚴(yán)格處罰,甚至被淘汰掉。

除了對(duì)考核的影響,解決故障的過(guò)程也是非常耗時(shí)的。

4.1 應(yīng)急措施

在沒(méi)有定位到問(wèn)題之前,必須先采取緊急措施接觸生產(chǎn)告警,以免造成大的業(yè)務(wù)損失。應(yīng)急措施包括但不限于重啟服務(wù)、執(zhí)行應(yīng)急腳本、業(yè)務(wù)降級(jí)等。

4.2 定位問(wèn)題

采用應(yīng)急手段解決故障后,就要開(kāi)始定位問(wèn)題了。有的問(wèn)題可能不太好定位,尤其是一些老代碼,作者已經(jīng)離職,也沒(méi)有留下什么詳細(xì)的文檔。接手人可能之前看過(guò)代碼,但是過(guò)了很長(zhǎng)時(shí)間又記不清了。

4.3 評(píng)估業(yè)務(wù)影響

再?gòu)?fù)雜的問(wèn)題,最終肯定能定位到原因。接著就是評(píng)估業(yè)務(wù)影響,這一步也是必須要做的,因?yàn)槎鄶?shù)情況下,對(duì)業(yè)務(wù)的影響大小決定了這次事故的級(jí)別,這項(xiàng)工作一般會(huì)有業(yè)務(wù)參與。

比如我過(guò)往的一家公司規(guī)定,故障超過(guò) 15 分鐘,影響超過(guò) 100 筆訂單的故障定義為一級(jí)故障。

4.4 向上匯報(bào)

接著就是給領(lǐng)導(dǎo)匯報(bào),甚至需要層層匯報(bào)。這一步可以說(shuō)是最難做的。

首先需要明確問(wèn)題責(zé)任人或者責(zé)任團(tuán)隊(duì),因?yàn)楣收峡赡軙?huì)影響到績(jī)效考核,所以很多時(shí)候會(huì)遇到扯皮或帥鍋的情況,沒(méi)有一個(gè)領(lǐng)導(dǎo)愿意讓自己的團(tuán)隊(duì)背鍋。有時(shí)候把鍋甩給中間件,數(shù)據(jù)庫(kù)或其他底層組件,也是一個(gè)選擇。

撰寫(xiě)事故報(bào)告也是非常耗時(shí)的一個(gè)工作,領(lǐng)導(dǎo)不可能像技術(shù)人員一樣通過(guò)看代碼了解事故原因,他們需要故障報(bào)告能夠清晰易懂,甚至幾句話就能講明白。

4.5 復(fù)盤

事故復(fù)盤是為了讓團(tuán)隊(duì)能夠了解到故障的根本原因,作為經(jīng)驗(yàn)教訓(xùn),防止再犯。

5 總結(jié)

今天分享了我在工作中遇到的一次生產(chǎn)事故。生產(chǎn)事故除了影響業(yè)務(wù)正常運(yùn)轉(zhuǎn),處理事故的過(guò)程也是非?;ㄙM(fèi)時(shí)間和精力的。完全不出事故是不可能的,如果能對(duì)歷史故障吸取教訓(xùn),多花心思研究自己的系統(tǒng),可以有效降低故障率。

責(zé)任編輯:武曉燕 來(lái)源: 君哥聊技術(shù)
相關(guān)推薦

2020-09-25 07:57:42

生產(chǎn)事故系統(tǒng)

2022-06-06 11:31:31

MySQL數(shù)據(jù)查詢

2019-01-21 11:17:13

CPU優(yōu)化定位

2022-10-17 08:31:03

生產(chǎn)環(huán)境P0項(xiàng)目

2020-10-21 12:10:30

訂單號(hào)Java代碼

2021-03-01 06:14:50

環(huán)境高并發(fā)延遲

2018-12-06 16:25:39

數(shù)據(jù)庫(kù)服務(wù)器線程池

2020-11-03 07:34:12

Kafka后端工程師

2022-06-01 06:17:42

微服務(wù)Kafka

2017-11-09 09:06:29

流量暴增優(yōu)化

2023-01-16 14:49:00

MongoDB數(shù)據(jù)庫(kù)

2022-07-11 13:58:14

數(shù)據(jù)庫(kù)業(yè)務(wù)流程系統(tǒng)

2019-12-16 07:18:42

數(shù)據(jù)庫(kù)SQL代碼

2019-11-18 13:42:55

MySQL數(shù)據(jù)庫(kù)遷移

2019-08-19 01:34:38

數(shù)據(jù)庫(kù)SQL數(shù)據(jù)庫(kù)優(yōu)化

2019-09-05 09:17:37

MySQL數(shù)據(jù)庫(kù)線程

2022-11-16 08:00:00

雪花算法原理

2019-11-22 08:05:01

數(shù)據(jù)庫(kù)mysql分區(qū)

2019-12-12 10:38:10

mysql數(shù)據(jù)庫(kù)nnodb

2017-10-27 09:01:26

Oracle存儲(chǔ)管理
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)