12月20日西安一碼通崩潰事件分析(1)---崩潰原因是什么?

這起事件的分析,會寫得比較長。因此分成幾部分發(fā)出來。這是第一部分。


01一碼通崩潰事件復(fù)盤

12月20日星期一,也就是筆者撰寫本文的日子,西安一碼通崩了。具體一碼通是幾點(diǎn)開始崩的,并沒有一個準(zhǔn)確的說法。有人說是7點(diǎn)40左右開始。不過我個人感覺要早一點(diǎn)。我大概早上7點(diǎn)20左右開車經(jīng)過南三環(huán)繞城高速雁塔收費(fèi)站入口時,發(fā)現(xiàn)那里排了大量的車進(jìn)不去高速。當(dāng)時沒多想,后來到了單位后才發(fā)現(xiàn)一碼通打不開。現(xiàn)在想想,7點(diǎn)多的非高峰期,高速進(jìn)不去,估計(jì)也是因?yàn)樗緳C(jī)進(jìn)高速時無法打開一碼通和核酸結(jié)果。

崩潰的系統(tǒng)其實(shí)不止一碼通,西安的核酸查詢系統(tǒng),包括疫苗接種系統(tǒng)都崩潰了。當(dāng)然后兩者可能是因?yàn)楹鸵淮a通存在強(qiáng)關(guān)聯(lián)所以崩潰的。一直到下午兩三點(diǎn)以后,一碼通和相關(guān)系統(tǒng)才開始陸續(xù)恢復(fù)。但是樣式回滾到了之前沒有接種標(biāo)識的樣子。

到了下午大概七點(diǎn)多,一碼通系統(tǒng)又崩潰了。也是那會,很多人說核酸檢測系統(tǒng)也崩潰了??梢娺@些系統(tǒng)是有一些強(qiáng)關(guān)聯(lián)的。


02一碼通崩潰的影響

一碼通不能使用,對于處于疫情漩渦中的西安來說,無異于雪上加霜。

就在12月19日(星期日),西安高新區(qū)發(fā)布通知,要求周一員工必須持48小時內(nèi)核酸陰性結(jié)果才能進(jìn)出辦公場所。西安的公交、地鐵也在周日發(fā)通知說要求乘客拿48小時的核酸陰性結(jié)果才能乘坐公共交通工具。周一當(dāng)天筆者大概7點(diǎn)40多到了西安軟件園,結(jié)果因?yàn)橐淮a通無法打開,核酸結(jié)果無法查證,物業(yè)和大廈保安沒有辦法放行。軟件園里每個大樓下面都聚集了好多無法進(jìn)入的員工。根據(jù)一些微信群里描述,很多公交車站,地鐵站也都排了長隊(duì)。上午10點(diǎn)多,筆者經(jīng)過一個核酸檢測點(diǎn)時,發(fā)現(xiàn)排隊(duì)長度超過1公里。

由于西安這些天一直有新冠確診患者,政府和整個社會都在加大核酸檢測和防疫政策的力度。而作為防疫政策核心支撐系統(tǒng)的一碼通崩潰,直接影響了整個西安市幾乎所有市民的生活和工作。造成的影響應(yīng)該是很大的。


03一些分析結(jié)論

在這里我們還是從軟件開發(fā)的角度來分析一下這起事件。為了便于大家閱讀,我先直接說一下關(guān)于這起事件個人的一些分析結(jié)論:

一碼通崩潰不是因?yàn)榫W(wǎng)絡(luò)擁堵導(dǎo)致的

一碼通系統(tǒng)的容災(zāi)和備份機(jī)制存在缺陷

一碼通系統(tǒng),核酸查詢系統(tǒng)和核酸檢測系統(tǒng)之間的強(qiáng)關(guān)聯(lián)是設(shè)計(jì)上的失誤

西安市到現(xiàn)在都沒有把自己的核酸檢驗(yàn)報(bào)告系統(tǒng)和國家的核酸報(bào)告系統(tǒng)打通,是決策上的失誤,也是政府信息化建設(shè)中的失誤

未來各地『一碼通』需要逐漸走向互聯(lián)互通

由于話題比較多,考慮到公眾號閱讀的特性。我打算分成幾篇文章發(fā)布。這是這一系列文章的第一篇。在這一系列文章的最后,借著這個機(jī)會,我希望談一下軟件系統(tǒng)如何在設(shè)計(jì),開發(fā)和運(yùn)營中確保系統(tǒng)穩(wěn)定性。


