日韩在线日韩在日韩无-男人和女人午夜日皮视频-欧美日韩亚洲激情中文字幕-91精品国产综合九九九

服務(wù)限流熔斷

SOA團(tuán)隊(duì) 2020-03-16

對(duì)于服務(wù)流量控制往往是ESB平臺(tái)實(shí)現(xiàn)SLA和Qos管理的一個(gè)重要內(nèi)容,對(duì)于業(yè)界主流的商用ESB總線產(chǎn)品基本包括了服務(wù)流量控制的內(nèi)容,下面簡(jiǎn)單談下服務(wù)流量控制的一些重點(diǎn)。

首先看下對(duì)于服務(wù)流量應(yīng)該包括兩個(gè)層面的內(nèi)容,一個(gè)是服務(wù)單位時(shí)間調(diào)用的并發(fā)量,一個(gè)是服務(wù)單位時(shí)間調(diào)用的消息報(bào)文的數(shù)據(jù)量。對(duì)于有些服務(wù)雖然調(diào)用的頻率不高,但是如果調(diào)用傳遞的數(shù)據(jù)量很大仍然會(huì)影響到ESB總線整體性能,因此也需要進(jìn)行專(zhuān)門(mén)的流量控制。其次對(duì)于流量控制本身而言,可以對(duì)ESB服務(wù)總線所有的服務(wù)調(diào)用總量進(jìn)行控制,也可

其次對(duì)于流量控制本身而言,可以對(duì)ESB服務(wù)總線所有的服務(wù)調(diào)用總量進(jìn)行控制,也可以按具體的服務(wù)域控制,最細(xì)粒度應(yīng)該還可以單獨(dú)控制到每一個(gè)服務(wù)。當(dāng)控制到單個(gè)服務(wù)的時(shí)候,我們可以在流量控制策略的時(shí)候更好的和服務(wù)的SLA等級(jí)定義進(jìn)行綁定。

最后,對(duì)于服務(wù)的流量控制往往包括了入口流量控制和出口流量控制兩個(gè)層面的內(nèi)容,對(duì)于入口流量控制往往比較容易理解,即當(dāng)觸發(fā)流量控制策略后直接在服務(wù)調(diào)用訪問(wèn)的時(shí)候就Reject掉而不再進(jìn)行處理。而對(duì)于出口流量控制最重要的目的是對(duì)于服務(wù)提供方系統(tǒng)往往存在單位并發(fā)下處理能力的瓶頸,而這個(gè)時(shí)候剛好可以利用ESB中的消息中間件和MQ機(jī)制,控制向目標(biāo)的數(shù)據(jù)流入速度。

對(duì)于整個(gè)流量控制的技術(shù)實(shí)現(xiàn)方式往往通用的做法仍然是在ESB服務(wù)總線的服務(wù)調(diào)用中增加inBound和outBound處理插件和攔截器,在插件中實(shí)時(shí)的獲取到服務(wù)調(diào)用次數(shù)和服務(wù)調(diào)用數(shù)據(jù)量信息,然后再內(nèi)存中進(jìn)行計(jì)算,當(dāng)滿足了流量控制策略后即實(shí)時(shí)出發(fā)流量控制。

對(duì)于ESB服務(wù)總線集群化部署的時(shí)候可以看到,要對(duì)ESB總線調(diào)用服務(wù)進(jìn)行流量控制就需要考慮內(nèi)存實(shí)時(shí)計(jì)算的次數(shù)和數(shù)據(jù)量的結(jié)果不能存儲(chǔ)在單臺(tái)計(jì)算節(jié)點(diǎn)上,而需要考慮集中化內(nèi)存存儲(chǔ)。基于這個(gè)思路,一個(gè)關(guān)鍵的實(shí)現(xiàn)策略即是可以結(jié)合分布式緩存來(lái)實(shí)現(xiàn)內(nèi)存計(jì)算結(jié)果的存儲(chǔ)。

在分布式緩存實(shí)現(xiàn)過(guò)程中,由于存在對(duì)緩存數(shù)據(jù)的多點(diǎn)并發(fā)寫(xiě)入和更新問(wèn)題,很容易引起臟讀或臟寫(xiě),為了解決這個(gè)問(wèn)題可以引入分布式并發(fā)鎖機(jī)制來(lái)解決一致性問(wèn)題,但是當(dāng)增加了鎖機(jī)制后帶來(lái)的就是影響到整個(gè)服務(wù)的調(diào)用性能。因此是否真正引入鎖機(jī)制還需要進(jìn)一步權(quán)衡。

