筆記
今天先來看架構(gòu)設(shè)計(jì)流程第 1 步:識別復(fù)雜度幌缝。
只有正確分析出了系統(tǒng)的復(fù)雜性,后續(xù)的架構(gòu)設(shè)計(jì)方案才不會偏離方向衩侥。
架構(gòu)的復(fù)雜度主要來源于“高性能”“高可用”“可擴(kuò)展”等幾個方面,但架構(gòu)師在具體判斷復(fù)雜性的時候,不能生搬硬套仅讽,認(rèn)為任何時候架構(gòu)都必須同時滿足這三方面的要求。實(shí)際上大部分場景下钾挟,復(fù)雜度只是其中的某一個洁灵,少數(shù)情況下包含其中兩個,如果真的出現(xiàn)同時需要解決三個或者三個以上的復(fù)雜度掺出,要么說明這個系統(tǒng)之前設(shè)計(jì)的有問題徽千,要么可能就是架構(gòu)師的判斷出現(xiàn)了失誤,即使真的認(rèn)為要同時滿足這三方面的要求蛛砰,也必須要進(jìn)行優(yōu)先級排序罐栈。
一個個來解決問題,不要幻想一次架構(gòu)重構(gòu)解決所有問題泥畅。正確的做法是將主要的復(fù)雜度問題列出來荠诬,然后根據(jù)業(yè)務(wù)、技術(shù)位仁、團(tuán)隊(duì)等綜合情況進(jìn)行排序柑贞,優(yōu)先解決當(dāng)前面臨的最主要的復(fù)雜度問題。
對于同一個復(fù)雜度問題聂抢,軟件系統(tǒng)的方案可以有多個钧嘶,總是可以挑出綜合來看性價比最高的方案。
有經(jīng)驗(yàn)的架構(gòu)師可能一看需求就知道復(fù)雜度大概在哪里琳疏;如果經(jīng)驗(yàn)不足有决,那只能采取“排查法”闸拿,從不同的角度逐一進(jìn)行分析。
對于架構(gòu)師來說书幕,關(guān)注的不是一天的數(shù)據(jù)新荤,而是 1 秒的數(shù)據(jù),即 TPS 和 QPS台汇。
系統(tǒng)設(shè)計(jì)需要考慮一定的性能余量苛骨。由于現(xiàn)在的基數(shù)較低,為了預(yù)留一定的系統(tǒng)容量應(yīng)對后續(xù)業(yè)務(wù)的發(fā)展苟呐。注意痒芝,這里的設(shè)計(jì)目標(biāo)設(shè)定為峰值的 4 倍是根據(jù)業(yè)務(wù)發(fā)展速度來預(yù)估的,不是固定為 4 倍牵素,不同的業(yè)務(wù)可以是 2 倍严衬,也可以是 8 倍,但一般不要設(shè)定在 10 倍以上两波,更不要一上來就按照 100 倍預(yù)估瞳步。
理解與思考
高性能、高可用和可擴(kuò)展腰奋,這幾項(xiàng)指標(biāo)单起,只能兼顧,不能求全劣坊∴值梗可以面面俱到,但要做到樣樣優(yōu)秀就有點(diǎn)過于理想化和脫離實(shí)際了局冰,需要審視方法的可落地性了测蘑。
使用排查法,依次從高性能康二、高可用碳胳、可擴(kuò)展、安全沫勿、低成本及其他幾個方面考察系統(tǒng)的復(fù)雜度來源挨约。
課后思考題
嘗試用排查法分析一下你參與過或者研究過的系統(tǒng)的復(fù)雜度,然后與你以前的理解對比一下产雹,看看是否有什么新發(fā)現(xiàn)诫惭?
當(dāng)前參與的項(xiàng)目的復(fù)雜度分析:
- 高性能。需要處理極多的網(wǎng)元日志數(shù)據(jù)蔓挖,時間和資源限制較嚴(yán)格夕土。所以需要高性能的數(shù)據(jù)處理和分析能力。
- 高可用瘟判。只要在規(guī)定的時間內(nèi)跑出數(shù)據(jù)即可怨绣,中間任務(wù)失敗了可以重跑角溃。
- 可擴(kuò)展。要求不高篮撑。一般都是算法變更和新業(yè)務(wù)的開發(fā)开镣。