系統複雜度——高性能

1 WHAT 對高性能的理解? 性能是軟件的一個重要質量屬性。衡量軟件性能包括了響應時間、TPS、服務器資源利用率等客觀指標,也可以是用戶的主觀感受(從程序員、業務用戶、終端用戶/客戶不同的視角,可能會得 出不同的結論)。

在說性能的時候,有一個概念與之緊密相關—伸縮性,這是兩個有區別的概念。性能更多的是衡量軟件系統處理一個請求或執行一個任務需要耗費的時間長短;而伸縮性則更加關注軟件系統在 不影響用戶體驗的前提下,能夠隨著請求數量或執行任務數量的增加(減少)而相應地擁有相適應的處理能力。

但是,什麼是“高”性能?這可能是一個動態概念,與當前的技術發展狀況與業務所處的階段緊密相關。比如,現在在行業/企業內部認為的高性能,站在5年後來看,未必是高性能。因此,站在 架構師、設計師的角度,高性能需要和業務所處的階段來衡量。高到什麼程度才能與當前或可預見的未來業務增長相匹配。一味去追求絕對意義上的高,沒有太大的實際意義。因為,伴隨性能 越來越高,相應的方法和系統複雜度也是越來越高,而這可能會與當前團隊的人力、技術、資源等不相匹配。但是什麼才合適的高性能了?這可能需要從國、內外的同行業規模相當、比自己強 的競爭者、終端用戶使用反饋中獲取答案並不斷迭代發展。

軟件系統中高性能帶來的複雜度主要體現在兩方面,一方面是單臺計算機內部為了高性能帶來的複雜度;另一方面是多臺計算機集群為了高性能帶來的複雜度。 

2 WHY 為什麼需要高性能? 追求良好的用戶體驗; 滿足業務增長的需要。

3 HOW 如何做好高性能? 可以從垂直與水平兩個維度來考慮。垂直維度主要是針對單臺計算機,通過升級軟、硬件能力實現性能提升;水平維度則主要針對集群系統,利用合理的任務分配與任務分解實現性能的提升。

垂直維度可包括以下措施:

增大內存減少I/O操作 更換為固態硬盤(SSD)提升I/O訪問速度 使用RAID增加I/O吞吐能力 置換服務器獲得更多的處理器或分配更多的虛擬核 升級網絡接口或增加網絡接口

水平維度可包括以下措施:
功能分解:基於功能將系統分解為更小的子系統
多實例副本:同一組件重複部署到多臺不同的服務器
數據分割:在每臺機器上都只部署一部分數據
垂直維度方案比較適合業務階段早期和成本可接受的階段,該方案是提升性能最簡單直接的方式,但是受成本與硬件能力天花板的限制。

水平維度方案所帶來的好處要在業務發展的後期才能體現出來。起初,該方案會花費更多的硬件成本,另外一方面對技術團隊也提出了更高的要求;但是,沒有垂直方案的天花板問題。一旦達 到一定的業務階段,水平維度是技術發展的必由之路。因此,作為技術部門,需要提前佈局 ,未雨綢繆,不要被業務拋的太遠。


分享到:


相關文章: