不過業(yè)務(wù)層在設(shè)計架構(gòu)之初,應(yīng)該考慮到網(wǎng)絡(luò)不穩(wěn)定的情況。針對上面的隱患,大概有三個方法。
第一個就是做全鏈路的演習(xí),模擬一個真實的場景,經(jīng)過模擬演習(xí),還是多多少少能暴露出來一些問題。我們可以針對這些問題,去完善我們的故障預(yù)案、修復(fù)線上漏洞,做演習(xí)的時候也能驗證我們的報警系統(tǒng)是否正常運轉(zhuǎn)。
第二個是SLA,對于服務(wù)定一個比較嚴(yán)格的穩(wěn)定性指標(biāo),并針對這個指標(biāo)持續(xù)不斷的優(yōu)化。比如我們線上HTTP接入的服務(wù),針對accesslog中的狀態(tài)碼和響應(yīng)時間提煉出一個穩(wěn)定性指標(biāo),這對于服務(wù)本身的穩(wěn)定性情況,就多了一個可參考數(shù)值了。穩(wěn)定性指標(biāo)波動服務(wù)必然有問題,這時候我們就要針對它波動的點進(jìn)行相應(yīng)的分析,根據(jù)分析,最終能找到一些隱患。指標(biāo)這塊,要做到用真正的數(shù)據(jù)來反饋出線上的穩(wěn)定性。
第三個就是做故障的管理,每個故障都能找到問題,TODO能落實,各個故障的經(jīng)驗總結(jié),也能共享到多個業(yè)務(wù)線。
經(jīng)驗總結(jié) 事故之前(比如標(biāo)準(zhǔn)SOP、容量評估、流量壓測)的核心就是要防范于未然。 事故之中的核心是快速止損,查找問題是一個相對來說難度比較大,也比較漫長的過程,因為這個時間是不可控的。但是如果我們提前有好的應(yīng)急預(yù)案,就能達(dá)到快速的止損。此外,還要有服務(wù)的自我保護(hù),還有一點,溝通也是很重要的。最開始出現(xiàn)問題的時候,其實是比較亂的,因為大家發(fā)現(xiàn)問題都很急,很多人都在問原因,這時候你問原因是沒有用的,因為大家大部分是不知道,知道的話就能給出解決方案了。所以這時候需要一個完善的溝通機制,正確的時間反饋正確的消息,反饋的原則是少說表面現(xiàn)象,盡量說一些對于問題定位或者是對于止損方面能夠有幫助的信息。 事故之后,像TODO落實、完善預(yù)案之類的,核心點就是吃一塹長一智,相同的問題不能發(fā)生第二次。
用戶體驗優(yōu)化
首先從用戶端開始,用戶在訪問我們線上業(yè)務(wù)的時候,流量是從公網(wǎng)到私有云,再到Server。公網(wǎng)問題主要有網(wǎng)絡(luò)劫持、多運營商環(huán)境、不可控的公網(wǎng)鏈路等。對于Server的話,主要就是一些傳輸層的協(xié)議,或者應(yīng)用層的協(xié)議的問題,目前大部分業(yè)務(wù)交互還是用的HTTP 1.0/1.1,其實HTTP這個協(xié)議也是需要改進(jìn)的,它不太適合做頻繁的業(yè)務(wù)交互。
針對這些問題,我們都做了一些嘗試:
首先在公網(wǎng)接入這塊啟用BGP,我們現(xiàn)在已經(jīng)做了自建的BGP網(wǎng)絡(luò),不用再關(guān)心多運營商接入的問題。只需要采用BGP網(wǎng)絡(luò),數(shù)據(jù)包在公網(wǎng)傳輸尋址的時候,就可以進(jìn)行最優(yōu)的選路了。 面對劫持問題,我們嘗試了HTTP DNS的方案,同時也在嘗試Shark,就是類似于公網(wǎng)鏈路加速,相當(dāng)于我在用戶的近端部署一個Server,在App上嵌入SDK,用戶通過App發(fā)起的請求不用做DNS解析,而是先發(fā)到Shark(參考之前的博客《美團(tuán)點評移動網(wǎng)絡(luò)優(yōu)化實踐》)上,再由Shark與后端服務(wù)交互。目前通過多種手段的持續(xù)優(yōu)化,劫持問題已經(jīng)少了很多。 針對業(yè)務(wù)交互的協(xié)議,上線了SPDY協(xié)議,對于頻繁交互的業(yè)務(wù)提升還是很明顯的。目前正在測試HTTP 2.0,Server端對于HTTP 2.0的支持還存在少量bug,努力修復(fù)中,希望能早日用上。
未來展望
首先技術(shù)上,目前我們自動化這塊做得比較好,還會持續(xù)做,下一步就是智能化。為什么要智能化呢?其實主要面臨到一個瓶頸點,有些問題是不能通過自動化解決的,比如說前面提到自動故障定位,它的決策性很強,需要很多步的決策,并不是通過程序就能直接搞定的。我們現(xiàn)在正在嘗試一些AI的算法,引入人工智能來做突破。
產(chǎn)品方面,我們現(xiàn)在做的所有工具,經(jīng)過線上業(yè)務(wù)大規(guī)模的校驗,正在往產(chǎn)品化的方向發(fā)展,希望能把它做成成型的產(chǎn)品,放在美團(tuán)云上,能給美團(tuán)云的用戶提供服務(wù)。不只服務(wù)于我們自己,也服務(wù)于他人。
最后是技術(shù)架構(gòu),美團(tuán)點評發(fā)展過程中一些疑難問題的解決方案,或者針對挑戰(zhàn)的經(jīng)驗積累,經(jīng)過線上大規(guī)模業(yè)務(wù)的校驗,最終能形成一些成熟的方案,它能為美團(tuán)云上的用戶提供最前沿的技術(shù)參考。
云是大勢所趨,它能把很多底層的問題封裝起來,讓我們有更多精力去做更重要的事情。
【作者簡介】普存,2014年加入美團(tuán)SRE團(tuán)隊,現(xiàn)任美團(tuán)點評應(yīng)用支持組負(fù)責(zé)人,帶領(lǐng)團(tuán)隊為美團(tuán)外賣、餐飲平臺、金融服務(wù)等多個業(yè)務(wù)提供運維支持及業(yè)務(wù)穩(wěn)定性保障工作。