软件系统架构设计必须掌握的4步流程
一. 識別系統(tǒng)復(fù)雜度
架構(gòu)設(shè)計(jì)的本質(zhì)目的是為了解決軟件系統(tǒng)的復(fù)雜性,所以在我們設(shè)計(jì)架構(gòu)時(shí),首先就要分析系統(tǒng)的復(fù)雜性。只有正確分析出了系統(tǒng)的復(fù)雜性,后續(xù)的架構(gòu)設(shè)計(jì)方案才不會偏離方向;否則,如果對系統(tǒng)的復(fù)雜性判斷錯誤,即使后續(xù)的架構(gòu)設(shè)計(jì)方案再完美再先進(jìn),都是南轅北轍,做得越好,錯得越多、越離譜。架構(gòu)的復(fù)雜度主要來源于“高性能”、“高可用”、“可擴(kuò)展”等幾個方面,架構(gòu)師在具體判斷復(fù)雜性的時(shí)候,不能生搬硬套,認(rèn)為任何時(shí)候架構(gòu)都必須同時(shí)滿足這三方面的要求。實(shí)際上大部分場景下,復(fù)雜度只是其中的某一個,少數(shù)情況下包含其中兩個,如果真的出現(xiàn)同時(shí)需要解決三個或者三個以上的復(fù)雜度,要么說明這個系統(tǒng)之前設(shè)計(jì)的有問題,要么可能就是架構(gòu)師的判斷出現(xiàn)了失誤,即使真的認(rèn)為要同時(shí)滿足這三方面的要求,也必須要進(jìn)行優(yōu)先級排序。
二. 設(shè)計(jì)備選方案
架構(gòu)設(shè)計(jì)備選方案的工作更多的是從需求、團(tuán)隊(duì)、技術(shù)、資源等綜合情況出發(fā),對主流、成熟的架構(gòu)模式進(jìn)行選擇、組合、調(diào)整、創(chuàng)新。設(shè)計(jì)備選方案應(yīng)注意的幾個事項(xiàng):
① 備選方案不要過于詳細(xì)。備選階段解決的是技術(shù)選型問題,而不是技術(shù)細(xì)節(jié)。
② 備選方案的數(shù)量以 3~5個為最佳。
③ 備選方案的技術(shù)差異要明顯。
④ 備選方案不要只局限于已經(jīng)熟悉的技術(shù)。
三. 評估和選擇備選方案
評估和選擇備選方案,需要重點(diǎn)關(guān)注質(zhì)量屬性。質(zhì)量屬性包括性能、可用性、安全性、可擴(kuò)展性等。這些屬性在我往期的文章中有講過,大家可以查閱。在評估這些質(zhì)量屬性時(shí),需要遵循架構(gòu)設(shè)計(jì)原則“合適原則”和“簡單原則”, 避免貪大求全,基本上某個質(zhì)量屬性能夠滿足一定時(shí)期內(nèi)業(yè)務(wù)發(fā)展就可以了。在評估和選擇備選方案時(shí),常用的做法,可以列舉這些重要的質(zhì)量屬性,然后一一把它放到每一個方案中進(jìn)行打分,打分時(shí)要充分考慮到團(tuán)隊(duì)目前的技術(shù)能力、資源分配、項(xiàng)目成本、外部風(fēng)險(xiǎn)等因素,最終把每一項(xiàng)分值加起來進(jìn)行權(quán)衡,從而選出一個最優(yōu)的方案。
四. 詳細(xì)方案設(shè)計(jì)
詳細(xì)方案設(shè)計(jì)就是將最終確定的備選方案進(jìn)行細(xì)化,使得備選方案變成一個可以落地的設(shè)計(jì)方案。詳細(xì)方案設(shè)計(jì)包含以下幾個方面:
1. 數(shù)據(jù)存儲設(shè)計(jì)。需要根據(jù)業(yè)務(wù)評估一下5年內(nèi)業(yè)務(wù)數(shù)據(jù)量,然后考慮數(shù)據(jù)庫技術(shù)選型、針對一些數(shù)據(jù)增加比較快的業(yè)務(wù)考慮是否采用分表分庫或大數(shù)據(jù)的方式進(jìn)行處理。另外,需要考慮數(shù)據(jù)庫的備份及容災(zāi)、高并發(fā)場景下的可用性、一致性解決方案。
2. 通信協(xié)議設(shè)計(jì)。通信協(xié)議設(shè)計(jì),需要根據(jù)業(yè)務(wù)特點(diǎn)、業(yè)務(wù)性能要求、業(yè)務(wù)安全性來決定采用什么協(xié)議?比如一個物聯(lián)網(wǎng)系統(tǒng),設(shè)備端與服務(wù)端通信通常采用MQTT或COAP協(xié)議,微服務(wù)架構(gòu)中,服務(wù)間內(nèi)部調(diào)用通常使用HTTP(S)或RPC協(xié)議等等。作為一名架構(gòu)人員,這些協(xié)議的優(yōu)缺點(diǎn)及原理一定要搞清楚。另外通信協(xié)議設(shè)計(jì)中,對于報(bào)文的設(shè)計(jì)也有要求,報(bào)文的大小、報(bào)文的數(shù)據(jù)結(jié)構(gòu)都是要重點(diǎn)考慮的,因?yàn)樵诟卟l(fā)下場景下,這些細(xì)節(jié)可能會影響到系統(tǒng)的整體性能。
3. 接口設(shè)計(jì)。接口設(shè)計(jì)主要體現(xiàn)在幾個方面,一是接口的友好性,指的是入?yún)⒑头祷刂得?guī)范、接口參數(shù)說明、調(diào)用示例等;二是接口的隔離原則,記住一個接口只干一件事情;三是接口的安全性,這點(diǎn)很重要,一般會被很多人忽略掉。接口的安全性保障一般采取令牌訪問機(jī)制、數(shù)據(jù)簽名/驗(yàn)簽、白名單訪問機(jī)制等。
4. 緩存和消息隊(duì)列設(shè)計(jì)。緩存和消息隊(duì)列設(shè)計(jì)時(shí),一定要根據(jù)業(yè)務(wù)特點(diǎn)選取合適的組件,目前業(yè)界有很多這方面的開源組件,在選型時(shí)千萬不能盲從。另外緩存和消息隊(duì)列設(shè)計(jì)時(shí),需要考慮緩存和消息隊(duì)列自身單點(diǎn)故障問題。
好了,這篇文章就講這么多,大家好對架構(gòu)設(shè)計(jì)流程有個初步的認(rèn)識。大家有問題可以在評論區(qū)留言,陸續(xù)分享更多架構(gòu)方面的知識,感興趣的同學(xué)別忘了加關(guān)注喲!
總結(jié)
以上是生活随笔為你收集整理的软件系统架构设计必须掌握的4步流程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: ubuntu安装向日葵
 - 下一篇: 汽车灯阻燃测试FMVSS302报告