




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、軟件架構(gòu)設(shè)計:屬性、原則和實踐伍活欣 軟件架構(gòu)設(shè)計屬性原則和實踐一個人一篇論文Roy Thomas Fielding博士 架構(gòu)風(fēng)格與基于網(wǎng)絡(luò)的軟件架構(gòu)設(shè)計。Fielding博士是HTTP和URI等Web架構(gòu)標(biāo)準(zhǔn)的主要設(shè)計者。也是Apache服務(wù)器的主要開發(fā)者。定義和提出Restful架構(gòu)風(fēng)格。軟件架構(gòu)設(shè)計屬性原則和實踐什么是架構(gòu)對系統(tǒng)運行時元素運行時元素的抽象抽象.軟件架構(gòu)設(shè)計屬性原則和實踐關(guān)于抽象抽象原則是架構(gòu)設(shè)計的核心原則抽象原則是架構(gòu)設(shè)計的核心原則ClientCacheProxySource軟件架構(gòu)設(shè)計屬性原則和實踐什么是架構(gòu)風(fēng)格一組應(yīng)用在設(shè)計上的約束約束軟件架構(gòu)設(shè)計屬性原則和實踐架構(gòu)屬
2、性 性能 -Performance 可伸縮性 -Scalability 簡單性 -Simplicity 可修改性 -Modifiability 可見性 -Visibility 可移植性 -Portability 可靠性 -Reliability 運維友好性 Operations-friendly 安全性 -Security軟件架構(gòu)設(shè)計屬性原則和實踐架構(gòu)屬性性能 Performance軟件架構(gòu)設(shè)計屬性原則和實踐性能 網(wǎng)絡(luò)性能 Network Performance 吞吐量 throughput (TPS) 用戶可察覺的性能 User-perceived Performance 延遲 latenc
3、y 完成時間 completion 網(wǎng)絡(luò)效率 Network Efficiency 網(wǎng)絡(luò)交互頻率和效率軟件架構(gòu)設(shè)計屬性原則和實踐案例1點擊加載更多點擊加載更多性能首先取決于應(yīng)用的需求應(yīng)用的需求,然后是所選擇的交互風(fēng)格交互風(fēng)格,然后是實現(xiàn)的架構(gòu),最后是每個組件的實現(xiàn)。軟件架構(gòu)設(shè)計屬性原則和實踐案例2小明要給客人沏茶,需要多長時間?用并行代替串行用并行代替串行軟件架構(gòu)設(shè)計屬性原則和實踐案例3 論壇圖片加載: 點擊數(shù)更新、個人積分更新、個人列表更新等等 推薦列表的獲?。ㄍ瑫r需考慮SEO的需要)用異步代替同步用異步代替同步AMIAMD軟件架構(gòu)設(shè)計屬性原則和實踐案例4分流輕事務(wù)和重事務(wù)分流輕事務(wù)和重事務(wù)
4、排隊請取號:現(xiàn)金業(yè)務(wù)非現(xiàn)金業(yè)務(wù)公積金業(yè)務(wù)軟件架構(gòu)設(shè)計屬性原則和實踐案例5減少稀缺資源的占用和占用時間減少稀缺資源的占用和占用時間 啟用Nginx傳輸壓縮,降低下行帶寬占用; 啟用獨立的靜態(tài)資源域名,降低上行帶寬占用; 一段相冊的老代碼:Connection cnn = DbService.getConnection();存儲原圖;制作大中小圖;statement.exec(sql);cnn.close();軟件架構(gòu)設(shè)計屬性原則和實踐案例6盡量重用高成本資源盡量重用高成本資源 數(shù)據(jù)庫連接池; 采用長連接; SPDY協(xié)議對TCP連接的復(fù)用; JVM對域名解析結(jié)果的緩存;軟件架構(gòu)設(shè)計屬性原則和實踐案
5、例7盡量用內(nèi)存操作代替磁盤和網(wǎng)絡(luò)操作盡量用內(nèi)存操作代替磁盤和網(wǎng)絡(luò)操作 各種層級的緩存策略; 合并多個點擊數(shù)更新請求再更新到DB ; MQ驅(qū)動合并多個消息異步發(fā)送;軟件架構(gòu)設(shè)計屬性原則和實踐案例8盡量減少網(wǎng)絡(luò)交互次數(shù)盡量減少網(wǎng)絡(luò)交互次數(shù) 就近訪問:CDN、瀏覽器緩存、本地緩存; 中央配置本地緩存; 批量提交; 壓縮傳輸;軟件架構(gòu)設(shè)計屬性原則和實踐原則回顧 性能優(yōu)化應(yīng)首先考慮需求的優(yōu)化和交互的優(yōu)化 用并行代替串行 用異步代替同步 分流輕事務(wù)和重事務(wù) 減少稀缺資源的占用和占用時間 盡量重用高成本資源 盡量用內(nèi)存操作代替磁盤和網(wǎng)絡(luò)操作 盡量減少網(wǎng)絡(luò)交互次數(shù)軟件架構(gòu)設(shè)計屬性原則和實踐架構(gòu)屬性可伸縮性 S
6、calability軟件架構(gòu)設(shè)計屬性原則和實踐可伸縮性架構(gòu)支持大量組件或大量組件之間交互的能力彈性彈性軟件架構(gòu)設(shè)計屬性原則和實踐案例9結(jié)點數(shù)Mod震蕩率Ketama震蕩率15049267353752548024583176861378713889109901110919020406080100120147 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61 64 67 70 73 76 79 82 85 88 91 94 97modMissRateketamaMissRate取模和一致性哈希的震蕩率對比測試Node Increment:1
7、,Sample Size:10W,Key:UUID,Hash:Ketama軟件架構(gòu)設(shè)計屬性原則和實踐可伸縮性 簡化組件 分布式集群 用規(guī)則代替映射 選用彈性好的路由算法 善用負載均衡和代理 配置弱中心化 實現(xiàn)運維自動化:DNS自助、LB自助、VM自助、運行環(huán)境構(gòu)建、代碼部署、監(jiān)控軟件架構(gòu)設(shè)計屬性原則和實踐架構(gòu)屬性簡單性Simplicity軟件架構(gòu)設(shè)計屬性原則和實踐簡單性 分離關(guān)注點原則-分層設(shè)計-面向接口而不是實現(xiàn)-分離對象的使用和創(chuàng)建 IOC-分離應(yīng)用的業(yè)務(wù)邏輯與系統(tǒng)級服務(wù) AOP 通用性原則 可理解性軟件架構(gòu)設(shè)計屬性原則和實踐架構(gòu)屬性可修改性Modifiability軟件架構(gòu)設(shè)計屬性原則和
8、實踐可修改性 可進化性 Evolvability 縱向升級 可擴展性 Extensibility 橫向擴展,添加新能力 可定制性 Customizability 臨時性提供非常規(guī)服務(wù)的能力 可配置性 Configurability 部署后對組件修改的能力 可重用性 Reusability 架構(gòu)元素被其他應(yīng)用重用的能力靜態(tài)靜態(tài)動態(tài)動態(tài)軟件架構(gòu)設(shè)計屬性原則和實踐可修改性 版本化一切:接口版本、協(xié)議版本、序列化版本、消息版本等等 微內(nèi)核+插件化 表達式支持、按需腳本和自定義實現(xiàn) 預(yù)留Hook和擴展點 配置文件、配置接口、控制臺響應(yīng) 細粒度切割然后組合成粗粒度 解耦合和遵循公共規(guī)范,如OSGI、JSO
9、N-RPC等軟件架構(gòu)設(shè)計屬性原則和實踐架構(gòu)屬性可見性Visibility軟件架構(gòu)設(shè)計屬性原則和實踐可見性可調(diào)式、可仲裁、可監(jiān)控、可測試的能力軟件架構(gòu)設(shè)計屬性原則和實踐案例10 Memcached中存儲 序列化的Java對象 VS BSON VS JSON; RPC序列化對象采用 Hessian2二進制 VS JSON; RPC協(xié)議采用HTTP VS ICE; 遵循Restful風(fēng)格的Http請求 VS 普通Http請求; 啟發(fā)式控制器 VS 簡單規(guī)則控制器;為了創(chuàng)造非常復(fù)雜的事物,放棄一定的控制和可見性是必要的為了創(chuàng)造非常復(fù)雜的事物,放棄一定的控制和可見性是必要的軟件架構(gòu)設(shè)計屬性原則和實踐可見
10、性 使用可讀性強的消息體和協(xié)議; 使用行業(yè)支持性廣的規(guī)范和協(xié)議; 在設(shè)計之初就預(yù)留監(jiān)控口、健康檢查口和調(diào)試口; 在關(guān)鍵業(yè)務(wù)邏輯預(yù)留Info或Debug級別日志信息; 日志級別可動態(tài)調(diào)整,范圍可控; 支持運行時的人機交互; 支持運行時按需監(jiān)控和調(diào)試;軟件架構(gòu)設(shè)計屬性原則和實踐架構(gòu)屬性可移植性Portability軟件架構(gòu)設(shè)計屬性原則和實踐可移植性 遵循規(guī)范; 避免使用一些運行環(huán)境專有的特性; 盡量避免本地依賴; 使用虛擬機機制,如JVM; 還是抽象;軟件架構(gòu)設(shè)計屬性原則和實踐架構(gòu)屬性可靠性Reliability軟件架構(gòu)設(shè)計屬性原則和實踐可靠性可用性可用性Availability健壯性Robust
11、ness軟件架構(gòu)設(shè)計屬性原則和實踐案例11軟件架構(gòu)設(shè)計屬性原則和實踐案例121234512345511122233344455兩種不同的一致性哈希實現(xiàn)軟件架構(gòu)設(shè)計屬性原則和實踐可靠性 為每個服務(wù)制定SLA,實時度量并及時報警; 功能可降級可開關(guān); 區(qū)分主體功能和裝飾功能,裝飾功能可異步可降級可關(guān)閉; 為每一級入口添加分流、限流和配額控制器; 避免單點,增加冗余; 多活; 做好充分的故障預(yù)期;軟件架構(gòu)設(shè)計屬性原則和實踐可靠性 充分驗證的故障響應(yīng)機制,如Failover、Failfast、Failback、Failsafe; 去中心化或弱中心化; 考慮部署隔離,甚至物理隔離; 同城多機房,異地備份
12、; 制定備份策略,冷備、熱備、增量、全量、異地、多介質(zhì); 充分考慮人機交換的辦公障礙;軟件架構(gòu)設(shè)計屬性原則和實踐架構(gòu)屬性運維友好性 Operations-friendly軟件架構(gòu)設(shè)計屬性原則和實踐運維友好性 Fault recovery; Quick service health check; Allow emergency human intervention; Redundancy,avoid single points of failure; Keep deploy simple; Support single server deployment;以下內(nèi)容摘錄自:James Hamilt
13、on:On Designing and Deploying Internet-Scale Services軟件架構(gòu)設(shè)計屬性原則和實踐運維友好性 Use performance counters for all operations Audit all operations; Track all fault tolerance mechanisms; Support a “big red switch”; Control admission; Ramp up support;軟件架構(gòu)設(shè)計屬性原則和實踐運維友好性 Record all significant actions; Make all reported errors actionable; Give enough information t
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 投資組合的分散投資原理與策略解析考核試卷
- 服裝縫紉培訓(xùn)課件
- 投影設(shè)備在會議室與教室應(yīng)用考核試卷
- 塑料在汽車行業(yè)的應(yīng)用考核試卷
- 城市配送與物流配送環(huán)節(jié)的彈性規(guī)劃考核試卷
- 儲值卡采購合同范本
- 房東改造合租合同范本
- 大班冬季交通安全課件
- 行政事業(yè)單位合同
- 項目推進時間表與工作計劃書
- 深靜脈血栓形成的診斷和治療指南(第三版)解讀資料講解課件
- 人教版小學(xué)一年級美術(shù)上冊全冊課件
- 統(tǒng)編人教部編版道德與法治四年級下冊教材解讀教師教材培訓(xùn)課件
- 履約專項檢查表
- 人教版數(shù)學(xué)四年級下冊第一單元測試卷
- 模具保養(yǎng)記錄表
- 2023國家自然科學(xué)基金申請書
- 原始狩獵圖 (2)
- 《色彩構(gòu)成——色彩基礎(chǔ)知識》PPT課件
- 鍍層的結(jié)合力
- 霍尼韋爾DDC編程軟件(CARE)簡介
評論
0/150
提交評論