欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報激活碼778899分享:Dubbo 服務(wù)路由

柚子快報激活碼778899分享:Dubbo 服務(wù)路由

http://yzkb.51969.com/

服務(wù)路由

1、服務(wù)路由是什么?

服務(wù)路由包含一條路由規(guī)則,路由規(guī)則決定了服務(wù)消費者的調(diào)用目標(biāo),即規(guī)定了服務(wù)消費者可調(diào)用哪些服務(wù)提供者。Dubbo 目前提供了三種服務(wù)路由實現(xiàn),分別為條件路由 ConditionRouter、腳本路由 ScriptRouter 和標(biāo)簽路由 TagRouter。其中條件路由是我們最常使用的

2、條件路由

條件路由規(guī)則將符合特定條件的請求轉(zhuǎn)發(fā)到特定的地址實例子集上。規(guī)則首先對發(fā)起流量的請求參數(shù)進(jìn)行匹配,符合匹配條件的請求將被轉(zhuǎn)發(fā)到包含特定實例地址列表的子集。

條件路由的格式:

[服務(wù)消費者匹配條件] => [服務(wù)提供者匹配條件]

host = 10.20.150.30 => host = 10.20.150.31

該條規(guī)則表示 IP 為 10.20.150.30 的服務(wù)消費者只可調(diào)用 IP 為 10.20.150.31 機器上的服務(wù)

當(dāng)然,服務(wù)消費者匹配條件為空,表示不對消費者進(jìn)行限制

服務(wù)提供者為空,表示對指定的消費者禁用服務(wù)

高頻的路由配置:

白名單:

host != 10.20.30.140.50,10.20.30.140.51 =>

不是(10.20.30.140.50,10.20.30.140.51)的不可以訪問

黑名單:

host != 10.20.30.140.50,10.20.30.140.51 =>

是(10.20.30.140.50,10.20.30.140.51)的不可以訪問

讀寫分離:

method = fifind,list,get,is => host = 172.22.3.94,172.22.3.95,172.22.3.96

是(fifind , list , get , is)的訪問ip為(172.22.3.94,172.22.3.95,172.22.3.96)的服務(wù)端

method != fifind,list,get,is => host = 172.22.3.97,172.22.3.98

不是(fifind , list , get , is)的訪問ip為(172.22.3.94,172.22.3.95,172.22.3.96)的服務(wù)端

前后臺分離:

application = front => host = 172.22.3.91,172.22.3.92,172.22.3.93

是(front【前端】)的訪問ip為(172.22.3.91,172.22.3.92,172.22.3.93)的服務(wù)端

application != front => host = 172.22.3.94,172.22.3.95,172.22.3.96

意思:應(yīng)用不是(front【前端】)的訪問ip為(172.22.3.91,172.22.3.92,172.22.3.93)的服務(wù)端

ConditionRule

條件路由規(guī)則主體。定義路由規(guī)則生效的目標(biāo)服務(wù)或應(yīng)用、流量過濾條件以及一些特定場景下的行為。

字段名類型描述必填configVersionstring條件路由的版本,當(dāng)前版本為 v3.0是scopestring支持 service 和 application 兩種規(guī)則是keystring應(yīng)用到的目標(biāo)服務(wù)或應(yīng)用程序的標(biāo)識符 - 當(dāng) scope:service 時, key應(yīng)該是該規(guī)則生效的服務(wù)名比如 org.apache.dubbo.samples.CommentService - 當(dāng) scope:application 時, then key應(yīng)該是該規(guī)則應(yīng)該生效的應(yīng)用名稱,比如說my-dubbo-service.是enabledbool規(guī)則是否生效 當(dāng) enabled:false 時,規(guī)則不生效是conditionsstring[]配置中定義的條件規(guī)則,詳情可以看條件規(guī)則是forceboolT路由后實例子集為空時的行為。 true 則拋出一個No Provider Exception。 false 則忽略規(guī)則,直接去請求其他的實例。默認(rèn)值是false否runtimebool是否為每個 rpc 調(diào)用運行路由規(guī)則或使用路由緩存(如果可用)。默認(rèn)值是false(false則走緩存,true不走緩存)否

Condition

Condition 為條件路由規(guī)則的主體,類型為一個復(fù)合結(jié)構(gòu)的 string 字符串,如 method=getComment => region=Hangzhou。其中,

=> 之前的為請求參數(shù)匹配條件,指定的 匹配條件指定的參數(shù) 將與 消費者的請求上下文 (URL)、甚至方法參數(shù) 進(jìn)行對比,當(dāng)消費者滿足匹配條件時,對該消費者執(zhí)行后面的地址子集過濾規(guī)則。 => 之后的為地址子集過濾條件,指定的 過濾條件指定的參數(shù)

將與 提供者實例地址 (URL)

進(jìn)行對比,消費者最終只能拿到符合過濾條件的實例列表,從而確保流量只會發(fā)送到符合條件的地址子集。

