1. 程式人生 > 實用技巧 >(精華)2020年10月6日 高併發高可用 架構冗餘

(精華)2020年10月6日 高併發高可用 架構冗餘

冗餘是什麼:

單體
單體:是把系統部署到一臺伺服器上,所有的請求業務都由這臺伺服器處理

優點:適合小型系統,節省資源

缺點:安全性低,一旦有突發壓力, 整個系統都會面臨崩潰在這裡插入圖片描述

叢集

叢集:把系統的各個功能拆分成不同的小系統,主要是分散能力

優點:資源利用率高,可以承擔部分壓力,降低耦合度,易於擴充套件

缺點:安全性低,如果其中一臺伺服器出現問題整個系統就會崩塌 忌:伺服器架構單點,整合必須解決單點問題在這裡插入圖片描述

冗餘是什麼

多餘的重複或囉嗦內容(包括資訊、語言、程式碼、結構、服務、軟體、硬體等等)均稱為冗餘。冗餘有兩層含義,第一層含義是指多餘的不需要的部分,第二層含義是指人為增加重複部分,其目的是用來對原本的單一部分進行備份,以達到增強其安全性的目的,這在資訊通訊系統當中有著較為廣泛的應用。

我們可以從兩方面理解:

第一層:表示多餘的不需要的部分,舉個例子:一個數據庫可以儲存100萬條資料,但是我們可以設定最多儲存80萬條,剩餘的20萬就是冗餘,這樣就提高一定的讀寫效能。那如果達到80萬之後還要增加資料怎麼辦?可以通過更換硬體、增加資料庫數量、分庫分表等方式來解決!

第二層:是說增加重複部分,上面所說的叢集可以說是一種冗餘

總結:叢集是一種冗餘,但是冗餘可不一定是叢集!

冗餘能夠給我們架構帶來什麼

解決伺服器架構單點! ! ! 具體表現:實現架構的高併發[多客戶場景],實現系統高可用[安全場景]

一個好的系統設計應該是分散式和叢集的結合,先分散式再叢集,設定適當的冗餘, 具體實現就是業務拆分成很多子業務,然後針對每個子業務進行叢集部署,這樣某個子業務如果出了問題, 整個系統完全不會受影響。

冗餘設計原則

1,平衡主節點故障允許時間T1和主備節點切換時間T2。 由於對於整個系統而言,需求被定位在節點的故障允許時間T。 當T1太長、T2太短時,系統用來監視主備節點執行狀態的消耗就少些, 但對主備節點的切換效能要求高,這隻有在主備節點間資料同步很充分的時候, 才能做到,所以就提高了對資料同步要求。

2,減少需要同步的資料量。一方面,對構件資訊進行良好歸類,分離出靜態資訊和可以自行獲得的資訊, 不需要對這些資訊進行同步。另一方面,增大構件的尺寸,把內部聯絡緊密的構件聚合成較大的構件, 這樣就減少了需要跟外部交換的資訊,也可以減少需要同步的資料量。

被動式冗餘架構

基於失敗重試原理,在可用的服務提供者之間重試,直到找到一個可用的提供者。被動式冗餘是簡單的, 但也有很大的侷限性,它要求冗餘節點只是作為資訊的處理者, 完全作為C/S架構中的S,而不可能作為資訊的發起者。這類冗餘在事務處理系統(MIS)中比較常見, 因為這類系統總是響應使用者的操作,而很少會有自動收集資訊並處理的業務。 經典場景:容災機制

主動冗餘架構

是主備節點間設有交換執行狀態的通訊通道,由他們自行協商何時進行主備切換,可以稱為自控方式。

另一種是基於一箇中心的冗餘控制器,冗餘控制器分別與主備節點通訊,並決定何時進行主備切換,可以稱為集控方式。 經典場景:負載均衡高可用

分散式—給我們架構帶來什麼

在這裡插入圖片描述
分散式,把系統的各個功能拆分成不同的小系統,主要是分散能力。

優點:資源利用率高,可以承擔部分壓力,降低耦合度,易於擴充套件

缺點:安全性低,如果其中一臺伺服器出現問題整個系統就會崩塌

分散式:

是一個叢集,同一個業務,部署在多個伺服器上。分散式:一個業務分拆成多個子業務,或者本身就是不同的業務,部署在不同的伺服器上。簡單說,分散式是以縮短單個任務的執行時間來提升效率的,而叢集則是通過提高單位時間內執行的任務數來提升效率。舉例:就比如新浪網,訪問的人多了,他可以做一個群集,前面放一個均衡伺服器,後面幾臺伺服器完成同一業務,如果有業務訪問的時候,響應伺服器看哪臺伺服器的負載不是很重,就將給哪一臺去完成,並且一臺伺服器垮了,其它的伺服器可以頂上來。分散式的每一個節點,都完成不同的業務,一個節點垮了,那這個業務可能就失敗了。

分散式-高併發場景

在這裡插入圖片描述
wcf分散式叢集,在實戰中利用“索引”這個概念做出"海量資料“的秒殺。 原始碼分析見後面章節

反向代理-高可用發場景

在這裡插入圖片描述

負載均衡-高可用發場景

概述

負載均衡通過設定虛擬服務地址,將新增的同一地域的多臺ECS例項虛擬成一個高效能、高可用的後端服務池, 根據轉發規則,將來自客戶端的請求分發給後端伺服器池中的ECS例項。

實現原理

負載均衡預設檢查雲伺服器池中的ECS例項的健康狀態,自動隔離異常狀態的ECS例項,消除了單臺ECS例項的單點故障,提高了應用的整體服務能力。此外,負載均衡還具備抗DDoS攻擊的能力,增強了應用服務的防護能力。在這裡插入圖片描述
負載均衡是怎麼實現
負載均衡由以下三個部分組成:

  1. 負載均衡例項 (Server Load Balancer
    instances):一個負載均衡例項是一個執行的負載均衡服務,用來接收流量並將其分配給後端伺服器。要使用負載均衡服務,您必須建立一個負載均衡例項,並至少新增一個監聽和兩臺ECS例項。
  2. 監聽 (Listeners):監聽用來檢查客戶端請求並將請求轉發給後端伺服器。監聽也會對後端伺服器進行健康檢查。
  3. 後端伺服器(Backend
    Servers):一組接收前端請求的ECS例項。您可以單獨新增ECS例項到後端伺服器池,也可以通過虛擬伺服器組或主備伺服器組來批量新增和管理。
    在這裡插入圖片描述

高可用—阿里雲實現負載均衡

負載均衡(SLB) 高可用+高併發架構實現 https://www.aliyun.com/product/slb?spm=5176.10695662.1112700.1.10397899RAMKVn
在這裡插入圖片描述
在這裡插入圖片描述

高併發/高可用拓展—同城/異地架構雙活

在這裡插入圖片描述