熔斷機制(Circuit Breaker)霎终,也叫斷路器設計模式建钥。具體可以參見大神的文章谎势。
如果要熔斷凛膏,客戶端首先需要知道服務是否可用杨名。pigeon會定時發(fā)送心跳包脏榆,通過服務端返回的情況來確定,服務端是否可用台谍,類似ping-pong請求须喂。當ping-pong的失敗率超過某一個閾值后,將會通過配置參數(shù)來確定是否自動摘除相對應的節(jié)點趁蕊,同時斷開與服務端的連接坞生。客戶端還有一個定時任務會重連這些斷開的連接掷伙,重連后將會再次進行心跳檢測是己,如果成功就會將這個服務重新加入到可用服務節(jié)點中去。
其實之前的設計本不是這樣任柜,之前會對同一個服務的不同實例進行檢測卒废,如果心跳有問題也會pickoff。但是一開始考慮全部掛掉是個小概率事件宙地,或者說是檢測本身可能有問題摔认,所以當摘除節(jié)點數(shù)大于所有實例數(shù)的50%以上時,將不再摘除節(jié)點宅粥〔胃ぃ可是在實際的應用過程中,發(fā)現(xiàn)某個服務的全部實例掛掉是非常常見的事情秽梅,這種不摘除干凈的做法和容易引起大面積服務掛掉抹蚀,故最新的版本做了修改,更新為前述的熔斷方式企垦。
降級环壤,