震驚,難道這就是“西安一碼通”總崩潰的真實(shí)原因?
大家好,我是校長(zhǎng)。
有讀者讓我聊一聊關(guān)于西安一碼通大數(shù)據(jù)系統(tǒng)崩潰的問(wèn)題,癥結(jié)在哪?領(lǐng)導(dǎo)怎么就被撤職了?
領(lǐng)導(dǎo)被撤職這件事,咱可不敢亂分析。
但是,我們可以從技術(shù)的角度來(lái)聊一聊西安一碼通崩潰這件事。
先從最近網(wǎng)上流傳的一個(gè)特別火的截圖聊一聊吧。
呃,看到了么?
由于系統(tǒng)群體規(guī)模和訪問(wèn)規(guī)模的特殊性,每一行代碼、每一張圖片、每一個(gè)技術(shù)文檔都反復(fù)核準(zhǔn),優(yōu)化再優(yōu)化,精益求精。為確保系統(tǒng)運(yùn)行更高效,他們將一張圖片從 1MB 壓縮到 500KB,再?gòu)?500KB 優(yōu)化到 100KB。這樣的工作看似簡(jiǎn)單,卻蘊(yùn)含著高技術(shù)含量,他們連續(xù)兩天兩夜守在電腦前,終于攻下難關(guān)。在不斷的優(yōu)化過(guò)程中,“一碼通” 平臺(tái)形成了 A\B\C 三個(gè)主從備環(huán)境的基本框架,能夠滿足在各種突發(fā)情況下,實(shí)現(xiàn)快速響應(yīng)與切換高可用環(huán)境。一個(gè)又一個(gè)看似微不足道的改進(jìn),最終構(gòu)建起 “一碼通” 平臺(tái)整體的穩(wěn)定、高效運(yùn)行。
這是在 2021 年 6 月份的新聞稿,估計(jì)是寫給領(lǐng)導(dǎo)看的,畢竟領(lǐng)導(dǎo)不懂技術(shù)啊。
一張圖片從 1 MB 壓縮到 500 KB ,再壓縮到 100 KB 都可以拿出來(lái)給領(lǐng)導(dǎo)炫耀,這樣的開發(fā)團(tuán)隊(duì)技術(shù)能好?還兩天兩夜守在電腦旁邊攻下難關(guān)。
對(duì)此,一碼通技術(shù)保障組還榮獲了 2021 年 “政府信息化管理創(chuàng)新獎(jiǎng)”,以及 2020 年 “西安青年五四獎(jiǎng)?wù)录w”。
這次疫情,讓西安一碼通半個(gè)月的時(shí)間,崩潰了 2 次,現(xiàn)在回想起來(lái)這些獎(jiǎng)項(xiàng)?多多少少是不是有點(diǎn)可笑呢?
其實(shí),我前天看到這條新聞的時(shí)候,我還在納悶?zāi)?這里的圖片壓縮指的是什么圖片的壓縮呢?是一碼通上的二維碼嗎?
為什么服務(wù)器端要保存或者生成圖片二維碼呢?意義在哪里呢?本質(zhì)上二維碼就是一串字符,完全可以在移動(dòng)端等終端設(shè)備上生成啊,服務(wù)器將字符串發(fā)給手機(jī)終端 App,App 根據(jù)傳過(guò)來(lái)的字符串在手機(jī)上生成二維碼豈不是更方便,更快捷呢?
這樣就可以給服務(wù)器端節(jié)省很大的壓力,節(jié)省算力。
圖片等文件,在各個(gè)終端之間傳輸,本質(zhì)上都是傳輸?shù)淖止?jié),只不過(guò)是有一個(gè)轉(zhuǎn)換的過(guò)程,如果你在服務(wù)器端進(jìn)行轉(zhuǎn)換,那肯定很消耗服務(wù)器的性能啊,西安 1000 多萬(wàn)人,比如:同時(shí)打開一碼通的人有 100 萬(wàn)人,100 萬(wàn)人的圖片都服務(wù)器端生成和 100 萬(wàn)人的圖片都在各自手機(jī)終端上的 App 生成,哪個(gè)更快,更節(jié)省?這都是常識(shí)吧?
不理解。
我看很多人也都有我這樣的質(zhì)疑,后來(lái)才發(fā)現(xiàn),外包團(tuán)隊(duì)還算靠譜,這里的圖片壓縮并不是二維碼。
二維碼圖片是本地渲染生成的,不是從服務(wù)器端下載的。
那這里的圖片是什么?是首頁(yè)里的新聞圖片和廣告位圖片。
根據(jù)網(wǎng)上其他技術(shù)人的抓包顯示,好像最大的那張圖是:
呃,你沒(méi)看錯(cuò),這張圖是從服務(wù)器端拉回來(lái)的。
我感覺這就有點(diǎn)迷惑了,既然是一個(gè)查詢功能的展示圖,就相當(dāng)于 icon,不是動(dòng)態(tài)變化的廣告位,那為什么要從服務(wù)器端拉取呢?直接寫死在 App 本地不就行了嗎?這樣既可以省流量,也可以節(jié)省服務(wù)器端的帶寬,這樣干不是徒增壓力嗎?
而且,在我看來(lái),這個(gè)軟件的設(shè)計(jì),產(chǎn)品經(jīng)理也要負(fù)很大責(zé)任,首頁(yè)羅列了這么多的功能,都超出一屏幕了,尤其是下面的「資訊頭條」,每條新聞都帶著圖片,一進(jìn)來(lái)就請(qǐng)求服務(wù)器拉去資源,你說(shuō)服務(wù)器壓力能不大嗎?
這種無(wú)關(guān)緊要的功能,完全可以放到二級(jí),三級(jí)頁(yè)面,用戶不打開頁(yè)面,自然沒(méi)有請(qǐng)求,服務(wù)器壓力就會(huì)減少很多。
對(duì)我來(lái)講,工具類軟件,首頁(yè)超出一屏幕的功能羅列在我看來(lái)都屬于不合格的產(chǎn)品。
當(dāng)然了,吐槽歸吐槽。
雖然從產(chǎn)品的角度來(lái)講,有點(diǎn)不合格。但是,導(dǎo)致一碼通崩潰的主要原因,我感覺應(yīng)該不是圖片的原因。
大概率可能跟服務(wù)器帶寬有關(guān)系。
然后,我又搜集了資料,找到了如下數(shù)據(jù):
一碼通注冊(cè)用戶 4695.2 萬(wàn),每分鐘掃碼量 120 萬(wàn),也就是 2 萬(wàn) TPS(次每秒)。
2021 年 12 月 20 日早 7 時(shí) 40 分左右,西安 “一碼通” 用戶訪問(wèn)量激增,每秒訪問(wèn)量達(dá)到以往峰值的 10 倍以上,造成網(wǎng)絡(luò)擁塞,致使包括 “一碼通” 在內(nèi)的部分應(yīng)用系統(tǒng)無(wú)法正常使用。
根據(jù)一碼通 12 月的數(shù)據(jù)顯示日均掃碼量是 800 萬(wàn),而 20 日的訪問(wèn)量是以前峰值的 10 倍以上。所以,建議市民非必要不要展碼亮碼。
有網(wǎng)友說(shuō):假定, “是以往峰值 10 倍以上” 的說(shuō)辭正確,推算新的峰值訪問(wèn)量將達(dá)到 20 萬(wàn) TPS,按每秒處理 1000 個(gè)事務(wù)則必須打開 1 萬(wàn)個(gè)并發(fā)連接的經(jīng)驗(yàn)來(lái)判斷,一碼通按照每秒 200 萬(wàn)的峰值請(qǐng)求來(lái)設(shè)計(jì)才會(huì)保險(xiǎn)。
再看看承包單位吧。
中標(biāo)單位是知名外包公司東軟,但是一期的價(jià)格是:46 萬(wàn)。
說(shuō)實(shí)話,一個(gè)承載 1000 萬(wàn)多人的產(chǎn)品, 46 萬(wàn)真心是不高。這么低的價(jià)格,你說(shuō)能做出什么好產(chǎn)品來(lái)呢?
到這里你可能會(huì)說(shuō):價(jià)格低,不一定人家技術(shù)差,可能就是帶寬不夠。
那咱接著看。
由于 2021 年 12 月 20 日一碼通崩潰過(guò)一回了,所以為了緊急應(yīng)對(duì)這次疫情,總帶寬都達(dá)到了 700 G ,你還想咋地呢?
所以,不是帶寬的問(wèn)題。
本質(zhì)上就是軟件架構(gòu)和系統(tǒng)部署有問(wèn)題,都給你擴(kuò)容到 700 G 了,硬件都給你拉滿了,還能崩潰。
所以,在我看來(lái)就是一開始一期項(xiàng)目中標(biāo) 46 萬(wàn),這 46 萬(wàn)的價(jià)格,肯定外包公司沒(méi)有用心對(duì)待,你想想 46 萬(wàn)夠干什么的?一個(gè)日訪問(wèn)量百萬(wàn)級(jí)的產(chǎn)品??赡芫褪歉杏X價(jià)格低,加上時(shí)間緊任務(wù)重,基礎(chǔ)架構(gòu)沒(méi)有做好。
以致于后期想彌補(bǔ)都不太好彌補(bǔ)了,或者是根本就沒(méi)有能力彌補(bǔ)了。
我們程序員都這個(gè)都有經(jīng)驗(yàn)啊,祖?zhèn)鞔a不愿意改,不好動(dòng)。而且,一開始做項(xiàng)目的時(shí)候,為了趕進(jìn)度,能湊合就湊合,以致于后期都補(bǔ)救不了了。
最后,我想說(shuō):其實(shí)這件事挺能給相關(guān)部門警示的,我們都知道政府,國(guó)企的系統(tǒng)其實(shí)都是外包的,體驗(yàn)都不怎么好,關(guān)鍵是沒(méi)有專業(yè)的人,而且,很多數(shù)據(jù)都是涉及民生的,都只能自己設(shè)機(jī)房,搞服務(wù)器,不使用企業(yè)的云服務(wù)器之類的。
但是,未來(lái)是大數(shù)據(jù)時(shí)代,未來(lái)很多數(shù)據(jù)都是要上云的,這時(shí)候,咋辦?很多東西未來(lái)都是要全國(guó)聯(lián)網(wǎng)的,打通地域之間的限制,其實(shí),國(guó)家應(yīng)該專門成立一個(gè)國(guó)家級(jí)的技術(shù)公司,專門來(lái)搞上云這件事,不能下放,更不能外包,成立的技術(shù)公司,可以跟華為,阿里,騰訊合作,讓他們必要時(shí)提供技術(shù)支持。
否則,十幾億人口的數(shù)據(jù)上云,沒(méi)有專業(yè),有經(jīng)驗(yàn)的團(tuán)隊(duì)合作,很難搞。
不能讓各個(gè)地方各自玩各自的,更不能找那些不靠譜的外包公司。