天天看點

工作十年,淺談我的服務接口的高可用設計經驗

作者:猿之生活JAVA技術學堂

工作十年,淺談我的服務接口的高可用設計經驗

#頭條創作挑戰賽#

工作十年,淺談我的服務接口的高可用設計經驗

軟體開發的三高名額:高并發、高性能、高可用。本文主要圍繞高可用展開叙述,希望對大家都有所幫助。

前言

随着計算機網絡的不斷普及,大規模軟體應用成為每個公司考慮的名額,軟體設計階段需要考慮軟體整體架構。提高軟體的高可用,已經成為現階段急需解決的事情。

那作為一名資深的後端研發人員需要具備哪些架構思維呢,首先來說,開發服務接口對程式員而言,是最基本的工作,在設計接口時候都繞不開一個共同的目标就是 “高可用”設計方案。那我們來看一下什麼是高可用接口設計,以及需要考慮哪些名額。

工作十年,淺談我的服務接口的高可用設計經驗

高可用衡量标準

所謂的服務高可用主要是指服務正常運作的時間百分比,業界主要是用 N 個9來衡量。主要展現在服務的接口正确性以及延時上。

如果以一年拿365天計算(8760小時),具體計算如下:

工作十年,淺談我的服務接口的高可用設計經驗

到底什麼是高可用

簡單來說就是我們的設計的系統具不具備應對和規避風險的能力,會不會出現雪崩效應和鍊式效應。

高可用(High Availability)的定義

(From 維基百科)是 IT 術語,指系統無中斷地執行其功能的能力,代表系統的可用性程度,是進行系統設計時的準則之一。

高可用系統設計思想

高可用系統的設計,主要從以下幾個方面考量

  1. 産品
  2. 開發
  3. 運維
  4. 基建

等全方位去考量和設計

高可用系統的設計思想包括但不限于:

• 容量規劃層面

• 服務層面

• 存儲層面

• 運維層面

• 産品層面

• 應急預案處理層面

那為什麼要做高可用呢

架構決定系統品質上限,代碼決定系統品質下限。

為了應對這些在軟體使用過程中産生不可控因素的發生,導緻軟體無法正常運作,是以我們必須要做高可用

高可用的關鍵點

高可用接口關鍵因素

Dependence(依賴)、Probability(機率)、Time(時長)、Scope(範圍)

主要有以下方面考慮

1. 依賴的資源相對少,避免備援

2. 風險的機率足夠低,降低風險

3. 影響的範圍足夠小,降低風險

4. 影響時長足夠短,提高使用者體驗

接口高可用整體架構

雪崩效應:請求量超過系統處理能力後導緻系統性能螺旋快速下降

鍊式效應:某個故障引起後續一連串的故障

工作十年,淺談我的服務接口的高可用設計經驗

接口高可用設計的幾個原則

1、控制依賴處理

能少依賴就少依賴,能不強依賴就不強依賴,如果依賴過多,某個環節出現問題,會導緻服務宕掉,引起雪崩效應。

2、避免單點處理

避免單點故障的核心是通過備份或者備援快速的進行容錯,可以考慮主從複制,主主複制等進行備份,避免資料丢失。

3、負載均衡處理

将風險進行分攤避免分險擴散,如果某個服務當機,不會引起服務不可用,更不會引起雪崩效應。

4、資源隔離處理

隔離的目的将風險控制在可控範圍内,降低風險擴散,避免服務當機

5、接口限流處理

首先來說,限流是保護服務的一種處理方式,目的是将風險控制在可控範圍内。

限流是指對進入系統的請求進行限流處理,如果請求量超過了我們系統最大處理能力或者超過了我們指定的處理能力,那麼直接拒絕請求,避免因并發量過高,導緻服務宕掉。

工作十年,淺談我的服務接口的高可用設計經驗

6、服務熔斷處理

和限流類似,熔斷也是一種保護措施,目的是将風險控制在可控範圍内,避免服務當機。

熔斷,斷路(開路)的價值在于限制故障影響範圍。

工作十年,淺談我的服務接口的高可用設計經驗

7、異步處理

将同步操作轉為異步操作,減少并發量,提高軟體的性能。

8、降級方案處理

服務降級屬于一種問題發生後的補救措施,降級是指我們劃分好系統的核心功能和非核心功能,然後當我們的系統超過最大處理能力之後,直接關閉掉非核心的功能,進而保障核心功能的可用。

9、灰階釋出處理

通過灰階釋出降低風險影響範圍,避免因釋出軟體時帶來影響

10、測試介入處理

通過測試人員提前對系統進行一些破壞性的手段,提前發現潛在問題

繼續閱讀