愛奇藝廣告平臺的架構(gòu)設(shè)計(jì)與演進(jìn)之路
架構(gòu)設(shè)計(jì)過程中積累的經(jīng)驗(yàn)
最后分享幾點(diǎn)我在架構(gòu)設(shè)計(jì)過程中總結(jié)的經(jīng)驗(yàn)。
深入理解業(yè)務(wù)。 在架構(gòu)設(shè)計(jì)方面,業(yè)務(wù)和架構(gòu)是要互相配合的,架構(gòu)在滿足業(yè)務(wù)需求的同時(shí),也可以反過來給業(yè)務(wù)提需求甚至要求改變業(yè)務(wù)邏輯已達(dá)到系統(tǒng)的最優(yōu),這里的關(guān)鍵就是充分理解業(yè)務(wù)。架構(gòu)上很難解決的問題,可能在業(yè)務(wù)上做個微小的調(diào)整就搞定了,能有這樣的效果,何樂而不為呢。在系統(tǒng)或者架構(gòu)優(yōu)化方面,優(yōu)化理論和策略已經(jīng)研究的非常充分,剩下的只是如何跟業(yè)務(wù)場景進(jìn)行結(jié)合和利用。
設(shè)計(jì)階段要追求完美,實(shí)踐階段要考慮性價(jià)比,采用分階段遞進(jìn)的方式演進(jìn)到完美的架構(gòu)。** 在設(shè)計(jì)階段可以暫時(shí)拋開實(shí)現(xiàn)成本或者其他一些客觀條件的束縛,按照理想的情況去做架構(gòu)設(shè)計(jì),這樣得到的一個結(jié)果是我們所追求的一個理想目標(biāo),這個目標(biāo)暫時(shí)達(dá)不到?jīng)]關(guān)系,因?yàn)樗淖饔镁褪侵该骷軜?gòu)將來的發(fā)展或者演化的大方向;然后在結(jié)合實(shí)際的限制條件逐步調(diào)整這個完美的架構(gòu)到一個可實(shí)際落地的程度,這個過程中還可以保留多個中間版本,作為架構(gòu)演進(jìn)升級過程的 Milestone。也可以這樣理解,從現(xiàn)實(shí)出發(fā),著眼于未來,隨著技術(shù)發(fā)展的速度越來越快,在設(shè)計(jì)之初遇到的限制和障礙很快就會被解決,避免被這些暫時(shí)的限制和障礙遮住了對未來的想象。
監(jiān)控先行。 監(jiān)控信息是了解系統(tǒng)運(yùn)行狀態(tài)的重要信息,大部分監(jiān)控信息都要持久化用來做數(shù)據(jù)分析使用,它可以做異常檢測也可以輔助進(jìn)行問題的分析和定位;做好監(jiān)控工作是改善 TTA(Time To Detection)和 TTM(Time To Mitigation)指標(biāo)的方法之一;這里還要強(qiáng)調(diào)的是要在設(shè)計(jì)階段就考慮到相關(guān)的各種監(jiān)控指標(biāo)、統(tǒng)計(jì)粒度等細(xì)節(jié)內(nèi)容,在開發(fā)階段就在系統(tǒng)中進(jìn)行相關(guān)指標(biāo)的計(jì)算和統(tǒng)計(jì),在服務(wù)部署階段將這些指標(biāo)同步到監(jiān)控系統(tǒng)中;確保服務(wù)上線之初就有相應(yīng)的監(jiān)控“保駕護(hù)航”,避免裸奔。
容錯能力。 這個世界是不完美的,不完美世界中的系統(tǒng)要面對各種各樣的問題;在一個系統(tǒng)的整個生命周期中,研發(fā)運(yùn)維人員要花費(fèi)大量的時(shí)間來應(yīng)對和解決各種錯誤甚至是災(zāi)難;兩個方面去考慮,即 Design By Failure 和災(zāi)難演練(Netflex 已經(jīng)開源了他們的相關(guān)工具)。我想談?wù)勛约旱膶?shí)際體會:
首先,在設(shè)計(jì)之初可以先劃定系統(tǒng)的邊界,分出系統(tǒng)內(nèi)部和系統(tǒng)外部;從成本的角度考慮,系統(tǒng)內(nèi)部因?yàn)榭煽匦詮?qiáng),可以設(shè)定一些假設(shè)以減少相關(guān)的考量和系統(tǒng)容錯設(shè)計(jì);其余的系統(tǒng)內(nèi)部問題以及系統(tǒng)外部的問題,優(yōu)先解決影響較大的問題(譬如,外部服務(wù)不可用,對外接口訪問量突增)和高頻發(fā)生的問題(硬盤故障,網(wǎng)絡(luò)割接),這樣的問題大部分都有可借鑒的方案,如果因業(yè)務(wù)場景特殊而不能復(fù)用已有方案,那就要考慮自己來實(shí)現(xiàn);應(yīng)對外部服務(wù)不可用進(jìn)行熔斷并增加保底策略,訪問量突增做限流,專線故障時(shí)走外網(wǎng),硬盤做 Raid;其他的未考慮到問題在問題首次發(fā)生時(shí)要評估損失和應(yīng)對成本來決定要否立即解決;
上篇:
下篇: