成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

漫話:如何給女朋友解釋什么是熔斷?

存儲(chǔ) 存儲(chǔ)軟件
很多軟件系統(tǒng)為了保證即使在出現(xiàn)并發(fā)用戶數(shù)>最佳線程數(shù)時(shí),也不至于導(dǎo)致整個(gè)萬網(wǎng)站崩潰,都會(huì)采用一些技術(shù)手段來避免發(fā)生系統(tǒng)性災(zāi)難。這些技術(shù)中比較典型的就是限流、降級(jí)和熔斷。

 [[318824]]

最近比較忙,白天上班,晚上還得面試,都沒有時(shí)間關(guān)注新聞。某天晚上剛剛結(jié)束一個(gè)電話面試,正準(zhǔn)備寫面試評(píng)價(jià),女朋友拿著手機(jī)走過來,滿臉疑惑的問我:

在《如何給女朋友解釋為什么雙十一無法修改收貨地址》中我們介紹過關(guān)于QPS、RT、并發(fā)用戶數(shù)以及最大線程數(shù)等知識(shí)。我們知道,如果一個(gè)軟件系統(tǒng)的并發(fā)請(qǐng)求數(shù)目超過了系統(tǒng)的最佳線程數(shù),那么就會(huì)導(dǎo)致激烈的資源競(jìng)爭(zhēng),隨著資源的匱乏甚至枯竭,整個(gè)系統(tǒng)也就面臨著災(zāi)難。

所以,很多軟件系統(tǒng)為了保證即使在出現(xiàn)并發(fā)用戶數(shù)>最佳線程數(shù)時(shí),也不至于導(dǎo)致整個(gè)萬網(wǎng)站崩潰,都會(huì)采用一些技術(shù)手段來避免發(fā)生系統(tǒng)性災(zāi)難。這些技術(shù)中比較典型的就是限流、降級(jí)和熔斷。

這次就來講講什么是服務(wù)熔斷,以及如何在微服務(wù)架構(gòu)中做服務(wù)熔斷。

為什么需要熔斷

現(xiàn)在很多網(wǎng)站的背后都是一個(gè)龐大的《分布式》系統(tǒng),多個(gè)系統(tǒng)之間的交互大多數(shù)都是采用《RPC》的方式,但是因?yàn)槭沁h(yuǎn)程調(diào)用,所以被調(diào)用者的服務(wù)的可用情況其實(shí)是不可控的。

而越是龐大的系統(tǒng),上下游的調(diào)用鏈就會(huì)越長(zhǎng),而如果在一個(gè)很長(zhǎng)的調(diào)用鏈中,某一個(gè)服務(wù)由于某種原因?qū)е马憫?yīng)時(shí)間很長(zhǎng),或者完全無響應(yīng),那么就可能把整個(gè)分布式系統(tǒng)都拖垮。

以上調(diào)用鏈,如果其中某一個(gè)服務(wù)由于自身原因?qū)е马憫?yīng)很慢,那么就可能導(dǎo)致上游的服務(wù)影響也很慢,這樣循環(huán)往復(fù),就會(huì)導(dǎo)致整個(gè)系統(tǒng)全線崩潰,這就是服務(wù)雪崩。

其實(shí),在分布式系統(tǒng)中,為了保證整體服務(wù)可用性和一致性,很多系統(tǒng)都會(huì)引入重試機(jī)制,在有些情況下,重試其實(shí)是可以解決問題的,比如網(wǎng)絡(luò)問題等,都可以通過重試來解決。

但是,有些情況下,重試并不能解決問題,返而會(huì)加劇問題的嚴(yán)重性,比如下游系統(tǒng)因?yàn)檎?qǐng)求量太大,導(dǎo)致CPU已經(jīng)被打滿,說著數(shù)據(jù)庫連接池被占滿,這時(shí)候上游系統(tǒng)調(diào)不通就會(huì)不斷進(jìn)行重試,這種重試請(qǐng)求,對(duì)于下游系統(tǒng)來說,無疑是雪上加霜,給下游系統(tǒng)造成二次傷害。

而分布式系統(tǒng),大多數(shù)的服務(wù)雪崩也都是因?yàn)椴粩嘀卦噷?dǎo)致的,這種重試有可能是框架級(jí)別的自動(dòng)重試、有可能是代碼級(jí)別的重試邏輯、還有可能是用戶的主動(dòng)重試。

有些重試是無法避免的,而且如果因?yàn)榉乐寡┍溃筒辉O(shè)計(jì)重試機(jī)制,也是一種因噎廢食。

