由某CDN故障引發(fā)的思考:業(yè)務(wù)方如何應(yīng)對(duì)坑爹的第三方故障
大部分公司的業(yè)務(wù)規(guī)模應(yīng)該還沒(méi)有達(dá)到所有服務(wù)都能夠自給自足的程度,而且就算是BAT這些巨頭們,很多服務(wù)也完全沒(méi)有必要所有東西都自己做,一是效率問(wèn)題,二是成本問(wèn)題。喜歡喝牛奶未必就要自己養(yǎng)頭奶牛,所以大部分公司的業(yè)務(wù)或多或少都會(huì)依賴一些第三方公司的服務(wù),尤其是需要和第三方合作的業(yè)務(wù),這種依賴就比較普遍,與業(yè)務(wù)的關(guān)聯(lián)度也比較大了。
CDN服務(wù)算是第三方服務(wù)的一種,還有很多其他服務(wù),比如短信發(fā)送服務(wù),聲訊服務(wù),關(guān)鍵詞過(guò)濾服務(wù),第三方合作數(shù)據(jù)接口,酒店ota服務(wù),運(yùn)營(yíng)數(shù)據(jù)統(tǒng)計(jì)服務(wù),DNS解析服務(wù) ,安全防范平臺(tái)服務(wù)等。如果要給這些第三方服務(wù)分個(gè)類的話可以將其分為三大類:基礎(chǔ)類,比如CDN服務(wù),DNS解析,安全防范服務(wù),這一類第三方服務(wù)屬于基礎(chǔ)服務(wù),與具體的業(yè)務(wù)沒(méi)有關(guān)系,也不直接與用戶產(chǎn)生關(guān)聯(lián),但是一旦基礎(chǔ)服務(wù)出現(xiàn)異常往往會(huì)導(dǎo)致整個(gè)業(yè)務(wù)完全不可用;業(yè)務(wù)類,比如酒店ota服務(wù),短信發(fā)送服務(wù),,聲訊服務(wù),第三方數(shù)據(jù)合作接口(比如點(diǎn)評(píng)信息的引用,第三方登錄),業(yè)務(wù)類的服務(wù)會(huì)與業(yè)務(wù)緊密聯(lián)系在一起,必要的時(shí)候還是會(huì)業(yè)務(wù)密不可分的一部分,這一類服務(wù)出現(xiàn)異常,只會(huì)導(dǎo)致部分業(yè)務(wù)功能異常或者邏輯異常,將此類異常做好降級(jí)工作,業(yè)務(wù)的其余功能理論上是不受影響,繼續(xù)能夠?yàn)橛脩籼峁┓?wù)的;第三類服務(wù),運(yùn)營(yíng)輔助類服務(wù),其實(shí)也可以歸為基礎(chǔ)類,但是第三類服務(wù)的重要性對(duì)于大部分網(wǎng)站遠(yuǎn)遠(yuǎn)沒(méi)有其他基礎(chǔ)類服務(wù)的重要性高,一旦出現(xiàn)異常頂多是運(yùn)營(yíng)數(shù)據(jù)的異常,對(duì)于用戶而言,這部分的異常是無(wú)感知的。很多公司在能力所及的范圍下都會(huì)將這一部分作為自身的運(yùn)營(yíng)工具來(lái)開(kāi)發(fā),對(duì)于一些業(yè)務(wù)規(guī)模還比較小的網(wǎng)站而言,這部分還是需要依賴一些專業(yè)的第三方數(shù)據(jù)運(yùn)營(yíng)平臺(tái)的,比如GA,站長(zhǎng)工具,還有一些點(diǎn)擊統(tǒng)計(jì)的工具。
在實(shí)際的工作場(chǎng)景中,想必大家多數(shù)人和我一樣,多多少少都會(huì)遇到這三類服務(wù)中某些或者全部服務(wù)出現(xiàn)過(guò)異常從而影響到自身業(yè)務(wù)的可用性。
對(duì)此,我們也想過(guò)很多方法來(lái)規(guī)避這些第三方服務(wù)發(fā)生故障時(shí)對(duì)我們的業(yè)務(wù)造成不必要的影響,很多時(shí)候,對(duì)于基礎(chǔ)或者非常重要的服務(wù),要做好備份,容錯(cuò),降級(jí)等準(zhǔn)備工作,而且要定期對(duì)這些異常備用方案進(jìn)行演練,切實(shí)驗(yàn)證這些準(zhǔn)備工作的可用性以及切換效率,避免出現(xiàn)關(guān)鍵時(shí)刻準(zhǔn)備工作完全不起作用的情況。
針對(duì)基礎(chǔ)類的第三方服務(wù),我們應(yīng)該從系統(tǒng)架構(gòu)著手去支持服務(wù)的冗余與高可用,盡量將基礎(chǔ)類的服務(wù)冗余散列在多個(gè)服務(wù)商處,就算是其中部分的服務(wù)商出現(xiàn)問(wèn)題,我們也可以及時(shí)屏蔽掉這些有問(wèn)題的服務(wù),從而有效的保證業(yè)務(wù)的高可用。同時(shí),***相應(yīng)基礎(chǔ)服務(wù)的監(jiān)控也是非常有必要的,因?yàn)榛A(chǔ)服務(wù)一旦出問(wèn)題,對(duì)整個(gè)業(yè)務(wù)的影響那是非常嚴(yán)重的,基礎(chǔ)服務(wù)與業(yè)務(wù)的關(guān)系更像冰面上行走的人,一旦冰面破了,人就會(huì)掉到冰窟里面去了。比如DNS解析異常,那就會(huì)導(dǎo)致用戶完全無(wú)法訪問(wèn)我們的站點(diǎn),當(dāng)然也就無(wú)法完成其他業(yè)務(wù)的處理了;CDN服務(wù)出現(xiàn)異常,那放在CDN服務(wù)上的靜態(tài)文件,影音文件無(wú)法正常訪問(wèn)的話,就會(huì)導(dǎo)致用戶看不到正常的內(nèi)容或者無(wú)法完成相關(guān)的交互操作,比如登錄,比如購(gòu)買(mǎi),整個(gè)業(yè)務(wù)站點(diǎn)基本上就處于全部癱瘓狀態(tài)了。基礎(chǔ)服務(wù)很多后尾效應(yīng)比較嚴(yán)重,比如DNS服務(wù)出現(xiàn)異常后,我們自身是切換到正常的服務(wù)方了,但是有可能局部地區(qū)的DNS會(huì)很長(zhǎng)時(shí)間出現(xiàn)異常;比如CDN服務(wù)異常,很多時(shí)候這些異常會(huì)被用戶或者一些小的運(yùn)營(yíng)商的內(nèi)部代理服務(wù)器緩存掉。及時(shí)發(fā)現(xiàn),處理基礎(chǔ)服務(wù)的異常,就是給我們的業(yè)務(wù)爭(zhēng)取可用的時(shí)間。
針對(duì)業(yè)務(wù)類的第三方服務(wù),我們應(yīng)該從業(yè)務(wù)設(shè)計(jì)出發(fā),去掉強(qiáng)依賴,做好服務(wù)的降級(jí)和容錯(cuò),以便當(dāng)部分第三方服務(wù)異常的時(shí)候可以保證業(yè)務(wù)的其他部分是可用的。業(yè)務(wù)類第三方服務(wù)往往存在著類似“握手”的關(guān)系,所以很少能夠做備份冗余的工作,而且這種備份冗余也***是第三方服務(wù)來(lái)做的,對(duì)于業(yè)務(wù)方而言,出現(xiàn)握手失敗的話就只能自己處理相關(guān)異常并做適當(dāng)?shù)慕导?jí),做到異常部分功能隱藏,同時(shí)其他部分的功能不受異常影響能夠繼續(xù)為用戶提供服務(wù)。
針對(duì)運(yùn)營(yíng)輔助類的第三方服務(wù),我們首要要做的是,不要讓這類異常影響到任何業(yè)務(wù)功能,同時(shí)不要讓用戶感知到。對(duì)于運(yùn)營(yíng)工具服務(wù)的異常,完全可以臨時(shí)將此類服務(wù)關(guān)閉,相關(guān)數(shù)據(jù)可以用過(guò)往的數(shù)據(jù)進(jìn)行填充,畢竟運(yùn)營(yíng)數(shù)據(jù)一時(shí)的異常不會(huì)對(duì)長(zhǎng)遠(yuǎn)的運(yùn)營(yíng)工作造成任何大的影響,但是如果影響到業(yè)務(wù)的可用性就得不償失了。
盡量找靠譜,質(zhì)量有保證的第三方服務(wù)提供商,成本不是這么省的,有的時(shí)候?yàn)榱斯?jié)省成本而選擇了一家質(zhì)量無(wú)保證的服務(wù)商***損失的也許比我們節(jié)省的要多得多。
第三方服務(wù)商的責(zé)任心與溝通渠道也很重要,需要我們關(guān)注的,除了服務(wù)商服務(wù)質(zhì)量保證外,我們也需要關(guān)注服務(wù)商的責(zé)任心,出問(wèn)題后是否會(huì)主動(dòng),及時(shí)通知以及迅速降低第三方服務(wù)異常對(duì)客戶造成的影響。另外,溝通渠道是否順暢,客服與技術(shù)人員是否可以及時(shí)有效處理用戶的問(wèn)題也是非常重要的。服務(wù)商的改進(jìn)是不是靈活可變的,對(duì)于客戶提出的需求,能否盡可能地去實(shí)現(xiàn),很多第三方服務(wù)商要么需要花錢(qián)定制,要么直接告訴你我們系統(tǒng)就是這個(gè)樣子的,沒(méi)的改,雖然他也知道自己系統(tǒng)存在著諸多的不合理之處。
不要把雞蛋放在一個(gè)籃子里,對(duì)于大多數(shù)的網(wǎng)站,如果成本壓力不是很大的話,非常建議不要把所有的服務(wù)放在一家服務(wù)商身上,必要的時(shí)候要做好冗余備份,而且盡可能的在平時(shí)就利用其這些備份措施,以保證其可用性。


























