系統設計基礎

2021-08-29 01:34:23 字數 1281 閱讀 1388

指某個請求從發出到接收到響應消耗的時間。

在對響應時間進行測試時,通常採用重複請求方式,然後計算平均響應時間。

指系統在單位時間內可以處理的請求數量,通常使用每秒的請求數來衡量。

指系統能同時處理的併發使用者請求數量。

在沒有併發存在的系統中,請求被順序執行,此時響應時間為吞吐量的倒數。例如系統支援的吞吐量為 100 req/s,那麼平均響應時間應該為 0.01s。

目前的大型系統都支援多執行緒來處理併發請求,多執行緒能夠提高吞吐量以及縮短響應時間,主要有兩個原因:

使用 io 多路復用等方式,系統在等待乙個 io 操作完成的這段時間內不需要被阻塞,可以去處理其它請求。通過將這個等待時間利用起來,使得 cpu 利用率大大提高。

併發使用者數不是越高越好,因為如果併發使用者數太高,系統來不及處理這麼多的請求,會使得過多的請求需要等待,那麼響應時間就會大大提高。

將多台伺服器組成集群,使用負載均衡將請求**到集群中,避免單一伺服器的負載壓力過大導致效能降低。

快取能夠提高效能的原因如下:

某些流程可以將操作轉換為訊息,將訊息傳送到訊息佇列之後立即返回,之後這個操作會被非同步處理。

指不斷向集群中新增伺服器來緩解不斷上公升的使用者併發訪問壓力和不斷增長的資料儲存需求。

如果系統存在效能問題,那麼單個使用者的請求總是很慢的;

如果系統存在伸縮性問題,那麼單個使用者的請求可能會很快,但是在併發數很高的情況下系統會很慢。

應用伺服器只要不具有狀態,那麼就可以很容易地通過負載均衡器向集群中新增新的伺服器。

關係型資料庫的伸縮性通過 sharding 來實現,將資料按一定的規則分布到不同的節點上,從而解決單台儲存伺服器的儲存空間限制。

對於非關係型資料庫,它們天生就是為海量資料而誕生,對伸縮性的支援特別好。

指的是新增新功能時對現有系統的其它應用無影響,這就要求不同應用具備低耦合的特點。

實現可擴充套件主要有兩種方式:

保證高可用的主要手段是使用冗餘,當某個伺服器故障時就請求其它伺服器。

應用伺服器的冗餘比較容易實現,只要保證應用伺服器不具有狀態,那麼某個應用伺服器故障時,負載均衡器將該應用伺服器原先的使用者請求**到另乙個應用伺服器上,不會對使用者有任何影響。

儲存伺服器的冗餘需要使用主從複製來實現,當主伺服器故障時,需要提公升從伺服器為主伺服器,這個過程稱為切換。

對 cpu、記憶體、磁碟、網路等系統負載資訊進行監控,當某個資料達到一定閾值時通知運維人員,從而在系統發生故障之前及時發現問題。

服務降級是系統為了應對大量的請求,主動關閉部分功能,從而保證核心功能可用。

要求系統在應對各種攻擊手段時能夠有可靠的應對措施。

系統設計基礎

指某個請求從發出到接收到響應消耗的時間。在對響應時間進行測試時,通常採用重複請求的方式,然後計算平均響應時間。指系統在單位時間內可以處理的請求數量,通常使用每秒的請求數來衡量。指系統能同時處理的併發使用者請求數量。在沒有併發存在的系統中,請求被順序執行,此時響應時間為吞吐量的倒數。例如系統支援的吞吐...

面試必備 系統設計基礎

1.響應速度 從發起請求到接收響應之間的時間長短反映的是響應速度。一般多次請求求平均值。2.吞吐量 每秒鐘可以處理的請求的數量。3.併發使用者數 支援多少使用者同時使用。通過多執行緒和非同步處理機制實現併發數提公升 1.使用集群 多台伺服器比一台伺服器處理起來壓力更小一些。2.使用快取 快取可以告訴...

系統架構設計基礎(一)

今天我們來聊一下系統架構設計的相關基本概念。系統架構這個詞現在用的非常多,大家可能平時都在用在講。那麼這個詞我覺得用的也比較淡,什麼事情可能不能扯上一點系統架構。但是回過頭去想,這種架構確實也不是乙個高大上的東西,你可能每天都在接觸,每天都在應用。如果那方面你沒有去總結,另一方面,你可能也沒有把這個...