熔斷器模式

熔斷器模式(Circuit Breaker Pattern),是一個(gè)現(xiàn)代軟件開發(fā)的設(shè)計(jì)模式。用以偵測(cè)錯(cuò)誤,并避免不斷地觸發(fā)相同的錯(cuò)誤(如維護(hù)時(shí)服務(wù)不可用、暫時(shí)性的系統(tǒng)問題或是未知的系統(tǒng)錯(cuò)誤)。

假設(shè)有個(gè)應(yīng)用程序每秒會(huì)與數(shù)據(jù)庫溝通數(shù)百次,此時(shí)數(shù)據(jù)庫突然發(fā)生了錯(cuò)誤,程序員并不會(huì)希望在錯(cuò)誤時(shí)還不斷地訪問數(shù)據(jù)庫。因此會(huì)想辦法直接處理這個(gè)錯(cuò)誤,并進(jìn)入正常的結(jié)束程序。簡(jiǎn)單來說,

熔斷器會(huì)偵測(cè)錯(cuò)誤并且“預(yù)防”應(yīng)用程序不斷地重試調(diào)用一個(gè)近乎毫無回應(yīng)的服務(wù)(除非該服務(wù)已經(jīng)安全到可重試連線了)。

熔斷器模式是方志微服務(wù)系統(tǒng)雪崩的一種重要手段。

一個(gè)比較完善的熔斷器,一般包含三種狀態(tài):

關(guān)閉

  • 熔斷器在默認(rèn)情況下下是呈現(xiàn)關(guān)閉的狀態(tài),而熔斷器本身帶有計(jì)數(shù)功能,每當(dāng)錯(cuò)誤發(fā)生一次,計(jì)數(shù)器也就會(huì)進(jìn)行“累加”的動(dòng)作,到了一定的錯(cuò)誤發(fā)生次數(shù)斷路器就會(huì)被“開啟”,這個(gè)時(shí)候亦會(huì)在內(nèi)部啟用一個(gè)計(jì)時(shí)器,一旦時(shí)間到了就會(huì)切換成半開啟的狀態(tài)。

開啟

  • 在開啟的狀態(tài)下任何請(qǐng)求都會(huì)“直接”被拒絕并且拋出異常訊息。

半開啟

  • 在此狀態(tài)下斷路器會(huì)允許部分的請(qǐng)求,如果這些請(qǐng)求都能成功通過,那么就意味著錯(cuò)誤已經(jīng)不存在,則會(huì)被切換回關(guān)閉狀態(tài)并重置計(jì)數(shù)。倘若請(qǐng)求中有“任一”的錯(cuò)誤發(fā)生,則會(huì)回復(fù)到“開啟”狀態(tài),并且重新計(jì)時(shí),給予系統(tǒng)一段休息時(shí)間。

上圖是熔斷器的三種狀態(tài)的轉(zhuǎn)換情況。

如果在微服務(wù)系統(tǒng)的調(diào)用過程中,引入熔斷器,那么整個(gè)系統(tǒng)將天然具備以下能力:

  • 快速失敗:當(dāng)因?yàn)檎{(diào)用遠(yuǎn)程服務(wù)失敗次數(shù)過多,熔斷器開啟時(shí),上游服務(wù)對(duì)于下游服務(wù)的調(diào)用就會(huì)快速失敗,這樣可以避免上游服務(wù)被拖垮。
  • 無縫恢復(fù):因?yàn)槿蹟嗥骺梢远ㄆ跈z查下游系統(tǒng)是否恢復(fù),一旦恢復(fù)就可以重新回到關(guān)閉狀態(tài),所有請(qǐng)求便可以正常請(qǐng)求到下游服務(wù)。使得系統(tǒng)不需要認(rèn)為干預(yù)。

熔斷工具

熔斷器為了實(shí)現(xiàn)快速失敗和無縫恢復(fù),就需要進(jìn)行服務(wù)調(diào)用次數(shù)統(tǒng)計(jì)、服務(wù)調(diào)用切斷等操作,如果想要自己實(shí)現(xiàn)一個(gè)熔斷器其實(shí)也是可以的。

但是,市面上有一些框架已經(jīng)幫我們做了這些事情。如Hystrix和Sentinel、resilience4j等。

Hystrix

