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

深入解析Spring Cloud內(nèi)置的Zuul過(guò)濾器

 更新時(shí)間:2017年02月25日 10:34:50   作者:周立  
這篇文章主要給大家深入的介紹了Spring Cloud內(nèi)置的Zuul過(guò)濾器的相關(guān)資料,文中給大家介紹的很詳細(xì),相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。

前言

Spring Cloud默認(rèn)為Zuul編寫并啟用了一些過(guò)濾器,這些過(guò)濾器有什么作用呢?我們不妨按照@EnableZuulServer、@EnableZuulProxy兩個(gè)注解進(jìn)行展開,相信大家對(duì)這兩個(gè)注解都不陌生(至少都見過(guò)吧)。如果覺(jué)得陌生也沒(méi)有關(guān)系,可將@EnableZuulProxy簡(jiǎn)單理解為@EnableZuulServer的增強(qiáng)版。事實(shí)上,當(dāng)Zuul與Eureka、Ribbon等組件配合使用時(shí),

@EnableZuulProxy是我們常用的注解。

在Spring Cloud的官方文檔中,只說(shuō)@EnableZuulServer是一個(gè)“空白”的Zuul,那么究竟空白在什么地方呢?與@EnableZuulProxy到底有什么區(qū)別呢?諸多問(wèn)題,都將在本文找到答案。

在此之前,我們先理解什么是RequestContext:

RequestContext:用于在過(guò)濾器之間傳遞消息。它的數(shù)據(jù)保存在每個(gè)請(qǐng)求的ThreadLocal中。它用于存儲(chǔ)請(qǐng)求路由到哪里、錯(cuò)誤、HttpServletRequest、HttpServletResponse都存儲(chǔ)在RequestContext中。RequestContext擴(kuò)展了ConcurrentHashMap,所以,任何數(shù)據(jù)都可以存儲(chǔ)在上下文中。

@EnableZuulServer過(guò)濾器

一、pre類型過(guò)濾器

(1) ServletDetectionFilter:該過(guò)濾器用于檢查請(qǐng)求是否通過(guò)Spring Dispatcher。檢查后,通過(guò)isDispatcherServletRequest設(shè)置布爾值。

(2) FormBodyWrapperFilter:解析表單數(shù)據(jù),并為請(qǐng)求重新編碼。

(3) DebugFilter:顧名思義,調(diào)試用的過(guò)濾器,可以通過(guò)zuul.debug.request=true ,或在請(qǐng)求時(shí),加上debug=true的參數(shù),例如$ZUUL_HOST:ZUUL_PORT/path?debug=true 開啟該過(guò)濾器。這樣,該過(guò)濾器就會(huì)把RequestContext.setDebugRouting() 、RequestContext.setDebugRequest() 設(shè)為true。

二、route類型過(guò)濾器

SendForwardFilter:該過(guò)濾器使用Servlet RequestDispatcher轉(zhuǎn)發(fā)請(qǐng)求,轉(zhuǎn)發(fā)位置存儲(chǔ)在RequestContext.getCurrentContext().get("forward.to") 中??梢詫⒙酚稍O(shè)置成:

zuul:
 routes:
 abc: 
  path: /abc/**
  url: forward:/abc

然后訪問(wèn)$ZUUL_HOST:ZUUL_PORT/abc ,觀察該過(guò)濾器的執(zhí)行過(guò)程。

三、post類型過(guò)濾器

SendResponseFilter:將Zuul所代理的微服務(wù)的的響應(yīng)寫入當(dāng)前響應(yīng)。

四、error類型過(guò)濾器

SendErrorFilter:如果RequestContext.getThrowable() 不為null,那么默認(rèn)就會(huì)轉(zhuǎn)發(fā)到/error,也可以設(shè)置error.path屬性修改默認(rèn)的轉(zhuǎn)發(fā)路徑。

@EnableZuulProxy過(guò)濾器

如果使用注解@EnableZuulProxy,那么除上述過(guò)濾器之外,Spring Cloud還會(huì)安裝以下過(guò)濾器:

一、pre類型過(guò)濾器

PreDecorationFilter:該過(guò)濾器根據(jù)提供的RouteLocator確定路由到的地址,以及怎樣去路由。該路由器也可為后端請(qǐng)求設(shè)置各種代理相關(guān)的header。

二、route類型過(guò)濾器

(1) RibbonRoutingFilter:該過(guò)濾器使用Ribbon,Hystrix和可插拔的HTTP客戶端發(fā)送請(qǐng)求。serviceId在RequestContext.getCurrentContext().get("serviceId") 中。該過(guò)濾器可使用不同的HTTP客戶端,例如

  1. Apache HttpClient:默認(rèn)的HTTP客戶端
  2. Squareup OkHttpClient v3:如需使用該客戶端,需保證com.squareup.okhttp3的依賴在classpath中,并設(shè)置ribbon.okhttp.enabled = true
  3. Netflix Ribbon HTTP client:設(shè)置ribbon.restclient.enabled = true 即可啟用該HTTP客戶端。需要注意的是,該客戶端有一定限制,例如不支持PATCH方法,另外,它有內(nèi)置的重試機(jī)制。

(2) SimpleHostRoutingFilter:該過(guò)濾器通過(guò)Apache HttpClient向指定的URL發(fā)送請(qǐng)求。URL在RequestContext.getRouteHost() 中。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

最新評(píng)論

驻马店市| 泊头市| 资兴市| 望奎县| 图木舒克市| 南部县| 邮箱| 中西区| 睢宁县| 南江县| 宜兰市| 开封县| 昌图县| 股票| 乳山市| 梁河县| 察雅县| 汝阳县| 拜泉县| 天长市| 汪清县| 深泽县| 拜泉县| 武义县| 闵行区| 西乡县| 安乡县| 锦州市| 渭源县| 沁阳市| 依安县| 吉安市| 高清| 湘潭县| 玛沁县| 新郑市| 河曲县| 琼结县| 禹城市| 崇明县| 精河县|