軟件架構設計屬性原則和實踐_第1頁
軟件架構設計屬性原則和實踐_第2頁
軟件架構設計屬性原則和實踐_第3頁
軟件架構設計屬性原則和實踐_第4頁
軟件架構設計屬性原則和實踐_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、軟件架構設計:屬性、原則和實踐伍活欣 軟件架構設計屬性原則和實踐一個人一篇論文Roy Thomas Fielding博士 架構風格與基于網(wǎng)絡的軟件架構設計。Fielding博士是HTTP和URI等Web架構標準的主要設計者。也是Apache服務器的主要開發(fā)者。定義和提出Restful架構風格。軟件架構設計屬性原則和實踐什么是架構對系統(tǒng)運行時元素運行時元素的抽象抽象.軟件架構設計屬性原則和實踐關于抽象抽象原則是架構設計的核心原則抽象原則是架構設計的核心原則ClientCacheProxySource軟件架構設計屬性原則和實踐什么是架構風格一組應用在設計上的約束約束軟件架構設計屬性原則和實踐架構屬

2、性 性能 -Performance 可伸縮性 -Scalability 簡單性 -Simplicity 可修改性 -Modifiability 可見性 -Visibility 可移植性 -Portability 可靠性 -Reliability 運維友好性 Operations-friendly 安全性 -Security軟件架構設計屬性原則和實踐架構屬性性能 Performance軟件架構設計屬性原則和實踐性能 網(wǎng)絡性能 Network Performance 吞吐量 throughput (TPS) 用戶可察覺的性能 User-perceived Performance 延遲 latenc

3、y 完成時間 completion 網(wǎng)絡效率 Network Efficiency 網(wǎng)絡交互頻率和效率軟件架構設計屬性原則和實踐案例1點擊加載更多點擊加載更多性能首先取決于應用的需求應用的需求,然后是所選擇的交互風格交互風格,然后是實現(xiàn)的架構,最后是每個組件的實現(xiàn)。軟件架構設計屬性原則和實踐案例2小明要給客人沏茶,需要多長時間?用并行代替串行用并行代替串行軟件架構設計屬性原則和實踐案例3 論壇圖片加載: 點擊數(shù)更新、個人積分更新、個人列表更新等等 推薦列表的獲?。ㄍ瑫r需考慮SEO的需要)用異步代替同步用異步代替同步AMIAMD軟件架構設計屬性原則和實踐案例4分流輕事務和重事務分流輕事務和重事務

4、排隊請取號:現(xiàn)金業(yè)務非現(xiàn)金業(yè)務公積金業(yè)務軟件架構設計屬性原則和實踐案例5減少稀缺資源的占用和占用時間減少稀缺資源的占用和占用時間 啟用Nginx傳輸壓縮,降低下行帶寬占用; 啟用獨立的靜態(tài)資源域名,降低上行帶寬占用; 一段相冊的老代碼:Connection cnn = DbService.getConnection();存儲原圖;制作大中小圖;statement.exec(sql);cnn.close();軟件架構設計屬性原則和實踐案例6盡量重用高成本資源盡量重用高成本資源 數(shù)據(jù)庫連接池; 采用長連接; SPDY協(xié)議對TCP連接的復用; JVM對域名解析結果的緩存;軟件架構設計屬性原則和實踐案

5、例7盡量用內存操作代替磁盤和網(wǎng)絡操作盡量用內存操作代替磁盤和網(wǎng)絡操作 各種層級的緩存策略; 合并多個點擊數(shù)更新請求再更新到DB ; MQ驅動合并多個消息異步發(fā)送;軟件架構設計屬性原則和實踐案例8盡量減少網(wǎng)絡交互次數(shù)盡量減少網(wǎng)絡交互次數(shù) 就近訪問:CDN、瀏覽器緩存、本地緩存; 中央配置本地緩存; 批量提交; 壓縮傳輸;軟件架構設計屬性原則和實踐原則回顧 性能優(yōu)化應首先考慮需求的優(yōu)化和交互的優(yōu)化 用并行代替串行 用異步代替同步 分流輕事務和重事務 減少稀缺資源的占用和占用時間 盡量重用高成本資源 盡量用內存操作代替磁盤和網(wǎng)絡操作 盡量減少網(wǎng)絡交互次數(shù)軟件架構設計屬性原則和實踐架構屬性可伸縮性 S