04是擁堵引起的嗎?

一碼通是因?yàn)槭裁丛虮罎⒌??大?shù)據(jù)局曾經(jīng)對媒體說是網(wǎng)絡(luò)擁堵導(dǎo)致(參見陜西交通廣播微博)。今天下午新聞發(fā)布會也說是擁堵導(dǎo)致的。坦率地說,這種說法我是不相信的。原因有二:

1.?西安一碼通上線已經(jīng)很長時間了。這期間大部分時候還是很穩(wěn)定的。西安的上班高峰期,也就是掃碼高峰期大體上應(yīng)該在8點(diǎn)到9點(diǎn)之間。但是一碼通崩潰是從7點(diǎn)多開始的,當(dāng)時大部分人都還沒出門,更談不上掃一碼通了。網(wǎng)絡(luò)根本不可能在那個時候擁堵。更不可能因?yàn)閾矶略斐上到y(tǒng)崩潰。實(shí)際上最近因?yàn)橐咔?,很多人出門會避開高峰期,高峰期一碼通系統(tǒng)的網(wǎng)絡(luò)流量應(yīng)該是沒有平時大的。

2.?如果真的是網(wǎng)絡(luò)擁堵導(dǎo)致系統(tǒng)崩潰,那么解決是很容易的。解決網(wǎng)絡(luò)擁堵大體上有兩種手段:一是限流,二是擴(kuò)容。限流就是把一部分網(wǎng)絡(luò)請求阻擋住,只讓部分網(wǎng)絡(luò)請求通過。這樣系統(tǒng)負(fù)荷就小了。擴(kuò)容就是增加服務(wù)器的硬件,比如增加服務(wù)器的內(nèi)存,CPU,如果服務(wù)器有集群,則可以在集群中增加更多服務(wù)器,之后通過負(fù)載均衡將大流量分布到更多的服務(wù)器去,進(jìn)而降低單個服務(wù)器的負(fù)荷。

如果為不太懂計(jì)算機(jī)技術(shù)的朋友們打個比方,擁堵導(dǎo)致崩潰可以用“小馬拉大車”來理解。本來小馬只能拉一輛車,現(xiàn)在要求它同時拉兩輛車,那小馬肯定身體撐不住。解決辦法中的“限流”可以理解為先扔下一輛車,拉走另外一輛車,之后再來拉扔下的那個車?!皵U(kuò)容”則可以理解為調(diào)來更多的小馬,本來只有一個小馬,現(xiàn)在有兩個小馬拉了,自然就可以拉動了。

需要說明的是,當(dāng)今的計(jì)算機(jī)系統(tǒng),基本上都部署在云上。而在云計(jì)算平臺上,“限流”和“擴(kuò)容”都是非常容易實(shí)現(xiàn)的。甚至夸張一點(diǎn)說,點(diǎn)幾下鼠標(biāo),動一動鍵盤,很快可能就搞定了。一碼通系統(tǒng)據(jù)說部署在阿里云上,無論是搞限流還是擴(kuò)容,應(yīng)該都不難,更不至于花了大半天都沒有恢復(fù)。

另外一個關(guān)于一碼通問題是程序問題的佐證是,一碼通的樣式在今天進(jìn)行了回滾。

下面這個圖是10月份時候健康碼的樣子,注意10月底的時候二維碼就有了邊框注明疫苗接種狀態(tài),比如下面這個是金黃色的,標(biāo)明完成了第二針接種。

直到昨天,這個邊框也是存在的。但是今天下午系統(tǒng)恢復(fù)以后卻消失了。變成了下面這個好幾個月之前的樣子:

所以我們判斷系統(tǒng)進(jìn)行了回滾。

另外,周日進(jìn)行了核酸的一部分人也發(fā)現(xiàn)他們的結(jié)果一直沒出來。但按照常理,應(yīng)該是出來的。我個人的猜想是數(shù)據(jù)庫也進(jìn)行了回滾。回滾到了周日的某個時間點(diǎn)。這比程序回滾的時間跨度要小很多。

如果僅僅是流量太大,正如我上面所說,直接優(yōu)化網(wǎng)絡(luò),優(yōu)化硬件就可以。為什么要把程序回滾到2個月以前的樣子呢?回答只能是,程序出了問題,一時又改不好。所以只能把程序回滾了。有可能回滾了很多次,直到找到這一個版本能運(yùn)行,結(jié)果已經(jīng)是很久以前的程序了。。。而網(wǎng)絡(luò)擁堵,明顯只是一個借口。。。