Hystrix(https://github.com/Netflix/Hystrix )是Netflix開源的一款容錯(cuò)系統(tǒng),能幫助使用者碼出具備強(qiáng)大的容錯(cuò)能力和魯棒性的程序。提供降級(jí),熔斷等功能。

但是,在2018年底,Hystrix在其Github主頁宣布,不再開放新功能,推薦開發(fā)者使用其他仍然活躍的開源項(xiàng)目。

Hystrix雖然不再開發(fā)新功能 ,但對(duì)用戶的影響應(yīng)該不會(huì)太大,一是因?yàn)殚_發(fā)者可以繼續(xù)使用Hystrix的最新版本1.5.18

resilience4j

Hystrix停更之后,Netflix官方推薦使用resilience4j(https://github.com/resilience4j/resilience4j ),它是一個(gè)輕量、易用、可組裝的高可用框架,支持熔斷、高頻控制、隔離、限流、限時(shí)、重試等多種高可用機(jī)制。

與Hystrix相比,它有以下一些主要的區(qū)別:

  • Hystrix調(diào)用必須被封裝到HystrixCommand里,而resilience4j以裝飾器的方式提供對(duì)函數(shù)式接口、lambda表達(dá)式等的嵌套裝飾,因此你可以用簡(jiǎn)潔的方式組合多種高可用機(jī)制
  • Hystrix的頻次統(tǒng)計(jì)采用滑動(dòng)窗口的方式,而resilience4j采用環(huán)狀緩沖區(qū)的方式
  • 關(guān)于熔斷器在半開狀態(tài)時(shí)的狀態(tài)轉(zhuǎn)換,Hystrix僅使用一次執(zhí)行判定是否進(jìn)行狀態(tài)轉(zhuǎn)換,而resilience4j則采用可配置的執(zhí)行次數(shù)與閾值,來決定是否進(jìn)行狀態(tài)轉(zhuǎn)換,這種方式提高了熔斷機(jī)制的穩(wěn)定性
  • 關(guān)于隔離機(jī)制,Hystrix提供基于線程池和信號(hào)量的隔離,而resilience4j只提供基于信號(hào)量的隔離

Sentinel

Sentinel(https://github.com/alibaba/Sentinel )是阿里中間件團(tuán)隊(duì)開源的,面向分布式服務(wù)架構(gòu)的輕量級(jí)高可用流量控制組件,主要以流量為切入點(diǎn),從流量控制、熔斷降級(jí)、系統(tǒng)負(fù)載保護(hù)等多個(gè)維度來幫助用戶保護(hù)服務(wù)的穩(wěn)定性。

Hystrix 的關(guān)注點(diǎn)在于以隔離和熔斷為主的容錯(cuò)機(jī)制,超時(shí)或被熔斷的調(diào)用將會(huì)快速失敗,并可以提供 fallback 機(jī)制。

而 Sentinel 的側(cè)重點(diǎn)在于:

  • 多樣化的流量控制
  • 熔斷降級(jí)
  • 系統(tǒng)負(fù)載保護(hù)
  • 實(shí)時(shí)監(jiān)控和控制臺(tái)

下圖是Sentinel的GitHub主頁中關(guān)于Sentinel和Hystrix的對(duì)比:

擴(kuò)展知識(shí)

熔斷機(jī)制:

指的是在股票市場(chǎng)的交易時(shí)間中,當(dāng)價(jià)格波動(dòng)的幅度達(dá)到某一個(gè)限定的目標(biāo)(熔斷點(diǎn))時(shí),對(duì)其暫停交易一段時(shí)間的機(jī)制。此機(jī)制如同保險(xiǎn)絲在電流過大時(shí)候熔斷比較相似,故而得名。

熔斷機(jī)制推出的目的是為了防范系統(tǒng)性風(fēng)險(xiǎn),給市場(chǎng)更多的冷靜時(shí)間,避免恐慌情緒蔓延導(dǎo)致市場(chǎng)波動(dòng),從而防止大規(guī)模股價(jià)下跌現(xiàn)象的發(fā)生。然而熔斷機(jī)制也因切斷了資金的流通性,同樣會(huì)造成市場(chǎng)情緒加大,并令市場(chǎng)風(fēng)險(xiǎn)在熔斷期結(jié)束后繼續(xù)擴(kuò)大。

美國熔斷機(jī)制:

美國指數(shù)熔斷機(jī)制的基準(zhǔn)指數(shù)為標(biāo)普500,單項(xiàng)跌幅閾值為7%、13%、20%。當(dāng)指數(shù)較前一天收盤點(diǎn)位下跌7%、13%時(shí),全美證券市場(chǎng)交易將暫停15分鐘,當(dāng)指數(shù)較前一天收盤點(diǎn)位下跌20%時(shí),當(dāng)天交易停止。2010年美股又開始實(shí)行個(gè)股熔斷機(jī)制。

熔斷機(jī)制最早由美國的紐約股票交易所在1987年提出,以避免發(fā)生類似“黑色星期一”的股災(zāi)。此時(shí)的熔斷機(jī)制僅針對(duì)大盤指數(shù)進(jìn)行熔斷。1997年10月27日,道瓊斯工業(yè)指數(shù)暴跌7.18%,收于7161.15點(diǎn),這是熔斷機(jī)制在1988年引入之后第一次被觸發(fā)。

美股第二次觸發(fā)熔斷機(jī)制是在美東時(shí)間2020年3月9日,受2019冠狀病毒病疫情和油價(jià)崩盤影響,3月9日上午9點(diǎn)34分,標(biāo)普500指數(shù)開盤后跌7%觸發(fā)第一層熔斷機(jī)制,暫停交易15分鐘。3天后,3月12日,標(biāo)普500指數(shù)開盤后短時(shí)間內(nèi)跌幅超過7%再次觸發(fā)第一層熔斷機(jī)制。

中國大陸熔斷機(jī)制:

中華人民共和國自2016年起開始在上海證券交易所、深圳證券交易所和中國金融期貨交易所同時(shí)試行熔斷機(jī)制。其熔斷的基準(zhǔn)指數(shù)是滬深300指數(shù),設(shè)置5%、7%兩檔指數(shù)熔斷閾值,漲跌皆熔斷。

 

責(zé)任編輯:武曉燕 來源: 漫話編程
相關(guān)推薦

2021-09-14 12:00:11

VR字節(jié)跳動(dòng)

2019-10-09 10:45:16

云計(jì)算Web互聯(lián)網(wǎng)

2019-12-23 10:26:02

3PC分布式2PC

2019-04-26 14:46:18

GitGitHub局域網(wǎng)

2020-10-19 13:01:31

刪庫程序員思科

2019-07-22 10:34:31

大案牘術(shù)大數(shù)據(jù)Big Data

2019-03-12 09:43:14

反向代理正向代理服務(wù)器

2019-04-09 09:40:23

2020-12-28 12:37:36

緩存擊穿穿透

2020-03-23 12:57:20

撞庫脫庫洗庫

2019-04-19 09:48:53

樂觀鎖悲觀鎖數(shù)據(jù)庫

2019-08-13 10:34:26

鴻蒙OS跨平臺(tái)Linux內(nèi)核

2021-06-07 12:11:20

JavaRunning狀態(tài)

2021-03-02 06:03:30

Java繼承對(duì)象

2021-03-09 12:27:05

微服務(wù) 微服務(wù)架構(gòu)應(yīng)用程序

2021-05-10 19:58:06

MySQLUTF-8數(shù)據(jù)庫

2020-10-12 13:27:21

計(jì)算機(jī)瀏覽器電腦

2021-04-26 14:00:43

Java 數(shù)據(jù)類型

2019-03-06 10:59:09

寬帶王者榮耀網(wǎng)絡(luò)

2020-12-28 06:11:24

羊群效應(yīng)zookeeper
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 欧美一级片中文字幕 | 精品1区 | 久久久久久av | 欧美黑人国产人伦爽爽爽 | 久久久久久亚洲 | 精品久久久久久亚洲精品 | 亚洲黄色国产 | 一区二区国产精品 | 日本在线网站 | 亚洲午夜av久久乱码 | 国产成人午夜高潮毛片 | 国产精品一区二区三区在线 | 国产乱码久久久久久 | 日韩av一区二区在线观看 | 久一精品 | 亚洲精品第一国产综合野 | 国产色婷婷精品综合在线播放 | 国产精品一区二区av | 国产精品久久久久久久久久久久久 | 日韩在线播放一区 | 亚洲精品黄色 | 龙珠z在线观看 | 国产区在线观看 | 久久久123 | 久久一区二区三区四区 | 欧美亚洲日本 | 成人在线视频网 | 色性av| 欧美视频免费 | 91麻豆精品国产91久久久久久久久 | 青青草这里只有精品 | 午夜国产一级 | 无码一区二区三区视频 | 久久久国产一区二区三区 | 久久久久9999亚洲精品 | 欧美日韩在线免费观看 | 欧美日韩精品国产 | 国产日韩一区二区三免费高清 | 国产午夜精品久久久久免费视高清 | 91麻豆产精品久久久久久夏晴子 | 国产a区 |