如果匹配條件為空,表示對所有請求生效,如:=> status != staging如果過濾條件為空,表示禁止來自相應(yīng)請求的訪問,如:application = product =>

匹配/過濾條件

參數(shù)支持

服務(wù)調(diào)用上下文,如:interface, method, group, version 等請求上下文,如 attachments[key] = value方法參數(shù),如 arguments[0] = tomURL 本身的字段,如:protocol, host, port 等URL 上任務(wù)擴(kuò)展參數(shù),如:application, organization 等支持開發(fā)者自定義擴(kuò)展

條件支持

等號 = 表示 “匹配”,如:method = getComment不等號 != 表示 “不匹配”,如:method != getComment

值支持

以逗號 , 分隔多個值,如:host != 10.20.153.10,10.20.153.11以星號 * 結(jié)尾,表示通配,如:host != 10.20.*以美元符 $ 開頭,表示引用消費者參數(shù),如:region = $region整數(shù)值范圍,如:userId = 1~100、userId = 101~支持開發(fā)者自定義擴(kuò)展

3、標(biāo)簽路由

標(biāo)簽路由通過將某一個服務(wù)的實例劃分到不同的分組,約束具有特定標(biāo)簽的流量只能在指定分組中流轉(zhuǎn),不同分組為不同的流量場景服務(wù),從而達(dá)到實現(xiàn)流量隔離的目的,可以作為藍(lán)綠發(fā)布、灰度發(fā)布等場景能力的基礎(chǔ)。

目前有兩種方式可以對實例打標(biāo),分別是動態(tài)規(guī)則打標(biāo)和靜態(tài)規(guī)則打標(biāo)。動態(tài)規(guī)則打標(biāo) 可以在運行時動態(tài)的圈住一組機器實例,而 靜態(tài)規(guī)則打標(biāo) 則需要實例重啟后才能生效,其中,動態(tài)規(guī)則相較于靜態(tài)規(guī)則優(yōu)先級更高,而當(dāng)兩種規(guī)則同時存在且出現(xiàn)沖突時,將以動態(tài)規(guī)則為準(zhǔn)。

標(biāo)簽路由是一套嚴(yán)格隔離的流量體系,對于同一個應(yīng)用而言,一旦打了標(biāo)簽則這部分地址子集就被隔離出來,只有帶有對應(yīng)標(biāo)簽的請求流量可以訪問這個地址子集,這部分地址不再接收沒有標(biāo)簽或者具有不同標(biāo)簽的流量。

舉個例子,如果我們將一個應(yīng)用進(jìn)行打標(biāo),打標(biāo)后劃分為 tag-a、tag-b、無 tag 三個地址子集,則訪問這個應(yīng)用的流量,要么路由到 tag-a (當(dāng)請求上下文 dubbo.tag=tag-a),要么路由到 tag-b (dubbo.tag=tag-b),或者路由到無 tag 的地址子集 (dubbo.tag 未設(shè)置),不會出現(xiàn)混調(diào)的情況。

標(biāo)簽路由的作用域是提供者應(yīng)用,消費者應(yīng)用無需配置標(biāo)簽路由規(guī)則。一個提供者應(yīng)用內(nèi)的所有服務(wù)只能有一條分組規(guī)則,不會有服務(wù) A 使用一條路由規(guī)則、服務(wù) B 使用另一條路由規(guī)則的情況出現(xiàn)。以下條件路由示例,在 shop-detail 應(yīng)用中圈出了一個隔離環(huán)境 gray,gray 環(huán)境包含所有帶有 env=gray 標(biāo)識的機器實例。

configVersion: v3.0

force: true

enabled: true

key: shop-detail

tags:

- name: gray

match:

- key: env

value:

exact: gray

假設(shè)有一個微服務(wù)應(yīng)用,包含兩個版本的服務(wù)實例:v1和v2?,F(xiàn)在我們希望通過標(biāo)簽路由來控制流量,將一部分流量路由到v1,另一部分流量路由到v2。

首先,在啟動v1和v2的實例時,我們可以給它們分別打上靜態(tài)的標(biāo)簽,如下:

v1實例:打上標(biāo)簽tag-av2實例:打上標(biāo)簽tag-b

然后,我們可以配置一個規(guī)則,使得帶有特定標(biāo)簽的請求流量可以路由到相應(yīng)的實例。這可以通過配置中心或其他方式進(jìn)行配置。例如,我們定義以下規(guī)則:

請求上下文中的dubbo.tag=tag-a,則將流量路由到v1實例。請求上下文中的dubbo.tag=tag-b,則將流量路由到v2實例。請求上下文中沒有dubbo.tag的標(biāo)簽,則流量會路由到默認(rèn)的地址子集。

現(xiàn)在,如果有100個請求,其中80個請求的dubbo.tag=tag-a,20個請求的dubbo.tag=tag-b,那么標(biāo)簽路由將根據(jù)標(biāo)簽規(guī)則將80%的流量路由到v1實例,20%的流量路由到v2實例。

