最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Ribbon的饑餓加載(eager-load)模式解讀

 更新時(shí)間:2023年04月26日 14:38:31   作者:潛水打豆豆  
這篇文章主要介紹了Ribbon的饑餓加載(eager-load)模式解讀,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Ribbon的饑餓加載(eager-load)模式

目前測試的時(shí)候發(fā)現(xiàn)在服務(wù)都成功啟動(dòng)的時(shí)候第一次訪問會(huì)有報(bào)錯(cuò)的情況發(fā)生,但是之后又恢復(fù)正常訪問

通過查詢相關(guān)文檔,了解到要解決此問題那么讓需要實(shí)例化的類提前創(chuàng)建,而不是在第一次調(diào)用的時(shí)候創(chuàng)建

摘自DD的博客:

主要是Ribbon進(jìn)行客戶端負(fù)載均衡的Client并不是在服務(wù)啟動(dòng)的時(shí)候就初始化好的,而是在調(diào)用的時(shí)候才會(huì)去創(chuàng)建相應(yīng)的Client,所以第一次調(diào)用的耗時(shí)不僅僅包含發(fā)送HTTP請求的時(shí)間,還包含了創(chuàng)建RibbonClient的時(shí)間,這樣一來如果創(chuàng)建時(shí)間速度較慢,同時(shí)設(shè)置的超時(shí)時(shí)間又比較短的話,很容易就會(huì)出現(xiàn)上面所描述的顯現(xiàn)。

因此我們可以通過設(shè)置:

ribbon.eager-load.enabled=true
ribbon.eager-load.clients=cloud-shop-userservice

參數(shù)說明:

  • ribbon.eager-load.enabled:開啟Ribbon的饑餓加載模式
  • ribbon.eager-load.clients:指定需要饑餓加載的服務(wù)名

SpringCloud之Ribbon的饑餓加載(解決首次調(diào)用超時(shí)的問題)

Ribbon的饑餓加載(eager-load)模式

我們在使用Spring Cloud的Ribbon或Feign來實(shí)現(xiàn)服務(wù)調(diào)用的時(shí)候,如果我們的機(jī)器或網(wǎng)絡(luò)環(huán)境等原因不是很好的話,有時(shí)候會(huì)發(fā)現(xiàn)這樣一個(gè)問題:我們服務(wù)消費(fèi)方調(diào)用服務(wù)提供方接口的時(shí)候,第一次請求經(jīng)常會(huì)超時(shí),而之后的調(diào)用就沒有問題了。

下面我們就來說說造成這個(gè)問題的原因,以及如何解決的方法。

問題原因

造成第一次服務(wù)調(diào)用出現(xiàn)失敗的原因主要是Ribbon進(jìn)行客戶端負(fù)載均衡的Client并不是在服務(wù)啟動(dòng)的時(shí)候就初始化好的,而是在調(diào)用的時(shí)候才會(huì)去創(chuàng)建相應(yīng)的Client,所以第一次調(diào)用的耗時(shí)不僅僅包含發(fā)送HTTP請求的時(shí)間,還包含了創(chuàng)建RibbonClient的時(shí)間,這樣一來如果創(chuàng)建時(shí)間速度較慢,同時(shí)設(shè)置的超時(shí)時(shí)間又比較短的話,很容易就會(huì)出現(xiàn)上面所描述的顯現(xiàn)。

從日志中我們也能知道這一點(diǎn)細(xì)節(jié),在第一次發(fā)起調(diào)用的時(shí)候我們可以從日志中看到如下信息:

2017-09-25 08:29:54,201 INFO  [main] com.netflix.loadbalancer.DynamicServerListLoadBalancer - DynamicServerListLoadBalancer for client hello-service initialized: DynamicServerListLoadBalancer:{NFLoadBalancer:name=hello-service,current list of Servers=[192.168.99.176:9901],Load balancer stats=Zone stats: {unknown=[Zone:unknown;    Instance count:1;   Active connections count: 0;    Circuit breaker tripped count: 0;   Active connections per server: 0.0;] 
},Server stats: [[Server:192.168.99.176:9901;   Zone:UNKNOWN;   Total Requests:0;   Successive connection failure:0;    Total blackout seconds:0;   Last connection made:Thu Jan 01 08:00:00 CST 1970;  First connection made: Thu Jan 01 08:00:00 CST 1970;    Active Connections:0;   total failure count in last (1000) msecs:0; average resp time:0.0;  90 percentile resp time:0.0;    95 percentile resp time:0.0;    min resp time:0.0;  max resp time:0.0;  stddev resp time:0.0] 
]}ServerList:ConsulServerList{serviceId='hello-service', tag=null} 

而Feign的實(shí)現(xiàn)基于Ribbon,所以它也有一樣的問題,下面就來看看如何解決這個(gè)問題。

解決方法

解決的方法很簡單,既然第一次調(diào)用時(shí)候產(chǎn)生RibbonClient耗時(shí),那么就讓它提前創(chuàng)建,而不是在第一次調(diào)用的時(shí)候創(chuàng)建。

在Spring Cloud的Dlaston版本中提供了幾個(gè)新的參數(shù),它們可以很方便的幫我們實(shí)現(xiàn)這樣的功能。

ribbon:
?? ?eager-load:
? ? ?? ?enabled:true
?? ?clients:kong-auth,kong-uc-service

參數(shù)說明:

  • ribbon.eager-load.enabled:開啟Ribbon的饑餓加載模式
  • ribbon.eager-load.clients:指定需要饑餓加載的客戶端名稱、服務(wù)名

通過上面的配置完成之后,我們嘗試重啟一下服務(wù)消費(fèi)者,這個(gè)時(shí)候我們會(huì)發(fā)現(xiàn),我們沒有開始調(diào)用服務(wù)接口,但是上面初始化負(fù)載均衡的日志就已經(jīng)打印出來了。

這就說明我們對ribbon的饑餓加載模塊設(shè)置已經(jīng)生效了。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

白朗县| 章丘市| 忻城县| 全椒县| 阿勒泰市| 远安县| 临漳县| 昭苏县| 周至县| 抚松县| 平泉县| 全南县| 确山县| 平塘县| 杭锦旗| 桑日县| 社会| 深州市| 绥化市| 乐平市| 舟山市| 洪泽县| 鄂托克前旗| 绥中县| 大兴区| 屏东市| 达日县| 九龙坡区| 长寿区| 桃园市| 保山市| 镇平县| 咸丰县| 通河县| 盐池县| 和龙市| 甘洛县| 南乐县| 河北区| 松阳县| 读书|