另外一種實(shí)現(xiàn)方法即是對(duì)于分布式緩存數(shù)據(jù)的讀寫(xiě)進(jìn)行分離操作,即各分布式ESB計(jì)算節(jié)點(diǎn)仍然從分布式緩存讀取數(shù)據(jù),但是各個(gè)計(jì)算節(jié)點(diǎn)在通過(guò)業(yè)務(wù)攔截器獲取到服務(wù)調(diào)用次數(shù)和數(shù)據(jù)量信息后首先寫(xiě)入到集中的一個(gè)消息中間件中,然后由消息中間件處理后再統(tǒng)一更新緩存信息以避免發(fā)生并發(fā)更新情況。

首先本文談到的服務(wù)限流和熔斷,和常規(guī)我們說(shuō)的限流和熔斷有區(qū)別,具體說(shuō)明為:

1. 服務(wù)限流:取消某個(gè)消費(fèi)方對(duì)某個(gè)服務(wù)的訪問(wèn)授權(quán),只單個(gè)消費(fèi)方受影響

2. 服務(wù)熔斷:直接對(duì)該服務(wù)進(jìn)行下線處理,或?qū)⒃摲?wù)狀態(tài)設(shè)置為不可用,所有消費(fèi)方受影響

其次,對(duì)于服務(wù)流控我們需要設(shè)置具體要監(jiān)控哪些指標(biāo),注意這個(gè)指標(biāo)監(jiān)控是在單位時(shí)間里面的監(jiān)控指標(biāo),即計(jì)算在單位時(shí)間的累計(jì)數(shù)據(jù),當(dāng)觸發(fā)后即進(jìn)行流控。具體包括:

1. 運(yùn)行次數(shù):?jiǎn)挝粫r(shí)間里面的運(yùn)行次數(shù)累計(jì),比如一個(gè)消費(fèi)方大并發(fā)調(diào)用,可以限流

2. 業(yè)務(wù)系統(tǒng)異常次數(shù):即源服務(wù)出現(xiàn)異常的次數(shù),也可以考慮異常占比率

3. 系統(tǒng)異常:即出現(xiàn)系統(tǒng)級(jí)異常次數(shù),本身包括Token失效,也包括ESB總線本身故障

4. 報(bào)文量:即單位時(shí)間內(nèi)傳輸?shù)膱?bào)文量達(dá)到某個(gè)值,考慮是輸入+輸出報(bào)文量和的累計(jì)

對(duì)于運(yùn)行時(shí)長(zhǎng)更多是預(yù)警,而實(shí)際上直接限流和熔斷不現(xiàn)實(shí)。因此主要的流控指標(biāo)就是上面這些,基于以上指標(biāo)本身又有兩種操作,一種是限流,一種是整個(gè)服務(wù)熔斷。可以看到:

1. 限流:運(yùn)行次數(shù),Token失效,報(bào)文量

2. 熔斷:業(yè)務(wù)系統(tǒng)異常,系統(tǒng)ESB本身故障異常

最后,還需要考慮的就是在實(shí)施了限流和熔斷后如何解除的問(wèn)題,在實(shí)際實(shí)現(xiàn)的時(shí)候,對(duì)于限流可以在規(guī)定時(shí)間后自動(dòng)解除,而對(duì)于熔斷最好還是人工恢復(fù)解除。即,比如對(duì)CRM系統(tǒng)訪問(wèn)MDM的查詢(xún)供應(yīng)商服務(wù)進(jìn)行限流后,在啟動(dòng)限流后的某個(gè)時(shí)間間隔后,比如2小時(shí)后,可以自動(dòng)進(jìn)行解除。這個(gè)時(shí)間間隔可以靈活配置。

以上限流和熔斷實(shí)現(xiàn)基本可以滿足我們大部分的業(yè)務(wù)需求場(chǎng)景,同時(shí)本身又對(duì)ESB總線和業(yè)務(wù)系統(tǒng)實(shí)現(xiàn)保護(hù)作用,防止出現(xiàn)大并發(fā)大數(shù)據(jù)量的調(diào)用出現(xiàn)的影響。當(dāng)然對(duì)于限流也可以人工進(jìn)行恢復(fù),人工恢復(fù)好處是可以跟蹤到消費(fèi)方端是否已經(jīng)修改了消費(fèi)方法,當(dāng)確認(rèn)修改后再進(jìn)行重新授權(quán)恢復(fù)調(diào)用。

返回上頁(yè)