導(dǎo)讀
本文主要從架構(gòu)設(shè)計(jì)的本質(zhì)、架構(gòu)設(shè)計(jì)原則、架構(gòu)設(shè)計(jì)方法論三個(gè)方面來(lái)進(jìn)行闡述,架構(gòu)設(shè)計(jì)除了掌握技術(shù)框架、技術(shù)組件、技術(shù)原理性知識(shí)外,也需要系統(tǒng)性掌握架構(gòu)基礎(chǔ)知識(shí),以架構(gòu)設(shè)計(jì)原則為指導(dǎo),掌握架構(gòu)設(shè)計(jì)方法論,通過(guò)不斷的優(yōu)化和迭代,來(lái)實(shí)現(xiàn)更優(yōu)秀的架構(gòu)設(shè)計(jì) 。
01
在了解架構(gòu)本質(zhì)之前先了解下架構(gòu)的定義,百度百科對(duì)架構(gòu)的定義:架構(gòu)又名軟件架構(gòu),是有關(guān)軟件整體結(jié)構(gòu)與組件的抽象描述,用于指導(dǎo)大型軟件系統(tǒng)各個(gè)方面的設(shè)計(jì) 。
從定義中我們提煉出幾個(gè)關(guān)鍵字:組件、結(jié)構(gòu)、關(guān)系 。
- 組件:也可以稱為軟件元素或者是架構(gòu)要素 ??梢允亲酉到y(tǒng)、模塊、應(yīng)用服務(wù),取決于不同角度來(lái)看待 。
- 結(jié)構(gòu):是架構(gòu)之后的產(chǎn)出物,不同的軟件系統(tǒng)會(huì)有不同結(jié)構(gòu),這些結(jié)構(gòu)為解決不同場(chǎng)景而設(shè)計(jì) 。
- 關(guān)系:實(shí)現(xiàn)架構(gòu)組件之間的連接 。連接關(guān)系可以是JVM內(nèi)部調(diào)用、可以是組件之間、可以是跨應(yīng)用的分布式調(diào)用、也可以是與外系統(tǒng)接口集成調(diào)用 。
架構(gòu)設(shè)計(jì)本質(zhì)就是解決軟件復(fù)雜度帶來(lái)的問(wèn)題 , 軟件復(fù)雜度表 現(xiàn)形式有很多種,比如業(yè)務(wù)復(fù)雜度、性能復(fù)雜度、可用性復(fù)雜度、可擴(kuò)展性復(fù)雜度、安全復(fù)雜度等;任何一個(gè)系統(tǒng)都有它側(cè)重解決的復(fù)雜度問(wèn)題,理解每個(gè)架構(gòu)方案背后需要真正解決的是軟件復(fù)雜度的什么問(wèn)題,是評(píng)判一個(gè)架構(gòu)設(shè)計(jì)目的性的關(guān)鍵因素,這也是做架構(gòu)設(shè)計(jì)中常提的 系統(tǒng)約束條件。
業(yè)務(wù)復(fù)雜度體 現(xiàn)的是如何來(lái)拆解業(yè)務(wù),找到合適的軟件元素和組件,按 合適結(jié)構(gòu) 進(jìn)行連接; 性能復(fù)雜度 體現(xiàn)的是找到軟件元素,進(jìn)行合適連接形成一定結(jié)構(gòu),達(dá)到高性能要求 。比如說(shuō)一個(gè)大型ERP系統(tǒng),屬于業(yè)務(wù)復(fù)雜度高的系統(tǒng),你該如何去拆分它,拆分成一個(gè)個(gè)獨(dú)立完備、具有明確業(yè)務(wù)邊界的組件,這是做架構(gòu)設(shè)計(jì)需要思考的 。再比方說(shuō)做一個(gè)秒殺系統(tǒng),系統(tǒng)復(fù)雜度要求就是性能復(fù)雜度,怎么能扛住秒殺的洪峰,這是性能復(fù)雜度需要解決的問(wèn)題 。
02
軟件開發(fā)和架構(gòu)設(shè)計(jì)的區(qū)別
軟件開發(fā) 更多是面向確定性邏輯問(wèn)題,依據(jù)自身對(duì)需求的理解進(jìn)行實(shí)現(xiàn),實(shí)現(xiàn)方式較為固定,流程化開發(fā)完成需求功能,實(shí)現(xiàn)最終目標(biāo) 。比方說(shuō)實(shí)現(xiàn)訂單接收的能力,分幾步:參數(shù)驗(yàn)證、商品查詢、庫(kù)存預(yù)占、生成訂單、扣減庫(kù)存、修改訂單狀態(tài)、狀態(tài)回傳,業(yè)務(wù)邏輯較為固定,如果再加上編碼規(guī)范以及框架約束,除了數(shù)據(jù)模型以及編碼設(shè)計(jì)之外,其他方面涉及較少 。
架構(gòu)設(shè)計(jì) 更多是面向不確定性問(wèn)題,怎么將系統(tǒng)拆分成組件,怎么去識(shí)別是不是組件、組件和組件之間怎么進(jìn)行連接,這些都是有很多種可能性的架構(gòu)方案,解決一個(gè)軟件復(fù)雜度問(wèn)題方案,有方案A、方案B,甚至有方案C ,應(yīng)該用哪種,原因是什么,都是架構(gòu)設(shè)計(jì)需要思考的問(wèn)題 。在多種方案之間如何來(lái)進(jìn)行決策,如何判斷自己選擇的方案是合理的,當(dāng)然決策能力也不是拍腦袋來(lái)決定的,它其實(shí)也需要一系列原則來(lái)進(jìn)行指導(dǎo),通過(guò)這些指導(dǎo)原則加上實(shí)際經(jīng)驗(yàn)來(lái)決策最優(yōu)方案 。
03
架構(gòu)設(shè)計(jì)三原則
談到架構(gòu)設(shè)計(jì)不得不說(shuō)三個(gè)基本原則,作為架構(gòu)設(shè)計(jì)過(guò)程中的參考,更好幫忙去做分析、做決策、做支持 。
首先提到就是合適原則, 一切不按實(shí)際場(chǎng)景出發(fā)的架構(gòu)設(shè)計(jì)都是在耍流氓 。比如你 想買個(gè)車子,買貴覺得性價(jià)比不高,買便宜了覺得開起來(lái)不舒適,你最終會(huì)挑一個(gè)適合現(xiàn)在經(jīng)濟(jì)能力范圍內(nèi)又比較舒適的車子,這就是合適原則 。以當(dāng)前業(yè)務(wù)需求和非功能性需求為目標(biāo),匹配業(yè)務(wù)發(fā)展所處階段,合理利用資源發(fā)揮最大價(jià)值(買車子需要匹配當(dāng)前經(jīng)濟(jì)狀態(tài));需要結(jié)合實(shí)際場(chǎng)景,合適的系統(tǒng)架構(gòu) (我買車子只是為了代步,不能說(shuō)我覺得跑車氣派,我就買個(gè)跑車,這和業(yè)務(wù)實(shí)際場(chǎng)景不符合);還需要和當(dāng)前的業(yè)務(wù)規(guī)模以及最近1-2年的發(fā)展規(guī)劃相互匹配 (雖然我一次性付不起,但有穩(wěn)定經(jīng)濟(jì)收入,我可以考慮貸款,分2年期 。這樣我既買到理想的車型,也不擔(dān)心壓力大);新技術(shù)推出,勢(shì)必是解決某一場(chǎng)景下的問(wèn)題,但并不能解決所有問(wèn)題,任何架構(gòu)都要綜合來(lái)看,結(jié)合合適原則綜合選擇 。
推薦閱讀
- 海力士?jī)?nèi)存條怎么樣,海力士原裝顆粒評(píng)測(cè)?
- casio手表怎么樣,卡西歐手表很掉檔次嗎?
- Word密碼忘記了怎么辦?
- 在WORD中怎么查看字?jǐn)?shù)?
- word 的對(duì)號(hào)怎么打?
- word目錄的長(zhǎng)省略號(hào)是怎么弄的
- word中怎么對(duì)圖片進(jìn)行編輯
- WORD里鋼筋符號(hào)怎么打?
- word的頁(yè)眉橫線怎么去掉
- × word2010里面怎么打出乘號(hào)?
