激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 深入解析Spring Cloud內置的Zuul過濾器

深入解析Spring Cloud內置的Zuul過濾器

2020-08-19 11:30周立 Java教程

這篇文章主要給大家深入的介紹了Spring Cloud內置的Zuul過濾器的相關資料,文中給大家介紹的很詳細,相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。

前言

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

@EnableZuulProxy是我們常用的注解。

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

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

RequestContext:用于在過濾器之間傳遞消息。它的數據保存在每個請求的ThreadLocal中。它用于存儲請求路由到哪里、錯誤、HttpServletRequest、HttpServletResponse都存儲在RequestContext中。RequestContext擴展了ConcurrentHashMap,所以,任何數據都可以存儲在上下文中。

@EnableZuulServer過濾器

一、pre類型過濾器

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

(2) FormBodyWrapperFilter:解析表單數據,并為請求重新編碼。

(3) DebugFilter:顧名思義,調試用的過濾器,可以通過zuul.debug.request=true ,或在請求時,加上debug=true的參數,例如$ZUUL_HOST:ZUUL_PORT/path?debug=true 開啟該過濾器。這樣,該過濾器就會把RequestContext.setDebugRouting() RequestContext.setDebugRequest() 設為true。

二、route類型過濾器

SendForwardFilter:該過濾器使用Servlet RequestDispatcher轉發請求,轉發位置存儲在RequestContext.getCurrentContext().get("forward.to") 中。可以將路由設置成:

?
1
2
3
4
5
zuul:
 routes:
 abc:
  path: /abc/**
  url: forward:/abc

然后訪問$ZUUL_HOST:ZUUL_PORT/abc ,觀察該過濾器的執行過程。

三、post類型過濾器

SendResponseFilter:將Zuul所代理的微服務的的響應寫入當前響應。

四、error類型過濾器

SendErrorFilter:如果RequestContext.getThrowable() 不為null,那么默認就會轉發到/error,也可以設置error.path屬性修改默認的轉發路徑。

@EnableZuulProxy過濾器

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

一、pre類型過濾器

PreDecorationFilter:該過濾器根據提供的RouteLocator確定路由到的地址,以及怎樣去路由。該路由器也可為后端請求設置各種代理相關的header。

二、route類型過濾器

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

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

(2) SimpleHostRoutingFilter:該過濾器通過Apache HttpClient向指定的URL發送請求。URL在RequestContext.getRouteHost() 中。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

原文鏈接:http://www.itmuch.com/spring-cloud/zuul/zuul-filter-in-spring-cloud/

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品久久久久久久av | 玩偶姐姐 在线观看 | 欧美成人性生活 | 国产免费一区二区三区在线能观看 | 久久久久久久久浪潮精品 | 97干色 | 午夜激情视频网站 | 国产精品久久av | 在线天堂中文字幕 | 国产免费一区二区三区最新不卡 | av电影免费在线看 | 一本色道久久久888 青青草好吊色 | 97精品国产高清在线看入口 | 国产毛片视频 | 午夜a狂野欧美一区二区 | www嫩草| 黄色美女网站免费看 | 黄色片视频免费观看 | 日韩在线视频一区二区三区 | 草人人| 中文字幕极速在线观看 | 久久精品免费国产 | 农村少妇吞精夜夜爽视频 | 日本教室三级在线看 | 日本中文高清 | 欧美成人一级 | 日韩一级片毛片 | vidz 98hd| 久久av一区二区 | 久久国产在线观看 | 日韩视频在线一区二区三区 | 欧美一级黄色免费 | 成人国产精品一区二区毛片在线 | 久久精品视频黄色 | 叉逼视频| 黄色7777| 日韩一级精品 | 欧美在线国产 | 久久精品99北条麻妃 | 三级xxxx| 久久网站热最新地址4 |