《系統設計》—架構師必備知識—系統設計基礎—0001

 
 
一、性能
性能指標
1. 響應時間
指某個請求從發出到接收到響應消耗的時間。
在對響應時間進行測試時,通常採用重複請求方式,然後計算平均響應時間。
2. 吞吐量
指系統在單位時間內可以處理的請求數量,通常使用每秒的請求數來衡量。
3. 併發用戶數
指系統能同時處理的併發用戶請求數量。
在沒有併發存在的系統中,請求被順序執行,此時響應時間爲吞吐量的倒數。例如系統支持的吞吐量爲 100 req/s
那麼平均響應時間應該爲 0.01s
目前的大型系統都支持多線程來處理併發請求,多線程能夠提高吞吐量以及縮短響應時間,主要有兩個原因:
CPU
IO 等待時間
使用 IO 多路複用等方式,系統在等待一個 IO 操作完成的這段時間內不需要被阻塞,可以去處理其它請求。通過將這
個等待時間利用起來,使得 CPU 利用率大大提高。
併發用戶數不是越高越好,因爲如果併發用戶數太高,系統來不及處理這麼多的請求,會使得過多的請求需要等待,
那麼響應時間就會大大提高。
性能優化
1. 集羣
將多臺服務器組成集羣,使用負載均衡將請求轉發到集羣中,避免單一服務器的負載壓力過大導致性能降低。
2. 緩存
緩存能夠提高性能的原因如下:
緩存數據通常位於內存等介質中,這種介質對於讀操作特別快;
緩存數據可以位於靠近用戶的地理位置上;
可以將計算結果進行緩存,從而避免重複計算。
3. 異步
某些流程可以將操作轉換爲消息,將消息發送到消息隊列之後立即返回,之後這個操作會被異步處理。
二、伸縮性
指不斷向集羣中添加服務器來緩解不斷上升的用戶併發訪問壓力和不斷增長的數據存儲需求。
伸縮性與性能
如果系統存在性能問題,那麼單個用戶的請求總是很慢的;
如果系統存在伸縮性問題,那麼單個用戶的請求可能會很快,但是在併發數很高的情況下系統會很慢。
實現伸縮性
應用服務器只要不具有狀態,那麼就可以很容易地通過負載均衡器向集羣中添加新的服務器。
關係型數據庫的伸縮性通過 Sharding 來實現,將數據按一定的規則分佈到不同的節點上,從而解決單臺存儲服務器
的存儲空間限制。
對於非關係型數據庫,它們天生就是爲海量數據而誕生,對伸縮性的支持特別好。
三、擴展性
指的是添加新功能時對現有系統的其它應用無影響,這就要求不同應用具備低耦合的特點。
實現可擴展主要有兩種方式:
使用消息隊列進行解耦,應用之間通過消息傳遞進行通信;
使用分佈式服務將業務和可複用的服務分離開來,業務使用分佈式服務框架調用可複用的服務。新增的產品可
以通過調用可複用的服務來實現業務邏輯,對其它產品沒有影響。
四、可用性
冗餘
保證高可用的主要手段是使用冗餘,當某個服務器故障時就請求其它服務器。
應用服務器的冗餘比較容易實現,只要保證應用服務器不具有狀態,那麼某個應用服務器故障時,負載均衡器將該應
用服務器原先的用戶請求轉發到另一個應用服務器上,不會對用戶有任何影響。
存儲服務器的冗餘需要使用主從複製來實現,當主服務器故障時,需要提升從服務器爲主服務器,這個過程稱爲切
換。
監控
CPU、內存、磁盤、網絡等系統負載信息進行監控,當某個數據達到一定閾值時通知運維人員,從而在系統發生
故障之前及時發現問題。
服務降級
服務降級是系統爲了應對大量的請求,主動關閉部分功能,從而保證核心功能可用。
五、安全性
要求系統在應對各種攻擊手段時能夠有可靠的應對措施。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章