記者梳理發(fā)現(xiàn),2023年以來(lái),包括阿里、騰訊、百度、滴滴、抖音、B站等各大平臺(tái)均發(fā)生過(guò)“崩了”事件。
一
12月3日晚,騰訊視頻“崩了”登上微博熱搜。騰訊視頻方面回應(yīng)稱,出現(xiàn)了短暫技術(shù)問(wèn)題,正在加緊修復(fù),各項(xiàng)功能在逐步恢復(fù)中。
11月27日晚間,滴滴App系統(tǒng)發(fā)生故障,全國(guó)大面積崩潰,服務(wù)無(wú)法正常使用。11月29日,滴滴方面發(fā)表聲明稱,各項(xiàng)服務(wù)已經(jīng)恢復(fù),初步確定,這起事故的起因是底層系統(tǒng)軟件發(fā)生故障,并非網(wǎng)傳的“遭受攻擊”。
作為月活(月度活躍用戶數(shù))破億的社交平臺(tái),B站此前多次因?yàn)椤氨懒恕钡巧蠠崴?。?jù)記者不完全統(tǒng)計(jì),B站在2023年“崩了”兩次,最近一次是在6月28日,當(dāng)天下午不少用戶反映“B站崩了”,該詞條隨后登上熱搜。此次受影響的主要是番劇和影視頁(yè)面,用戶反映“追番一直提示獲取視頻內(nèi)容失敗”“顯示頁(yè)面加載失敗”“看番看一半加載不出來(lái)”。該問(wèn)題持續(xù)一小時(shí)左右。
如果不是滴滴的長(zhǎng)時(shí)間崩潰造成大范圍的負(fù)面影響與討論度,非行業(yè)人士不會(huì)將某款軟件的暫時(shí)“崩了”作為熱點(diǎn)討論。
萬(wàn)博智云CTO孫琦表示,滴滴事件僅是一個(gè)個(gè)案,但該事件故障級(jí)別較大,確實(shí)影響到了一定規(guī)模普通群眾的生活。實(shí)際上,很多用戶看不到的軟件故障正在每天發(fā)生,這在行業(yè)內(nèi)是一個(gè)較為常見(jiàn)的問(wèn)題。
二
一位軟件工程師告訴記者,目前隨著行業(yè)技術(shù)的逐漸成熟,各大廠一般都會(huì)自建數(shù)據(jù)中心,云服務(wù)也多采用多云策略,配有標(biāo)準(zhǔn)容災(zāi)機(jī)制,出現(xiàn)崩潰問(wèn)題大多發(fā)生在自身算法、硬件,或自身技術(shù)團(tuán)隊(duì)層面。
以B站崩潰為例,其技術(shù)團(tuán)隊(duì)在解讀文章中表示,運(yùn)維團(tuán)隊(duì)作項(xiàng)目有個(gè)弊端,開發(fā)完成自測(cè)沒(méi)問(wèn)題后就開始灰度上線(產(chǎn)品試用收集意見(jiàn)),沒(méi)有專業(yè)的測(cè)試團(tuán)隊(duì)介入,“此組件太過(guò)核心,需要引入基礎(chǔ)組件測(cè)試團(tuán)隊(duì),對(duì)SLB(服務(wù)器負(fù)載均衡)輸入?yún)?shù)作完整的異常測(cè)試”。
對(duì)于后續(xù)改進(jìn),B 站技術(shù)團(tuán)隊(duì)認(rèn)為要“招專業(yè)的人”,“我們選擇基于Lua(一種網(wǎng)絡(luò)源代碼形式)開發(fā)是因?yàn)長(zhǎng)ua簡(jiǎn)單易上手,社區(qū)有類似成功案例。團(tuán)隊(duì)并沒(méi)有資深做Nginx(一種網(wǎng)絡(luò)源代碼形式)組件開發(fā)的同學(xué),也沒(méi)有做C/C++(一種網(wǎng)絡(luò)源代碼形式)開發(fā)的同學(xué)”。
此外,文章里還寫道:“B站一直沒(méi)有NOC(網(wǎng)絡(luò)操作中心)/技術(shù)支持團(tuán)隊(duì),在出現(xiàn)緊急事故時(shí),故障響應(yīng)、故障通報(bào)、故障協(xié)同都是由負(fù)責(zé)故障處理的SRE(網(wǎng)站可靠性工程師)來(lái)承擔(dān)。如果是普通事故還好,如果是重大事故,信息同步根本來(lái)不及,所以,事故的應(yīng)急響應(yīng)機(jī)制必須優(yōu)化?!?/p>
另以滴滴事件為例,多個(gè)獨(dú)立信息源向記者發(fā)來(lái)一份討論截圖,稱一個(gè)規(guī)模非常大的K8s 集群進(jìn)行在線熱升級(jí),因?yàn)槟承┰?,所?Pod(容器)損壞,而 K8s 的元數(shù)據(jù)已經(jīng)被新版本K8s 修改,無(wú)法回滾,因此恢復(fù)時(shí)間拉得很長(zhǎng)。K8s(Kubernetes)是一個(gè)開源的容器編排平臺(tái),可以自動(dòng)化地部署、擴(kuò)展和管理容器化應(yīng)用程序。
云猿生數(shù)據(jù)創(chuàng)始人兼CEO、前阿里云數(shù)據(jù)庫(kù)總經(jīng)理曹偉在其個(gè)人公眾號(hào)發(fā)文解讀稱,該說(shuō)法并非毫無(wú)依據(jù)。滴滴團(tuán)隊(duì)近兩個(gè)月正將公司內(nèi)部的 K8s 從1.12版本升級(jí)到1.20。前者于2018年9月發(fā)布,后者是2020年12月,對(duì)高速發(fā)展的K8s項(xiàng)目來(lái)說(shuō),兩個(gè)版本間存在相當(dāng)大差距。K8s 官方推薦的方法是沿著一個(gè)個(gè)版本升上去。但滴滴團(tuán)隊(duì)認(rèn)為多次升級(jí)風(fēng)險(xiǎn)更高,采取了跨越8個(gè)版本直接升級(jí)策略,同時(shí)為了避免中斷業(yè)務(wù),在不重啟容器的情況下原地升級(jí),滴滴團(tuán)隊(duì)還修改了其他代碼。曹偉認(rèn)為,該策略理論上可行,但中間可能遭遇到意外因素,如運(yùn)維誤操作,才導(dǎo)致了最終的大規(guī)模故障。
曹偉的建議是,當(dāng)一個(gè)集群規(guī)模很大時(shí),很容易在意想不到的地方發(fā)生類似的問(wèn)題,那么在設(shè)計(jì)系統(tǒng)時(shí),應(yīng)把集群的規(guī)??刂圃谝粋€(gè)合理的范圍,但擴(kuò)大集群數(shù)量。例如,可以把兩個(gè)一萬(wàn)節(jié)點(diǎn)的集群拆成十個(gè)兩千節(jié)點(diǎn)的集群,管理成本沒(méi)有增加,而運(yùn)行風(fēng)險(xiǎn)和(故障的)爆炸半徑得到極大的降低。
11月12日,阿里云出現(xiàn)了一次影響所有區(qū)域的全局大故障。以這次阿里云的故障為例,曹偉稱,對(duì)象存儲(chǔ)的關(guān)鍵路徑里依賴看RAM(內(nèi)存)的鑒權(quán)邏輯,因此,RAM出現(xiàn)故障時(shí),也造成了對(duì)象存儲(chǔ)的不可用。其實(shí),數(shù)據(jù)面的可用性如果和控制面解耦(耦合是指兩個(gè)或兩個(gè)以上體系運(yùn)行中相互影響而產(chǎn)生的聯(lián)合起來(lái)的現(xiàn)象。解耦即是用數(shù)字方法解決處理這一問(wèn)題),那么控制面掛掉對(duì)數(shù)據(jù)面的影響很輕微。否則,要么要不斷去提高控制面的可用性,要么就要接受故障的級(jí)聯(lián)發(fā)生。因此總結(jié)來(lái)說(shuō),曹偉建議各平臺(tái)技術(shù)團(tuán)隊(duì)盡量做到控制規(guī)模、避免單點(diǎn)、擁抱重啟、保證數(shù)據(jù)面的可用性和控制面解耦。
孫琦對(duì)記者表示,如今各大互聯(lián)網(wǎng)平臺(tái)基礎(chǔ)架構(gòu)層已經(jīng)很成熟,極少出現(xiàn)因技術(shù)革新導(dǎo)致影響整個(gè)架構(gòu)的事故,但在現(xiàn)有技術(shù)支撐、業(yè)務(wù)并發(fā)量不會(huì)暴漲的情況下,在團(tuán)隊(duì)穩(wěn)定的前提下,類似問(wèn)題理應(yīng)不會(huì)頻繁出現(xiàn)。
(摘自《第一財(cái)經(jīng)日?qǐng)?bào)》呂倩、劉曉潔)