西安“一碼通”故障問題解析,IT專業(yè)人士給出這些建議
21世紀(jì)經(jīng)濟(jì)報道記者畢華章 西安報道
西安抗疫仍在進(jìn)行中,在廣泛要求48小時有效核酸政策發(fā)布以來,西安“一碼通”出現(xiàn)了系統(tǒng)故障。
具體故障包括,健康碼無法打開,頁面點擊二維碼后出現(xiàn)空白;核酸報告系統(tǒng)出現(xiàn)問題,結(jié)果無法顯示;恢復(fù)的過程中出現(xiàn)中國電信手機網(wǎng)絡(luò)可打開健康碼,而中國移動不可以等。
對于西安“一碼通”出現(xiàn)的故障問題,西安高新區(qū)一小區(qū)的10余位“一線大廠”技術(shù)咖對問題進(jìn)行了探討與交流,從前端、后端、測試等方面,對可能出現(xiàn)的多類問題及原因予以分析及推測,并給出多項建議。
其中幾位人士接受了21世紀(jì)經(jīng)濟(jì)報道記者采訪,對這些專業(yè)技術(shù)及行業(yè)術(shù)語進(jìn)行了詳細(xì)解釋,便于更多業(yè)內(nèi)外人士了解情況,促進(jìn)“一碼通”正常運維及防疫保障工作。
21世紀(jì)經(jīng)濟(jì)報道記者就此致電西安市大數(shù)據(jù)資源管理局多個業(yè)務(wù)部門,但電話無人接聽。
問題推測:性能過載、架構(gòu)設(shè)計、容災(zāi)備份
技術(shù)咖們經(jīng)過討論認(rèn)為,限流是主要問題之一。
市民在長時間無法刷出健康碼的情況下,多次退出刷新重試,新的流量到達(dá)服務(wù)器,導(dǎo)致服務(wù)器壓力變大、承受負(fù)載增加。他們認(rèn)為,西安“一碼通”系統(tǒng)可能沒做好限流措施。
緊接著是服務(wù)器問題。無論是企業(yè)和個人在租用服務(wù)器的時候都會受到峰值承受限制,一旦超過服務(wù)器的承受能力,就會導(dǎo)致服務(wù)器癱瘓,應(yīng)用程序暫停,網(wǎng)站無法訪問。造成服務(wù)器癱瘓的原因是在同一段時間內(nèi)訪問人數(shù)多,造成高流量的突進(jìn),超出了服務(wù)器的承受范圍。這一點,與西安市大數(shù)據(jù)局局長劉軍在新聞發(fā)布會上給出的回答接近。
類似的推想還有性能過載問題及場景問題。他們認(rèn)為,這是典型的性能過載場景,或許內(nèi)因是數(shù)據(jù)庫瓶頸點以及網(wǎng)絡(luò)鏈接數(shù)瓶頸點,但外因都是過載導(dǎo)致。
他們分析,或許西安“一碼通”是個門戶,核酸等“卡片”的數(shù)據(jù)是從各子系統(tǒng)引過來的服務(wù)器宕機。
上班高峰期,市民共同訪問,導(dǎo)致服務(wù)器瞬時訪問流量飆升,數(shù)據(jù)庫性能跟不上,最終整個西安“一碼通”服務(wù)掛了,可能之前設(shè)計的時候沒有考慮過這種場景。
設(shè)計漏洞方面,也許沒有考慮高流量高負(fù)載的情況,導(dǎo)致測試不充分;產(chǎn)品設(shè)計未考慮千萬級的并發(fā)訪問,交付前未進(jìn)行同等級的壓力測試。
此外,或許還涉及架構(gòu)問題。
西安“一碼通”功能影響“核酸檢測”服務(wù),說明模塊間從界面到數(shù)據(jù)調(diào)用互相影響,可能不是微前端、微服務(wù)架構(gòu)。
西安高新區(qū)一小區(qū)業(yè)主、IT行業(yè)前端人員李女士在接受21世紀(jì)經(jīng)濟(jì)報道記者采訪時表示,西安“一碼通”頁面與核酸檢測頁面是有關(guān)聯(lián)的,正常情況下這兩大業(yè)務(wù)已經(jīng)很大。“一碼通”里面不僅承載了本身的數(shù)據(jù),而且有核酸檢測數(shù)據(jù)。按道理來說,兩個模塊是不應(yīng)該互相影響的,關(guān)聯(lián)性應(yīng)該不是很高,其實可以分成兩個不同的模塊,分離開來降低它們之間的粘性。這樣做的好處是,兩塊互不影響。假如數(shù)據(jù)仍有關(guān)聯(lián),可以把關(guān)聯(lián)度降到最低,即使一個服務(wù)出現(xiàn)問題,另一個還能獨立運行。
技術(shù)咖們認(rèn)為,界面上出現(xiàn)情況,可能意味著不僅僅是“一碼通”與核酸檢測這兩個模塊之間的問題,或許后端與前端的架構(gòu)有問題,可能不是微前端、微服務(wù)架構(gòu),沒有做到很好的分離。
他們還探討了域名解析系統(tǒng)不同、容災(zāi)備份不足等方面。例如,對于中國電信網(wǎng)絡(luò)信號可以打開,中國移動網(wǎng)絡(luò)信號無法打開的情況,這或是由于不同運營商依賴的DNS(域名解析)系統(tǒng)不同,由于西安“一碼通”系統(tǒng)為電信相關(guān)公司參與,因此DNS指向新的IIP生效最快。
他們認(rèn)為,在目前國內(nèi)外疫情仍然嚴(yán)峻的背景下,西安“一碼通”相關(guān)系統(tǒng)的容災(zāi)備份建設(shè)仍不夠充分,存在未進(jìn)行故障隔離和流控處理,運維預(yù)案和彈性伸縮能力不足等問題。
未來“一碼通”如何優(yōu)化完善?
技術(shù)咖們給出的產(chǎn)品建議是,進(jìn)行業(yè)務(wù)剝離,將小程序內(nèi)業(yè)務(wù)關(guān)聯(lián)度比較高的模塊獨立化。
在系統(tǒng)建議上,他們給出了快速響應(yīng)短期建議和項目穩(wěn)定長期建議。
短期建議中,可以進(jìn)行頁面優(yōu)化,友好提醒用戶耐心等待。當(dāng)出現(xiàn)不能顯示查詢結(jié)果的時候,為避免公眾猜測,應(yīng)當(dāng)在頁面做出友好提示,而不是“繁忙、無響應(yīng)”等。
同時,訪問節(jié)流,短時間內(nèi)多次請求可做防抖機制。既然核酸結(jié)果是24小時(或更長或更短)內(nèi)不變,建議可做緩存機制。24小時間隔后再次訪問強制刷新,接口可帶時間戳參數(shù)。
項目穩(wěn)定長期建議,則包括了更多的專業(yè)用語。例如數(shù)據(jù)模型,盡可能結(jié)構(gòu)關(guān)系單一,快速響應(yīng)回調(diào);沉淀組件并復(fù)用,減少項目體積;建立中臺,減少直接請求后臺數(shù)據(jù);崩潰預(yù)警,可讓相關(guān)開發(fā)人員快速上線響應(yīng)等。
在系統(tǒng)設(shè)計方面,技術(shù)咖們給出的建議包括架構(gòu)設(shè)計、云原生、中間件選型、分級管理、內(nèi)容分發(fā)網(wǎng)絡(luò)緩存、網(wǎng)絡(luò)可用性等建議。
例如,以分級管理而言,IT業(yè)內(nèi)人士、后端人員張遠(yuǎn)(化名)對21世紀(jì)經(jīng)濟(jì)報道記者介紹,分級管理方面,可以根據(jù)業(yè)務(wù)重要性進(jìn)行分級管理,核心應(yīng)用和服務(wù)優(yōu)先使用更好的硬件,在服務(wù)部署上進(jìn)行必要的隔離,避免故障的連鎖反應(yīng)。
“低優(yōu)先級的服務(wù),可通過啟動不同的線程或部署在不同的虛擬機上進(jìn)行隔離,而高優(yōu)先級的服務(wù)則需要部署在不同的物理機上?!睆堖h(yuǎn)說。
再如安全提升方面,他建議,可以提升西安“一碼通”系統(tǒng)機房安全等級,以應(yīng)對各種極端情況,“建議參考銀行一類業(yè)務(wù)系統(tǒng)建設(shè)標(biāo)準(zhǔn)。也可以關(guān)閉不用的端口,減少不必要的暴露?!?/p>
另外,在高可用設(shè)計方面,他們也給出了諸多專業(yè)建議。例如,數(shù)據(jù)冗余問題,以關(guān)系數(shù)據(jù)庫為例,可采取讀寫分離,極端故障可以進(jìn)行主從切換實現(xiàn)故障恢復(fù)。
測試方面,建議添加高性能自動化測試、壓力測試,并且在發(fā)布前做預(yù)防機制。進(jìn)行服務(wù)演練,經(jīng)常開展各種應(yīng)急演練、災(zāi)備演練工作,提高問題處理效率及驗證災(zāi)備系統(tǒng)可用性。
盡管具體原因運營方并未詳盡公布,但是技術(shù)咖們依然愿意對西安“一碼通”問題提出分析與建議,將各類可能的環(huán)節(jié)考慮周全,供業(yè)內(nèi)外參考,為西安抗疫貢獻(xiàn)力量。