版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、軟件架構質(zhì)量評估方案1質(zhì)量屬性在系統(tǒng)設計和開發(fā)過程中,我們比擬容易關注系統(tǒng)的功能維 度,例如有沒有實現(xiàn)預期功能,輸入?yún)?shù)和輸出參數(shù)是否匹配等 等,這是比擬容易衡量的。但是我們不能就此止步,因為滿足功能是系統(tǒng)的基本要求, 還需要關注系統(tǒng)的非功能維度,例如系統(tǒng)性能是否優(yōu)秀,代碼可 擴展性如何,出現(xiàn)異常是否可以自動降級等等,這些指標決定了 系統(tǒng)能否提供高質(zhì)量的服務。我之前在文章結構化思維如何指導技術系統(tǒng)優(yōu)化提到了 三個質(zhì)量屬性:高性能、高可用、高擴展。本文我們可以充實為 六個質(zhì)量屬性:性能、可用性、可修改性、可靠性、平安性、易 用性。性能單位時間內(nèi)可以做多少事情,做完單位數(shù)量的事情需要多長時間口用性
2、系統(tǒng)正常運行時間占總運行時間的比例可修改性可擴展性系統(tǒng)擴展新構件時對其它構件的影響程度可維護性系統(tǒng)修改舊構件時對具它構件的影響程度結構重組重新組織構件關系的難易程度可移植性在不同硬件平臺、編程語言、操作系統(tǒng)間移植的難易程度可靠性容錯性和健壯性,系統(tǒng)面對錯誤輸入仍能保證正確輸出的能力平安性系統(tǒng)防止非法用戶訪問的能力易用性系統(tǒng)使用的難易程度(7)出現(xiàn)異常引導用戶至錯誤頁面,不能展示異常棧信息(8)對于球員信息配置功能的靈活度尚未達成共識,影響了 系統(tǒng)可修改性(9)對于球員比賽實時收集響應時間的要求,影響了系統(tǒng)數(shù) 據(jù)存儲設計(10)主教練提出了訓練指標新模式,影響了系統(tǒng)性能和可 修改性根據(jù)上述場景生
3、成質(zhì)量屬性效用樹,(1)屬于性能,(2)(3) 屬性可用性,(4)屬于可修改性,(5)屬于平安性,(6)屬于易用 性,(7)屬于可靠性:我們再根據(jù)這些場景分析系統(tǒng)的風險點、敏感點、權衡點。 風險點是指某些操作會給系統(tǒng)帶來隱患和風險,(8)屬于風險點。 敏感點是指為了實現(xiàn)某個特定質(zhì)量屬性,一個或多個系統(tǒng)組件所 具有的特性,(9)屬于敏感點。權衡點是指某些操作會影響系統(tǒng) 的多個質(zhì)量屬性,(10)屬于權衡點。第三個階段是測試階段,根據(jù)足球運發(fā)動信息管理系統(tǒng)特性, 我們首先確定場景優(yōu)先級,由高到低分別是:性能、可靠性、可 修改性、平安性、可用性、易用性。架構權衡分析方法所謂權衡在此得到了表達,質(zhì)量屬性
4、每個 都很重要,但是根據(jù)系統(tǒng)特點需要對質(zhì)量屬性有優(yōu)先級排序,架 構設計時需要所有權衡和折中。確定了優(yōu)先級之后,我們需要具體闡述針對每個質(zhì)量屬性系 統(tǒng)采取了哪些方案,例如提升性能使用了緩存,提升可修改性使 用了策略模式,提升可靠性使用了統(tǒng)一異常處理框架等等,具體 方案可以參考本文第一章節(jié)。第四個階段是報告階段,我們將評估過程和結果都匯總整理 成文檔,其中包括質(zhì)量屬性效用樹、風險點、敏感點、權衡點和 每次評估會議紀要,以及最終的架構決策。3文章總結第一系統(tǒng)滿足功能性需求是最基本的要求,作為架構師不能 就此止步,不僅應該關注功能性需求,還應該關注非功能性需求, 質(zhì)量屬性就是衡量系統(tǒng)質(zhì)量的重要指標。第
5、二架構評估方法分為基于問卷、基于度量、基于場景的方 式,目前業(yè)內(nèi)較為流行的是基于場景的評估方法,ATAM是一種優(yōu) 秀的基于場景評估方法。第三ATAM以質(zhì)量屬性效用樹為核心,幫助架構師識別工程風險點、敏感點、權衡點,指導架構師做出合理架構決策。性能如何定義性能有兩個定義維度:第一個維度是單位時間內(nèi)可以做多少 事情,第二個維度是做完單位數(shù)量的事情需要多少時間,常用以 下參數(shù)進行量化:QPS:每秒處理請求數(shù)TPS:每秒處理事務數(shù)并發(fā)數(shù):同一時刻處理請求數(shù)/事務數(shù)響應時間:系統(tǒng)對請求做出響應的時間并發(fā)數(shù)二QPS x RT1.2如何提升提升性能可以從兩個維度思考,第一個維度是時間維度,從 事前、事中、事
6、后三個時間節(jié)點進行優(yōu)化。事前是指在訪問最開 始就拒絕無效流量。事中可以使用提高并發(fā)度(并發(fā)編程),增 加資源(服務器、分布式緩存、讀寫別離,分庫分表),減少交互 (批量請求)等方案。事后是指數(shù)據(jù)分析需求可以放到離線數(shù)據(jù) 中心進行,不要放在主應用和主數(shù)據(jù)庫進行。第二個維度是層次維度,每一層都可以進行優(yōu)化。系統(tǒng)架構 一般分為數(shù)據(jù)層、緩存層、服務層、網(wǎng)關層、客戶端、代理層, 每一層都可以進行優(yōu)化,每一層都可以按照事前、事中、事后進 行優(yōu)化,而不是一提到優(yōu)化就是加緩存,應該更加全面地思考。1. 2可用性. 1如何定義可用性是指系統(tǒng)正常運行時間占總運行時間比例,業(yè)界常用X個9指標進行量化,例如可用性到達
7、5個9,那么全年系統(tǒng)不 可用時間只有5分鐘:如何提升(1)非線性我們從另一個概念理解可用性:非線性,這個概念在生活中 無處不在。假設要趕早上8點鐘的火車,如果6:30出發(fā)可以在7:00到 達車站,所以得到一個結論:只要30分鐘就可以到達車站。如果早上睡晚一點7: 15出發(fā),那么按照預期7:45可以到達 車站。但是最可能的結果是錯過這趟火車。因為正好遇上早高峰 導致至少需要1個小時才能到達車站。我們再分析一個互聯(lián)網(wǎng)秒殺場景。假設秒殺系統(tǒng)當每秒30 個請求時,響應時間是10毫秒。如果按照線性思維可以做出如 下設計:每秒30個訪問量響應時間10毫秒每秒300個訪問量響應時間100毫秒每秒3000個訪
8、問量響應時間1000毫秒如果按照這個思路做系統(tǒng)設計將會發(fā)生重大錯誤。因為當每 秒3000個訪問量發(fā)生時,響應時間可能不是1000毫秒,而是可 能直接導致系統(tǒng)崩潰。這就是非線性,事物不是簡單線性疊加關系,當?shù)竭_某個臨界值時會造成一種截然不同的結果。(2)提升策略冗余+自動故障轉(zhuǎn)移最基本的冗余策略就是主從模式。原理是準備兩臺機器,部 署了同一份代碼,在功能層面是相同的,都可以對外提供相同的 服務。一臺機器啟動提供服務,這就是主服務器。另一臺機器啟動 在一旁待命,不提供服務,隨時監(jiān)聽主服務器的狀態(tài),這就是從 服務器。當發(fā)現(xiàn)主服務器出現(xiàn)故障時,從服務器立刻替換主服務 器,繼續(xù)為用戶提供服務。自動故障轉(zhuǎn)
9、移策略是指當主系統(tǒng)發(fā)生異常時,應該可以自動 探測到異常,并自動切換為備用系統(tǒng)。不應該只依靠人工去切換 成,否那么故障處理時間會顯著增加。降級策略當系統(tǒng)遇到無法承受的壓力時,選擇暫時關閉一些非關鍵的 功能,或者延時提供一些功能,把此刻所有的資源都提供給現(xiàn)在 最關鍵的服務。在秒殺場景中下訂單就是最核心最關鍵的功能。當系統(tǒng)壓力 將要到達臨界值時,可以暫時先關閉一些非核心功能如查詢功能。還有一種降級策略,當系統(tǒng)依賴的下游服務出現(xiàn)錯誤,甚至 已經(jīng)完全不可用了,那么此時就不能再調(diào)用這個下游服務了,否那么可能導致雪崩。所以直接返回兜底方案,把下游服務直接降級。延時策略用戶下訂單成功后就需要進行支付。假設秒殺
10、系統(tǒng)下訂單每 秒訪問量是3000,有沒有必要將每秒3000次訪問量壓力傳遞給 支付服務器?答案是沒有必要。因為用戶秒殺成功后可以稍晚付款,例如 可以跳轉(zhuǎn)到一個支付頁面,提示用戶只要在10分鐘內(nèi)支付完成 即可。這樣流量就被分攤至幾分鐘,有效保護了系統(tǒng)。技術架構還 可以使用消息隊列做緩沖,讓下游系統(tǒng)根據(jù)處理能力拉取消息。隔離策略物理隔離:應用分別部署在不同物理機、不同機房,資源之 間不會互相影響。線程隔離:不同類型的請求進行分類,交給不同的線程池處 理,當一類請求出現(xiàn)高耗時和異常,不影響另一類請求訪問。1. 3可修改性1. 3. 1如何定義可修改性是指是否能夠以較高的性價比對系統(tǒng)進行變更的 能力,
11、可以分為以下四種類型:可擴展性:系統(tǒng)擴展新構件時對其它構件的影響程度可維護性:系統(tǒng)修改舊構件時對其它構件的影響程度結構重組:重新組織構件關系的難易程度可移植性:在不同硬件平臺、編程語言、操作系統(tǒng)間移植的難易程度如何提升可修改性最終還是在解決牽一發(fā)而動全身的復雜性問題,復 雜業(yè)務之所以復雜,一個重要原因是涉及角色或者類型較多,如 果平鋪直敘地進行設計會出現(xiàn)if-else代碼塊,可讀性和可修改 性都很低。從功能上完全可以實現(xiàn)業(yè)務需求,但是程序員不僅要滿足功 能,還需要思考代碼的可維護性。如果新增一種訂單類型,或者 新增一個訂單屬性處理邏輯,那么我們就要在上述邏輯中新增代 碼,如果處理不慎就會影響原
12、有邏輯。為了防止牽一發(fā)而動全身這種情況,設計模式中的開閉原那么 要求我們面向新增開放,面向修改關閉,我認為這是設計模式中 最重要的一條原那么。需求變化通過擴展,而不是通過修改已有代碼實現(xiàn),這樣就 保證代碼穩(wěn)定性。擴展也不是隨意擴展,因為事先定義了算法, 擴展也是根據(jù)算法擴展,用抽象構建框架,用實現(xiàn)擴展細節(jié)。標 準意義的二十三種設計模式說到底最終都是在遵循開閉原那么。4可靠性1如何定義可靠性包括容錯性和健壯性,系統(tǒng)面對錯誤輸入仍能保證正 確輸出的能力,可以分為兩種類型:系統(tǒng)可靠性和業(yè)務可靠性。系統(tǒng)可靠性是指面對出現(xiàn)基本錯誤的輸入,系統(tǒng)能夠識別和 攔截,而不是任由其在構件中傳遞,造成錯誤數(shù)據(jù)或者引
13、發(fā)系統(tǒng) 異常。例如空值引發(fā)的空指針異常,不應該出現(xiàn)在系統(tǒng)中。業(yè)務可靠性是指輸入?yún)?shù)在基本校驗通過的情況下,系統(tǒng)能 夠進行業(yè)務校驗,不會引發(fā)超出業(yè)務預期的輸出結果。例如電商 系統(tǒng)中的超賣現(xiàn)象,重復創(chuàng)立訂單現(xiàn)象都是業(yè)務可靠性較低的表 現(xiàn)。如何提升(1)攔截提升可靠性的關鍵是應該盡早在上層識別并攔截異常數(shù)據(jù), 阻止其在構件中流動,防止產(chǎn)生系統(tǒng)異常和錯誤數(shù)據(jù),尤其當產(chǎn) 生錯誤數(shù)據(jù)后,數(shù)據(jù)修復難度大。提升系統(tǒng)可靠性可以在服務入口增加判空校驗、參數(shù)類型校 驗、范圍校驗、合法枚舉值校驗等基本校驗,一旦發(fā)現(xiàn)異常直接 拒絕。提升業(yè)務可靠性可以增強業(yè)務校驗,例如庫存預扣減,活動 有效期校驗,參與活動次數(shù)校驗,扣減
14、庫存校驗,分布式鎖控制 并發(fā)等方案,如果校驗規(guī)那么復雜可以引入規(guī)那么引擎進行條件組合, 不滿足業(yè)務條件直接拒絕請求。(2)告警如果第一階段沒有將異常輸入攔截成功,那么就要在發(fā)生異常時及時感知,異常分為系統(tǒng)異常和業(yè)務異常。系統(tǒng)異常是不允許出現(xiàn)的異常,例如空指針,操作數(shù)據(jù)庫失 敗等異常,一旦出現(xiàn)就要立即告警。業(yè)務異常可以分為以下類型:業(yè)務異常:單位時間出現(xiàn)X次需要告警延時監(jiān)控:某指標單位時間內(nèi)是否變化數(shù)據(jù)監(jiān)控:單位時間數(shù)據(jù)指標是否正常5平安性與易用性平安性是指系統(tǒng)防止非法用戶訪問的能力,易用性是指系統(tǒng) 使用的難易程度,本文不展開論述,下一個章節(jié)會再提到。2架構評估方法1三種評估方法因為涉及到眾多變
15、量和場景,所以評估一個復雜技術系統(tǒng)的 質(zhì)量并不是一件容易的事情。業(yè)界有以下三種評估方法:第一是基于問卷的方式,通過問卷調(diào)查對系統(tǒng)比擬熟悉的相 關人員得到結論,這種方式主觀性很強。第二是基于度量的方式,對系統(tǒng)指標完全量化,基于量化指 標評價系統(tǒng),這種方式需要評估者對系統(tǒng)非常熟悉。第三種是基于場景的方式,篩選出系統(tǒng)的關鍵場景,根據(jù)系 統(tǒng)在不同場景中的表現(xiàn)進行評估,這種方式具有一定的主觀性, 需要評估者對系統(tǒng)較為熟悉,這也是目前較為流行的架構評估方 法。架構權衡評估方法(ATAM)全稱是Architecture Tradeoff Analysis Method,由卡梅隆大學軟件工程協(xié)會提出,是一種基 于場景的架構評估方法,核心是結合質(zhì)量屬性效用樹對系統(tǒng)進行 評價,確定風險點、敏感點、權衡點,并對系統(tǒng)架構做出決策和 折中。ATAM分為以下步驟,其中123為描述和介紹階段,456為調(diào) 查和分析階段,78為測試階段,9為報告階段。2 ATAM 實例本文以結合DDD講清楚編寫技術方案的七大維度足球運 發(fā)動信息管理系統(tǒng)為例看看ATAM如何實施。第一階段是描述和介紹階段,首先由架構師向大家介紹什么 是ATAM方法,其次由產(chǎn)品經(jīng)理介紹開發(fā)足球運發(fā)動
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年中國迷你樹籬剪市場調(diào)查研究報告
- 2024版勞務服務居間合同
- 2024年高級管理人員職業(yè)素養(yǎng)培訓服務合同3篇
- 2024版按揭購房合同范例3篇
- 2024年門窗安裝項目協(xié)議模板版B版
- 2024年鋁板幕墻施工分包協(xié)議2篇
- 二零二五年度800億宜賓酒王控量保價戰(zhàn)略合作協(xié)議2篇
- 2025年度文化藝術品買賣合同:某藝術品收藏家與某藝術品供應商之間的藝術品買賣協(xié)議3篇
- 2024年礦產(chǎn)資源勘探、開發(fā)與合作合同
- 2024年活性鈣膠囊項目可行性研究報告
- 醫(yī)院院長年終工作總結報告精編ppt
- 大連市小升初手冊
- 《自然辯證法》課后習題答案自然辯證法課后題答案
- 造價咨詢結算審核服務方案
- 中國人民財產(chǎn)保險股份有限公司機動車綜合商業(yè)保險條款
- 燃氣工程監(jiān)理實施細則(通用版)
- E車E拍行車記錄儀說明書 - 圖文-
- 人才梯隊-繼任計劃-建設方案(珍貴)
- 《健身氣功》(選修)教學大綱
- 王家?guī)r隧道工程地質(zhì)勘察報告(總結)
- 《昆明的雨》優(yōu)質(zhì)課一等獎(課堂PPT)
評論
0/150
提交評論