1. 程式人生 > >47-01、hystrix與高可用系統架構:資源隔離+限流+熔斷+降級+運維監控

47-01、hystrix與高可用系統架構:資源隔離+限流+熔斷+降級+運維監控

HA,HAProxy,主備服務間的切換,這就做到了高可用性,主備例項,多冗餘例項,高可用最最基礎的東西。

那麼,什麼樣的情況下,可能會導致系統的崩潰,以及系統不可用,針對各種各樣的一些情況,然後我們用什麼技術,去保護整個系統處於高可用的一個情況下?

1、hystrix是什麼?

netflix(國外最大的類似於,愛奇藝,優酷)視訊網站,五六年前,也是,感覺自己的系統,整個網站,經常出故障,可用性不太高,有時候一些vip會員不能支付,有時候看視訊就卡頓,看不了視訊。

影響公司的收入。

五六年前,netflix,api team,提升高可用性,開發了一個框架,類似於spring,mybatis,hibernate,等等這種框架

高可用性的框架,hystrix

hystrix,框架,提供了高可用相關的各種各樣的功能,然後確保說在hystrix的保護下,整個系統可以長期處於高可用的狀態,100%,99.99999%

最理想的狀況下,軟體的故障,就不應該說導致整個系統的崩潰,伺服器硬體的一些故障,服務的冗餘,唯一有可能導致系統徹底崩潰,就是類似於之前,支付寶的那個事故,工人施工,挖斷了電纜,導致幾個機房都停電不可用,和產生一些故障或者bug的區別。

2、高可用系統架構

資源隔離、限流、熔斷、降級、運維監控。

資源隔離:讓你的系統裡,某一塊東西,在故障的情況下,不會耗盡系統所有的資源,比如執行緒資源。

我實際的專案中的一個case,有一塊東西,是要用多執行緒做一些事情,小夥伴做專案的時候,沒有太留神,資源隔離,那塊程式碼,在遇到一些故障的情況下,每個執行緒在跑的時候,因為那個bug,直接就死迴圈了,導致那塊東西啟動了大量的執行緒,每個執行緒都死迴圈。最終導致我的系統資源耗盡,崩潰,不工作,不可用,廢掉了。

資源隔離,那一塊程式碼,最多最多就是用掉10個執行緒,不能再多了,就廢掉了,限定好的一些資源。

限流:高併發的流量湧入進來,比如說突然間一秒鐘100萬QPS,廢掉了,10萬QPS進入系統,其他90萬QPS被拒絕了;

熔斷:系統後端的一些依賴,出了一些故障,比如說mysql掛掉了,每次請求都是報錯的,熔斷了,後續的請求過來直接不接收了,拒絕訪問,10分鐘之後再嘗試去看看mysql恢復沒有;

降級:mysql掛了,系統發現了,自動降級,從記憶體裡存的少量資料中,去提取一些資料出來;

運維監控:監控+報警+優化,各種異常的情況,有問題就及時報警,優化一些系統的配置和引數,或者程式碼。

3、如何講解這塊內容?

(1)如何將eshop-cache,核心的快取服務改造成高可用的架構;
(2)hystrix中的一部分內容,單拉出來,做成一個免費的小課程,作為福利發放出去;
(3)eshop-cache,寫程式碼,eshop-cache-ha,業務場景,跟之前銜接起來,重新去寫程式碼;
(4)hystrix做服務高可用這一塊的內容,講解成只有一個業務背景,重新寫程式碼,獨立。

eshop-cache,在各級快取資料都失效的情況下,會重新從源系統中呼叫介面,依賴源系統去查詢mysql資料庫去重新獲取資料。如果你的各種依賴的服務有了故障,那麼很可能會導致你的系統不可用,hystrix對系統進行各種高可用性的系統加固,來應對各種不可用的情況。快取雪崩那一塊去講,redis肯定掛,mysql有較大概率掛掉,在風雨飄搖中。

我之前做的一個專案,我們多個專案都用了公司裡公用的快取的儲存,快取徹底掛了,雪崩了,導致各種業務系統全部崩潰,崩潰了好幾個小時,導致公司損失了大量的資金的損失。其中導致公司損失最大的負責人,受到了很大的處分。

文集:https://www.jianshu.com/nb/32293473