1.什么是高可用
任何人在任何時間任何地點訪問我們的任何服務(wù)都可以得到響應(yīng)結(jié)果。
為什么需要高可用
評估方式
傳統(tǒng)方式:
科學(xué)方式
一段時間內(nèi)的停機影響請求量占比
停機時間的響應(yīng)請求量/總的請求量
影響高可用
1.突發(fā)大流量
2.秒殺設(shè)計
3.硬件方面
等等
微服務(wù)高可用設(shè)計手段
1.服務(wù)冗余
為了防止一臺機器因為軟件或硬件問題導(dǎo)致不可用,需要部署多個服務(wù)器,單機房保證服務(wù)部署在不同的機架或機柜上,防止一臺機架或機柜停電導(dǎo)致不可用。多臺機器就會使服務(wù)冗余。
服務(wù)冗余的結(jié)果就是要做無狀態(tài)化。所謂的無狀態(tài)化就是要使冗余部署的服務(wù)是對等的,比如部署兩臺,請求進來通過網(wǎng)關(guān)不管傳入哪一臺服務(wù)器,都是不影響的。
2.負載均衡
在網(wǎng)關(guān)接收到請求時,需要轉(zhuǎn)發(fā),一般應(yīng)用服務(wù)器有多臺,如何合理的進行請求轉(zhuǎn)發(fā)到不同的服務(wù)器使用的策略就是負載均衡策略,使用負載均衡可以使請求合理的分配到不同的服務(wù)器上進行處理。
做負載均衡的同時,也需要考慮做冪等設(shè)計,避免多次接受請求。
3.超時機制
如果請求等待時間過長,獲取不到請求結(jié)果,需要設(shè)計一個超時等待的機制。
異步化設(shè)計: 做架構(gòu)的異步化是提高吞吐量。
使用好處: 在不關(guān)心的數(shù)據(jù)和結(jié)果可以使用異步化來做。核心的流量采樣同步來做,非核心的采用異步化來做。
4.服務(wù)限流熔斷降級
降低服務(wù)的請求量,不同服務(wù)之間調(diào)用異常,會導(dǎo)致等待時間過久,需要做服務(wù)熔斷。在某些場景下,某些服務(wù)訪問量會突然飆升,為了降低服務(wù)器壓力,會把某些冷門服務(wù)進行降級關(guān)閉,把資源分配到比較常用的服務(wù)上。
5. 數(shù)據(jù)復(fù)制/緩存/sharding
數(shù)據(jù)復(fù)制可以保證數(shù)據(jù)的同步性,使用緩存可以是數(shù)據(jù)訪問效率較快提高吞吐量
6. 架構(gòu)拆分/服務(wù)治理
架構(gòu)拆分可以降低應(yīng)用的復(fù)雜度,進行服務(wù)治理也是。同時架構(gòu)拆分還可以降低服務(wù)的壓力
做服務(wù)實時監(jiān)控
更快的預(yù)先判斷哪些服務(wù)可能會發(fā)生某些問題,在不可用之前進行監(jiān)控改進。
如何避免或者降低服務(wù)出現(xiàn)故障。
進行服務(wù)分級
高可用案例
- 如何無縫停止線上服務(wù)
網(wǎng)關(guān)層具備熱切換能力
可以熱開關(guān)切換: 假設(shè)設(shè)計晚上八點后,不接受服務(wù)需要進行升級,可以通過判斷每個業(yè)務(wù)層是否有打印日志判斷是否還在處理舊的服務(wù),如果沒有,則可以關(guān)閉網(wǎng)關(guān)層進行熱切換服務(wù)。也可以通過前端部分,設(shè)置超時時間,在八點05秒,進行熱開關(guān)切換。
網(wǎng)關(guān)層不具備熱切換能力
防火墻限制只出不進 ,IPTABLES
熱開關(guān):
可以設(shè)置一個全局配置變量,在網(wǎng)關(guān)層判斷是否為1,平時為0. 為1時,表示開啟熱開關(guān),不接收請求。