通過這種方式,我們可以實現(xiàn)簡單的藍(lán)綠發(fā)布或灰度發(fā)布。我們可以在v1實例上進(jìn)行新功能的測試和驗證,同時保留v2實例作為備份或者線上版本。當(dāng)我們確認(rèn)新功能穩(wěn)定可靠后,可以通過調(diào)整標(biāo)簽路由的規(guī)則,逐漸增加流量到v2實例,最終完成版本的切換。

這只是一個簡單的例子,實際上,標(biāo)簽路由可以根據(jù)具體的需求和場景來定義更多的規(guī)則,并且可以結(jié)合權(quán)重、負(fù)載均衡等策略來更精確地控制流量的分發(fā)和管理。

TagRule

標(biāo)簽路由規(guī)則主體。定義路由規(guī)則生效的目標(biāo)應(yīng)用、標(biāo)簽分類規(guī)則以及一些特定場景下的行為。

FieldTypeDescriptionRequiredconfigVersionstringThe version of the tag rule definition, currently available version is v3.0YeskeystringThe identifier of the target application that this rule is about to controlYesenabledboolWhether enable this rule or not, set enabled:false to disable this rule.YestagsTag[]The tag definition of this rule.YesforceboolThe behaviour when the instance subset is empty after routing. true means return no provider exception while false means fallback to subset without any tags.NoruntimeboolWhether run routing rule for every rpc invocation or use routing cache if available.No

Tag

標(biāo)簽定義,根據(jù) match 條件篩選出一部分地址子集。

FieldTypeDescriptionRequirednamestringThe name of the tag used to match the dubbo.tag value in the request context.YesmatchMatchConditionA set of criterion to be met for instances to be classified as member of this tag.No

MatchCondition

定義實例過濾條件,根據(jù) Dubbo URL 地址中的特定參數(shù)進(jìn)行過濾。

FieldTypeDescriptionRequiredkeystringThe name of the key in the Dubbo url address.YesvalueStringMatch (oneof)The matching condition for the value in the Dubbo url address.Yes

4、腳本路由

腳本路由為流量管理提供了最大的靈活性,所有流量在執(zhí)行負(fù)載均衡選址之前,都會動態(tài)的執(zhí)行一遍規(guī)則腳本,根據(jù)腳本執(zhí)行的結(jié)果確定可用的地址子集。

腳本路由只對消費者生效且只支持應(yīng)用粒度管理,因此, key 必須設(shè)置為消費者應(yīng)用名;腳本語法支持多種,以 Dubbo Java SDK 為例,腳本語法支持 Javascript、Groovy、Kotlin 等,具體可參見每個語言實現(xiàn)的限制。

腳本路由由于可以動態(tài)加載遠(yuǎn)端代碼執(zhí)行,因此存在潛在的安全隱患,在啟用腳本路由前,一定要確保腳本規(guī)則在安全沙箱內(nèi)運行。

configVersion: v3.0

key: demo-provider

type: javascript

enabled: true

script: |

(function route(invokers,invocation,context) {

var result = new java.util.ArrayList(invokers.size());

for (i = 0; i < invokers.size(); i ++) {

if ("10.20.3.3".equals(invokers.get(i).getUrl().getHost())) {

result.add(invokers.get(i));

}

}

return result;

} (invokers, invocation, context)); // 表示立即執(zhí)行方法

ScriptRule

腳本路由規(guī)則主體。定義腳本規(guī)則生效的目標(biāo)消費者應(yīng)用、流量過濾腳本以及一些特定場景下的行為。

FieldTypeDescriptionRequiredconfigVersionstringThe version of the script rule definition, currently available version is v3.0YeskeystringThe identifier of the target application that this rule is about to apply to.YestypestringThe script language used to define script.YesenabledboolWhether enable this rule or not, set enabled:false to disable this rule.YesscriptstringThe script definition used to filter dubbo provider instances.YesforceboolThe behaviour when the instance subset is empty after after routing. true means return no provider exception while false means ignore this rule.No

Script

script 為腳本路由規(guī)則的主體,類型為一個具有符合結(jié)構(gòu)的 string 字符串,具體取決于 type 指定的腳本語言。

以下是 type: javascript 的一個腳本規(guī)則示例:

(function route(invokers,invocation,context) {

var result = new java.util.ArrayList(invokers.size());

for (i = 0; i < invokers.size(); i ++) {

if ("10.20.3.3".equals(invokers.get(i).getUrl().getHost())) {

result.add(invokers.get(i));

}

}

return result;

} (invokers, invocation, context)); // 表示立即執(zhí)行方法

柚子快報激活碼778899分享:Dubbo 服務(wù)路由

http://yzkb.51969.com/

相關(guān)鏈接

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19353811.html

發(fā)布評論

您暫未設(shè)置收款碼

請在主題配置——文章設(shè)置里上傳

掃描二維碼手機訪問

文章目錄