您好,登錄后才能下訂單哦!
小編給大家分享一下Sentinel服務(wù)治理知識(shí)點(diǎn)有哪些,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
把隨機(jī)來的流量進(jìn)行整形,將流量控制在系統(tǒng)的能力范圍內(nèi),增強(qiáng)應(yīng)用可用性。
通過運(yùn)行指標(biāo)控制
1.基于QPS。備注:使用RuleConstant.FLOW_GRADE_QPS策略
2.線程數(shù)。備注:使用RuleConstant.FLOW_GRADE_THREAD策略
通過資源的調(diào)用關(guān)系控制
1.根據(jù)調(diào)用來源限流
分為不區(qū)分調(diào)用來源、針對(duì)特定的調(diào)用者、針對(duì)除特定應(yīng)用以外的調(diào)用者三種類型
備注:通過AbstractRule.setLimitApp來實(shí)現(xiàn)
2.關(guān)聯(lián)限流
通過控制當(dāng)前資源關(guān)聯(lián)流量實(shí)現(xiàn)。
備注:使用RuleConstant.STRATEGY_RELATE和FlowRule.ref_identity策略
3.鏈路限流
在調(diào)用鏈路中,通過只根據(jù)某個(gè)入口的統(tǒng)計(jì)信息對(duì)資源限流量。
備注:使用RuleConstant.CHAIN和FlowRule.ref_identity策略
流量控制結(jié)果
快速失?。毫髁砍^閥值則快速失敗FlowException或者返回mock數(shù)據(jù)。
預(yù)熱模式:通過的流量緩慢增加,經(jīng)過設(shè)置的預(yù)熱時(shí)間以后,到達(dá)系統(tǒng)處理請(qǐng)求速率的設(shè)定值。默認(rèn)會(huì)從設(shè)置的QPS閾值的1/3開始慢慢往上增加至QPS設(shè)置值。
備注:使用RuleConstant.CONTROL_BEHAVIOR_WARM_UP_RATE_LIMITER策略。
排隊(duì)等待:嚴(yán)格控制請(qǐng)求通過的間隔時(shí)間,請(qǐng)求勻速通過。需設(shè)置具體的超時(shí)時(shí)間,當(dāng)計(jì)算的等待時(shí)間超過超時(shí)時(shí)間時(shí)請(qǐng)求就會(huì)被拒絕。
備注:通過CONTROL_BEHAVIOR_RATE_LIMITER來實(shí)現(xiàn)
熔斷降級(jí)會(huì)在調(diào)用鏈路中某個(gè)資源出現(xiàn)不穩(wěn)定狀態(tài)時(shí)(例如調(diào)用超時(shí)或異常比例升高),對(duì)這個(gè)資源的調(diào)用進(jìn)行限制,讓請(qǐng)求快速失敗,避免影響到其它的資源而導(dǎo)致級(jí)聯(lián)錯(cuò)誤。當(dāng)資源被降級(jí)后,在接下來的降級(jí)時(shí)間窗口之內(nèi),對(duì)該資源的調(diào)用都自動(dòng)熔斷(默認(rèn)行為是拋出 DegradeException)。
熔斷降級(jí)支持的策略:
RT模式:資源的平均響應(yīng)時(shí)間都超過閾值(秒級(jí)平均RT,以ms為單位),資源調(diào)用會(huì)被熔斷。在接下的降級(jí)時(shí)間窗口(在降級(jí)規(guī)則中配置,以s為單位)之內(nèi),對(duì)這個(gè)方法的調(diào)用都會(huì)自動(dòng)返回(拋出 DegradeException)。
備注:使用RuleConstant.DEGRADE_GRADE_RT策略
異常比例模式:當(dāng)資源的每秒異常數(shù)占通過量的比值超過閾值之后,資源進(jìn)入降級(jí)狀態(tài),即在接下的降級(jí)時(shí)間窗口(在降級(jí)規(guī)則中配置,以s為單位)之內(nèi),對(duì)這個(gè)方法的調(diào)用都會(huì)自動(dòng)地返回。異常比率的閾值范圍是[0.0, 1.0],代表0%-100%。
備注:使用RuleConstant.DEGRADE_GRADE_EXCEPTION_RATIO策略
分鐘級(jí)異常數(shù)模式:當(dāng)資源最近1分鐘的異常數(shù)目超過閾值之后會(huì)進(jìn)行熔斷。
備注:使用RuleConstant.DEGRADE_GRADE_EXCEPTION_COUNT策略
通常對(duì)弱依賴進(jìn)行熔斷,對(duì)強(qiáng)依賴進(jìn)行隔離降級(jí)。
弱依賴:若依賴的第三方應(yīng)用出錯(cuò)不會(huì)影響而整體流程,則稱之為弱依賴。
強(qiáng)依賴:若依賴的第三方應(yīng)用或組件,或者應(yīng)用自身的內(nèi)部方法出錯(cuò)會(huì)影響而整體流程,則稱之為強(qiáng)依賴。
熱點(diǎn)即經(jīng)常訪問的數(shù)據(jù)。很多時(shí)候我們希望統(tǒng)計(jì)某個(gè)熱點(diǎn)數(shù)據(jù)中訪問頻次最高的Top K數(shù)據(jù),并對(duì)其訪問進(jìn)行限制。比如:
商品ID為參數(shù),統(tǒng)計(jì)一段時(shí)間內(nèi)最常購買的商品ID并進(jìn)行限制
用戶ID為參數(shù),針對(duì)一段時(shí)間內(nèi)頻繁訪問的用戶ID進(jìn)行限制
備注:使用ParamFlowRule.setParamFlowItemList和ParamFlowRuleManager.loadRules
實(shí)際情況下流量到每臺(tái)機(jī)器可能會(huì)不均勻,僅靠單機(jī)維度去限制的話會(huì)無法精確地限制總體流量。通過精確地控制整個(gè)集群的調(diào)用總量,結(jié)合單機(jī)限流,實(shí)現(xiàn)集群整體防護(hù)。
集群流控中共有兩種身份:
Token Client:集群流控客戶端,用于向所屬 Token Server 通信請(qǐng)求 token。集群限流服務(wù)端會(huì)返回給客戶端結(jié)果,決定是否限流。
Token Server:即集群流控服務(wù)端,處理來自 Token Client 的請(qǐng)求,根據(jù)配置的集群規(guī)則判斷是否應(yīng)該發(fā)放 token(是否允許通過)。
備注:通過ClusterTokenServer和ClusterTokenClient實(shí)現(xiàn)
從Load、總體平均RT、入口QPS和線程數(shù)幾個(gè)維度進(jìn)行監(jiān)控,平衡系統(tǒng)負(fù)載與入口流量,提高整體穩(wěn)定性。
系統(tǒng)規(guī)則支持四種閾值類型:
Load(僅對(duì) Linux/Unix-like機(jī)器生效):當(dāng)系統(tǒng) load1 超過閾值,且系統(tǒng)當(dāng)前的并發(fā)線程數(shù)超過預(yù)計(jì)的系統(tǒng)容量時(shí)才會(huì)觸發(fā)系統(tǒng)保護(hù)。
備注:通過SystemRule.highestSystemLoad實(shí)現(xiàn)
RT:當(dāng)單臺(tái)機(jī)器上所有入口流量的平均RT達(dá)到閾值即觸發(fā)系統(tǒng)保護(hù),單位是毫秒。
備注:通過SystemRule.avgRt實(shí)現(xiàn)
線程數(shù):當(dāng)單臺(tái)機(jī)器上所有入口流量的并發(fā)線程數(shù)達(dá)到閾值即觸發(fā)系統(tǒng)保護(hù)。
備注:通過SystemRule.maxThread實(shí)現(xiàn)
入口QPS:當(dāng)單臺(tái)機(jī)器上所有入口流量的QPS達(dá)到閾值即觸發(fā)系統(tǒng)保護(hù)。
備注:通過SystemRule.qps實(shí)現(xiàn)
看完了這篇文章,相信你對(duì)“Sentinel服務(wù)治理知識(shí)點(diǎn)有哪些”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。