1、可能的問題 要將redis運用到工程項目中,只使用一臺redis是萬萬不能的,原因如下: (1)從結構上,單個redis伺服器會發生單點故障,並且一臺伺服器需要處理所有的請求負載,壓力較大。 (2)從容量上,單個redis伺服器記憶體容量有限,就算一臺redis伺服器記憶體容量為256g,也不能將所 ...
1、可能的問題
要將redis運用到工程項目中,只使用一臺redis是萬萬不能的,原因如下:
(1)從結構上,單個redis伺服器會發生單點故障,並且一臺伺服器需要處理所有的請求負載,壓力較大。
(2)從容量上,單個redis伺服器記憶體容量有限,就算一臺redis伺服器記憶體容量為256g,也不能將所有內容都用作redis存儲記憶體,一般情況下,單台redis最大使用記憶體不應該超過20g
2、基本概念
2.1. 高可用
“高可用”(High Availability)用來描述一個系統經過專門的設計,從而減少停工時間,而保持其服務的高可用性。
高可用就是系統一直都能用,即使一臺redis掛了,系統還是能用別的redis使用。
2.2. 高併發
高併發是指通過設計保證系統能夠同時並行處理很多請求。
高併發指標有 響應時間、吞吐量、每秒查詢率QPS(Query Per Second),併發用戶等。
響應時間:系統對請求作出響應的時間,例如系統處理一個http請求需要200ms,這個200ms就是系統響應時間。
吞吐量:單位時間內處理的請求數量。
QPS:每秒響應請求數。在互聯網領域,這個指標和吞吐量區分的不明顯
併發用戶數:同時承載正常使用系統功能的用戶數量。例如一個即時通訊系統,同時線上數量一定程式上代表了系統的併發用戶數。
3、提升系統的併發能力
提升系統併發能力的方式,方法論中有兩種:垂直擴展(Scale Up)和水平擴展(Scale Out)
3.1. 垂直擴展
垂直擴展:提升單機處理能力,說白就是提升單兵作戰能力。
(1)增加單機硬體性能。例如增加CPU核數,升級更好的網卡如萬兆,升級更好的硬碟如SSD,擴充硬碟容量如2T,擴充系統記憶體如128G(都是用錢來解決的問題,沒啥技術含量)
(2)提升單機架構性能。例如使用Cache來減少IO次數,使用非同步來增加單服務吞吐量,使用無鎖數據結構來減少響應時間。
如果預算不是問題,建議使用“增強單機硬體性能”的方式提升系統併發能力。因為這個階段,公司的戰略往往是發展業務搶時間,而這種方式是最快的方法。
總結:不管是提升單機硬體性能,還是提升單機架構性能,都有一個致命的不足:單機性能是有極限的。所有互聯網分散式架構設計高併發終極解決方案還是水平擴展。
3.2. 水平擴展
水平擴展:只要增加伺服器數量,就能線性擴展系統性能。水平擴展對系統架構的設計是有要求的,難點在於:如何在架構各層進行可水平擴展的設計。
說白就是搞人海戰術。。。