免费黄动漫无码在线观看犹物影视|伊人久久综合一本超碰|国产在线精品一区二区三区不卡|国产女主播久久一区二区免费|

服務(wù)限流熔斷

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

返回上頁