一. 微服務架構面臨的挑戰
1 微服務核心價值:3S
2 微服務架構帶來的運維挑戰
1)單服務流量激增時擴容
2)調用鏈條變長,調用關系更加復雜
3)微服務拆分導致故障點增多
1)單服務變更性能影響如何評估?
2)性能瓶頸在各微服務間漂移,如何做好性能測試?
3)應對突發流量需求,擴容能否解決問題,如何擴容?
4)服務實例數量眾多,如何收集信息,快速定位性能問題?
二. 華為雲微服務性能保障解決方案設計
華為雲微服務性能保障解決方案介紹
1 什么是ServiceMesh
- 一種基礎設施層,服務間通信通過Service mesh轉發
- 一種TCP/IP之上的網絡模型
- 一個輕量的網絡代理,與業務部署在一起
- 可靠的傳輸復雜網絡拓撲中的服務請求,將服務變為現代的雲原生服務
2 華為ServiceMesh整體架構
3 管理面服務治理能力
可人工介入,未運行時的mesher和侵入式框架提供配置下發
- 注冊中心
- 下發配置
- 監控服務
- 調用引擎
4 數據面支持侵入式與非侵入式Mesher
即侵入式框架與非侵入式mesher
- 注冊發現
- 執行路由策略
- 負載均衡
- 透明TLS傳輸
- 生成監控數據
5 微服務架構的關鍵性能瓶頸點
1)Mesher的性能損耗(1ms)
2)單服務的接口性能
3)全鏈路調用性能
4)服務伸縮能力
6 關於性能我們需要做哪些
-
開展分層驗證,掌握服務的能力基線
1)單服務接口測試
驗證單服務的各個接口能力基線以及組合接口的能力基線
2)全鏈路測試
驗證全鏈路場景以及多鏈路組合場景的性能,優化鏈路中性能不足的服務
3)伸縮能力驗證
驗證單服務的水平擴容能力,驗證既定模型下的多鏈路組合場景的資源模型 -
性能測試服務化,提升驗證體驗
關鍵設計1:模塊化管理,事務靈活組合與復用
抽象性能測試所需的元素並模塊化,實現靈活復用和配置修改
關鍵設計2:可擴展的高性能執行集群
三. 性能測試實施策略
1 關鍵度量指標
1)制定測試目標,要求測試指標結果達到用戶預期目標。
2)指標數據一般包括並發用戶數、Response Time、TPS、通過率等。
3)系統的吞吐量要和響應時間關聯(SLA),如至少90%以上的請求在正常合理響應時間內。
2 全鏈路調優測試策略
性能是一個逐步提升的過程,測試過程中需要找到擴容的模型,從不足50的TPS提升至萬級。
3 測試報告分析解讀
如何從測試工具側快速分析被測對象可能存在的問題
- 存在部分響應超時:
a) 服務器繁忙,如某個服務節點CPU利用率高
b) 網絡IO超過VM/EIP帶寬
c) 等待后端微服務、數據庫的超時時間設置過長
- 運行一段時間后全部響應超時或者檢查點校驗不通過:
a) 大壓力導致系統中某個微服務奔潰
b) 后端數據庫無響應
- TPS未隨着並發數增長而上升:
a) 系統性能到達瓶頸,持續並發加壓過程中響應時延增加(可觀察響應區間統計)
b) 可通過進一步加壓是否會出現非正常響應驗證
- TP90響應時延較短,TP99時延高:
a) 系統性能接近瓶頸
b) 可通過進一步加壓是否會出現非正常響應驗證
4 一些常見的性能優化手段
1)擴容,鏈路中的某一應用可能出現cpu使用率較高或者連接池資源不夠用(rpc、jdbc、redis連接池等)但本身對於拿到連接的請求處理又很快,這一類需要橫向擴展資源。
2)應用邏輯優化,比如存在慢sql、 邏輯的不合理如調用db或者redis次數過多、沒有做讀寫分離造成寫庫壓力過大。
3)超時時間的合理設置,對於應用之間的rpc調用或者應用與其他基礎組件之間的調用,均需要設置合理的超時時間,否則過長的等待將造成整個鏈路的故障。
4)緩存的應用,請求盡可能從前端返回,而不是每一個都要讓后端應用處理后再返回,減輕后端應用及數據庫壓力,提高系統吞吐能力。
5)限流,對於超出承載能力的QPS或並發,可以進行攔截並直接返回提示頁面。
降級,對於非核心鏈路上的應用,允許故障關閉而不影響核心鏈路
6)擴容和優化也是有限度的,在評估容量內,保障核心交易鏈路正常是重中之重,對於非核心功能模塊考慮降級場景
5 面對復雜網絡架構如何做性能測試
一個典型的互聯網平台:突發事件高流量突發,如瞬間由百級用戶增長到萬級
性能測試工具:雲性能測試服務
對於網絡架構復雜的應用,可以拆分壓力的入口點,進行分段驗證,屏蔽對應網元帶來的性能影響,如分別從最外端的CDN入口(1)、中間的ELB(2)、業務層(3)分別做測試,驗證復雜網絡架構情況下,各網元的瓶頸和影響
6 應用內部的性能瓶頸如何提升定位效率?
- 資源、應用、業務一站式監控與分析
- 應用拓撲與異常展示、故障下鑽
1)應用發現與依賴關系:非侵入采集應用KPI數據,並通過服務間接口自動生成依賴關系,展現應用拓撲。
2)應用KPI匯聚:微服務實例匯聚到應用(數字表示XX個實例),KPI數據自動匯聚到應用。
3)調用鏈跟蹤:下鑽獲取應用調用鏈,定位到具體出錯方法