軟件系統性能常見方法論? 在IT行業的發展過程中,先有傳統行業,後出現了互聯網行業傳統行業的特點為:業務抽象度高,重用率高,流程複雜,中心化管理互聯網行業的特點為:業務水平,垂直拆分,模塊化,職責單一,功能簡單,敏捷交付,非功能性質量要求高,我來為大家科普一下關于軟件系統性能常見方法論?下面希望有你要的答案,我們一起來看看吧!
在IT行業的發展過程中,先有傳統行業,後出現了互聯網行業。傳統行業的特點為:業務抽象度高,重用率高,流程複雜,中心化管理。互聯網行業的特點為:業務水平,垂直拆分,模塊化,職責單一,功能簡單,敏捷交付,非功能性質量要求高。
通常軟件架構設計分為需求分析整理,概要設計,詳細設計三個階段,每個階段任務如下:
一. 架構權衡分析法(ATAM)
架構權衡分析法(Architecture Tradeoff Analysis Method,ATAM)為行業通用的實踐方法,該方法揭示架構滿足特定質量目标的情況,使得我們認識到目标與質量之間的權衡和制約。通用的非功能質量指标包括:高可用,高性能,可伸縮,可擴展,安全性,穩定性,可維護性,可測試性,健壯性等。
非功能質量指标 |
描述 |
高性能 |
運行效率高,性價比高,通常指單節點吞吐量和響應時間 |
高可用 |
持續可用性,縮短宕機時間,出錯恢複,可靠性 |
可伸縮性 |
垂直,水平伸縮 |
可擴展性 |
可插拔,組件重用,新業務,新功能疊加 |
安全性 |
數據安全,加密,熔斷,防攻擊 |
可監控性 |
快速發現,定位和解決問題 |
可測試性 |
可灰度,可預覽,可Mock,可拆解,QA測試,準生産測試 |
魯棒性 |
容錯性,可恢複性 |
可維護性 |
易于維護,監控,運營和擴展 |
可重用性 |
模塊化,可移植性,解耦 |
易用性 |
可操作性 |
非功能性質量需求的具體指标針對不同的系統主要分4部分:應用服務器,數據庫,緩存和消息隊列。
1. 應用服務器
序号 |
部署結構 |
容量性能指标 |
1 |
負載均衡策略 |
每天請求量 |
2 |
高可用策略 |
各接口訪問峰值 |
3 |
I/O模型 |
平均的請求響應時間 |
4 |
線程池模型 |
最大的請求響應時間 |
5 |
線程池中的線程數量 |
在線用戶量 |
6 |
是否多業務混合部署 |
請求的大小 |
7 |
網卡的IO流量 | |
8 |
磁盤的IO負載 | |
9 |
内存的使用情況 | |
CPU的使用情況 |
2. 數據庫
關注吞吐量,每天數據總量
序号 |
部署結構 |
容量性能指标 |
1 |
複制模型 |
當前的數據容量 |
2 |
失效轉移策略 |
每天的數據增量 |
3 |
容災策略 |
每秒的讀/寫峰值 |
4 |
歸檔分離策略 |
每秒的事務量峰值 |
5 |
分庫分表策略 |
查詢是否走索引 |
6 |
靜态數據是否啟用緩存 |
有沒有大數據量的查詢和範圍查詢 |
7 |
穿透緩存方案 |
有沒有多表關聯,關聯是否用到索引 |
8 |
緩存預熱策略 |
有沒有使用悲觀鎖,是否可以改為樂觀鎖,行級鎖。 |
9 |
事務的一緻性級别 | |
10 |
JDBC數據源類型及連接數配置,診斷日志是否開啟 | |
11 |
有沒有存儲過程 | |
12 |
伸縮策略(分區表,自然時間分表,水平分庫分表)水平分表的實現方法(客戶端,代理,nosql) |
3. 緩存
根據應用層的訪問量和訪問峰值,通過評估熱數據的占比,計算緩存資源的大小并估算緩存資源的峰值,由此來計算緩存資源的數量,部署結構,高可用方案等。
序号 |
部署結構 |
容量和性能指标 |
1 |
複制模型 |
緩存内容大小 |
2 |
失效轉移 |
緩存内容的過期時間 |
3 |
持久策略 |
緩存的數據結構 |
4 |
淘汰策略 |
每秒的讀、寫 峰值 |
5 |
線程模型 |
冷熱數據比例 |
6 |
預熱方法 |
分布式鎖 |
7 |
哈希分片策略 |
緩存分片方法(客戶端,代理,集群) |
8 |
是否有大對象 | |
9 |
是否有可能緩存穿透 |
4. 消息隊列
序号 |
部署結構 |
容量和性能指标 |
1 |
複制模型 |
每天平均的數據增量 |
2 |
失效轉移 |
消息持久的過期時間 |
3 |
持久策略 |
每秒的讀、寫峰值 |
4 |
每條消息大小 | |
5 |
平均延遲 | |
6 |
最大延遲 | |
7 |
消費者線程池模型 | |
8 |
哈希分片策略 | |
9 |
消息的可靠投遞 | |
10 |
消費者的處理流程和持久機制 |
二. 技術評審提綱
1. 業務需求:要改造的内容,要實現的新需求
2. 性能需求:預估系統容量(預估系統調用量平均值,平均響應時間),安全性,可伸縮性。
1.概述:一句話概括方案亮點:雙寫,遷移,主從分離,分庫分表,擴容,歸檔,接口改造。
2.詳細說明:結合各種視圖(UML,概念圖,框圖)表明改造方案,突出變動的地方。
3.性能評估
三. 系統評估案例
備注:如下數據基準僅做案例演示。
3.1 背景
數字家庭管理平台兩個質量需求。
3.2 目标數據量級
3.3 量級評估标準
容量:按照峰值的3倍進行冗餘設計。
業務開通容量:時效性較強,按照2年計算,轉儲設計。
第三方查詢接口:吞吐量為1000/S.
單端口讀:1000/S
單端口寫:700/S
單表容量:5000萬條。
單端口讀:40000/S
單端口寫:40000/S
單端口内存容量:32GB
單機讀:30000/S
單機寫:5000/S
請求量的峰值:200/S
3.4 方案
方案一. 最大性能方案
無法預估第三方的調用行為,假設提供最快的響應時間,最大的服務性能。
提供RESTful 服務來查詢終端信息。
提供RESTful服務來重啟對應終端。
按照1%的終端用戶存在潛在查詢需求,且集中在9:00-19:00 這10個小時内。冗餘按照3倍設計。
(800w*0.01)/(10*60*60)*3=2.23*3=7/s
mysql單端口完全夠用。
複位重啟後,10條參數需要重新下發,1%的終端用戶存在潛在複位重啟需求,且集中在9:00-19:00 這10個小時内。冗餘按照3倍設計。
(800w*0.01*10)/(10*60*60)*3=22.3*3=70/s
mysql 單端口完全夠用。
當前800萬用戶,1%複位重啟,每個用戶下發10條參數,3倍冗餘,單表容量5000萬,2年後下發參數條目數及所需表數量計算如下:
(800w*0.01*365*2年)*10條*3倍=17億條/0.5億=34張。
根據以上讀寫吞吐量評估,如果讀寫分離,主從部署,需要1主1從,如若考慮主備,則需要2主2從。34*2=68張表,考慮将來端口擴展不拆分數據庫,盡量設計更多的庫,比如使用16個庫。設計結果:2端口*16庫*2表。
為了提升查詢效率,需要redis緩存活躍終端的基本信息,定義近一天和平台有聯系的終端(40%)為活躍終端,緩存24小時,每條終端信息為1KB, 冗餘3倍設計,緩存大小計算如下:
800w*0.4*1KB=3.2GB*3=9.6G.
1台機器32G,讀寫滿足5000/S, 所以設計結果為1台。
根據數據庫讀寫7/S, 70/S的峰值計算,單台應用服務器即可,選擇兩台可避免單點故障。
設計結果2台。
所以最大性能設計方案最終需要服務器:
數據庫2台 緩存服務器1台 應用服務器1台=4台。
方案二. 最小資源方案
請求量暫時無法評估,最小資源方案可節省成本,目前測算單台容量足夠承載。
數據庫1台 應用服務器1台=2台。
四. 常用的系統層性能指标參考标準
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!