6、calability軟件架構設計屬性原則和實踐可伸縮性架構支持大量組件或大量組件之間交互的能力彈性彈性軟件架構設計屬性原則和實踐案例9結點數(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軟件架構設計屬性原則和實踐可伸縮性 簡化組件 分布式集群 用規(guī)則代替映射 選用彈性好的路由算法 善用負載均衡和代理 配置弱中心化 實現(xiàn)運維自動化:DNS自助、LB自助、VM自助、運行環(huán)境構建、代碼部署、監(jiān)控軟件架構設計屬性原則和實踐架構屬性簡單性Simplicity軟件架構設計屬性原則和實踐簡單性 分離關注點原則-分層設計-面向接口而不是實現(xiàn)-分離對象的使用和創(chuàng)建 IOC-分離應用的業(yè)務邏輯與系統(tǒng)級服務 AOP 通用性原則 可理解性軟件架構設計屬性原則和實踐架構屬性可修改性Modifiability軟件架構設計屬性原則和

8、實踐可修改性 可進化性 Evolvability 縱向升級 可擴展性 Extensibility 橫向擴展,添加新能力 可定制性 Customizability 臨時性提供非常規(guī)服務的能力 可配置性 Configurability 部署后對組件修改的能力 可重用性 Reusability 架構元素被其他應用重用的能力靜態(tài)靜態(tài)動態(tài)動態(tài)軟件架構設計屬性原則和實踐可修改性 版本化一切:接口版本、協(xié)議版本、序列化版本、消息版本等等 微內核+插件化 表達式支持、按需腳本和自定義實現(xiàn) 預留Hook和擴展點 配置文件、配置接口、控制臺響應 細粒度切割然后組合成粗粒度 解耦合和遵循公共規(guī)范,如OSGI、JSO

9、N-RPC等軟件架構設計屬性原則和實踐架構屬性可見性Visibility軟件架構設計屬性原則和實踐可見性可調式、可仲裁、可監(jiān)控、可測試的能力軟件架構設計屬性原則和實踐案例10 Memcached中存儲 序列化的Java對象 VS BSON VS JSON; RPC序列化對象采用 Hessian2二進制 VS JSON; RPC協(xié)議采用HTTP VS ICE; 遵循Restful風格的Http請求 VS 普通Http請求; 啟發(fā)式控制器 VS 簡單規(guī)則控制器;為了創(chuàng)造非常復雜的事物,放棄一定的控制和可見性是必要的為了創(chuàng)造非常復雜的事物,放棄一定的控制和可見性是必要的軟件架構設計屬性原則和實踐可見

10、性 使用可讀性強的消息體和協(xié)議; 使用行業(yè)支持性廣的規(guī)范和協(xié)議; 在設計之初就預留監(jiān)控口、健康檢查口和調試口; 在關鍵業(yè)務邏輯預留Info或Debug級別日志信息; 日志級別可動態(tài)調整,范圍可控; 支持運行時的人機交互; 支持運行時按需監(jiān)控和調試;軟件架構設計屬性原則和實踐架構屬性可移植性Portability軟件架構設計屬性原則和實踐可移植性 遵循規(guī)范; 避免使用一些運行環(huán)境專有的特性; 盡量避免本地依賴; 使用虛擬機機制,如JVM; 還是抽象;軟件架構設計屬性原則和實踐架構屬性可靠性Reliability軟件架構設計屬性原則和實踐可靠性可用性可用性Availability健壯性Robust

11、ness軟件架構設計屬性原則和實踐案例11軟件架構設計屬性原則和實踐案例121234512345511122233344455兩種不同的一致性哈希實現(xiàn)軟件架構設計屬性原則和實踐可靠性 為每個服務制定SLA,實時度量并及時報警; 功能可降級可開關; 區(qū)分主體功能和裝飾功能,裝飾功能可異步可降級可關閉; 為每一級入口添加分流、限流和配額控制器; 避免單點,增加冗余; 多活; 做好充分的故障預期;軟件架構設計屬性原則和實踐可靠性 充分驗證的故障響應機制,如Failover、Failfast、Failback、Failsafe; 去中心化或弱中心化; 考慮部署隔離,甚至物理隔離; 同城多機房,異地備份

12、; 制定備份策略,冷備、熱備、增量、全量、異地、多介質; 充分考慮人機交換的辦公障礙;軟件架構設計屬性原則和實踐架構屬性運維友好性 Operations-friendly軟件架構設計屬性原則和實踐運維友好性 Fault recovery; Quick service health check; Allow emergency human intervention; Redundancy,avoid single points of failure; Keep deploy simple; Support single server deployment;以下內容摘錄自:James Hamilt

13、on:On Designing and Deploying Internet-Scale Services軟件架構設計屬性原則和實踐運維友好性 Use performance counters for all operations Audit all operations; Track all fault tolerance mechanisms; Support a “big red switch”; Control admission; Ramp up support;軟件架構設計屬性原則和實踐運維友好性 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)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論