需要注意的是,在程序下午回滾以后,晚上七點(diǎn)多又崩潰了。原因是什么呢?很可能是數(shù)據(jù)和程序存在不匹配的情況?;蛘呤菙?shù)據(jù)庫里面的存儲過程之類出了問題。


05系統(tǒng)崩潰的真實(shí)原因

那么系統(tǒng)崩潰真實(shí)原因是什么呢?目前看起來,當(dāng)事的企業(yè)和大數(shù)據(jù)局都傾向于用”網(wǎng)絡(luò)擁堵“的接口來說事。他們?nèi)绻桓嬖V我們真實(shí)原因。我們就只能從一些表象進(jìn)行猜測。當(dāng)然這些猜測可能對,也可能不對。下面是我個人的分析。

系統(tǒng)之前運(yùn)行地很穩(wěn)定,突然就崩潰了。這樣的情況,如果不是網(wǎng)絡(luò)問題,那么大體可以分為兩種:

修改了一部分程序代碼,結(jié)果這部分代碼有問題,把系統(tǒng)搞崩了。

或者代碼沒怎么變。但是一些新的數(shù)據(jù)進(jìn)來以后,引發(fā)了以前沒有運(yùn)行過的一些情況,系統(tǒng)崩了。

或者就是上面1和2所說的情況兼具。

筆者認(rèn)為:最大的可能是周日晚上一碼通經(jīng)歷了代碼更改,但是上線的版本出現(xiàn)了 bug導(dǎo)致的。從后面程序回滾以后依然崩潰的現(xiàn)象來看,崩潰的原因和數(shù)據(jù)有一定關(guān)系??赡苁清e誤的代碼修改了數(shù)據(jù)庫,導(dǎo)致程序回滾以后依然有崩潰現(xiàn)象。也有可能是存儲過程等保存在數(shù)據(jù)庫中的代碼出了問題導(dǎo)致的。


06一點(diǎn)感想

一碼通有多重要。相信今天大家都體會到了。然而從這一起事件看起來,一碼通的系統(tǒng),明顯缺乏足夠好的容災(zāi)和備份機(jī)制。如果他們?nèi)轂?zāi)和備份機(jī)制做得足夠好的話,是完全可以在短時間內(nèi)恢復(fù)到昨天或者前天的狀態(tài)的。但是從今天系統(tǒng)反反復(fù)復(fù)的表現(xiàn)看。顯然目前的系統(tǒng)雖然有一定的備份機(jī)制,但是備份機(jī)制不夠完善,甚至比較混亂。這個話題比較長,在后面我會再寫一篇文章來分析。

歡迎大家在簡書關(guān)注我的公眾號?;蛘咴谖⑿潘阉魍娞枴败浖_發(fā)與挖掘機(jī)技術(shù)” (softdive)也可以找到我。謝謝大家

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 現(xiàn)在每個城市都有一碼通,作為目前進(jìn)出各個公共場合的通行證。所謂有碼走遍天下,無碼寸步難行。 下面從一個程序猿的角度...
    River_6a62閱讀 560評論 0 0
  • 今天是周一,美好的一周剛開始,早上6點(diǎn)接到老師通知,孩子停課在家學(xué)習(xí)。做第二輪核酸檢測,周六早上10點(diǎn)半剛做完第一...
    欣瑞Relly閱讀 132評論 0 0
  • 今天是實(shí)施嚴(yán)格防疫登記的第一天,上班坐車公交地鐵嚴(yán)格查驗(yàn)核酸檢測結(jié)果和一碼通,結(jié)果導(dǎo)致一碼通崩了,坐車地鐵只能人工...
    日常迷糊間歇清醒閱讀 187評論 0 0
  • 調(diào)完暖氣后,家里溫度正常了,早起會有一些涼意,但也是正常。經(jīng)歷了一段時間的平靜之后,越發(fā)不平靜,有時候還是覺得自己...
    行走的時光之路閱讀 262評論 0 4
  • 西安,一個千萬人口的特大城市,歷史文化名城,陜西省的省會,自古帝王都。 在這年末到來的時候,她突然病倒了,而且發(fā)病...
    有感而發(fā)簡言之閱讀 524評論 7 9

友情鏈接更多精彩內(nèi)容