亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring Cloud中Zuul路由配置的示例分析

發布時間:2021-12-24 10:29:58 來源:億速云 閱讀:195 作者:小新 欄目:云計算

這篇文章主要為大家展示了“Spring Cloud中Zuul路由配置的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Spring Cloud中Zuul路由配置的示例分析”這篇文章吧。

Zuul路由配置

        路由配置看似簡單,但也有部分的規則需要說明,小節以前面搭建的集群項目為基礎,講解Zuul的路由配置。

簡單路由

        Spring Cloud在Zuul的“routing”階段實現了幾個過濾器,這些過濾器決定如何進行路由工作。其中,最基本的就是SimpleHostRoutingFilter,該過濾器運行后,會將HTTP請求全部轉發到“源服務”(HTTP服務),本書將其稱為簡單路由,本章7.2小節的例子,實際上就是使用了簡單路由進行請求轉發。以下為簡單路由的配置,同時使用了path與url:

zuul: 
  routes:
    routeTest:
      path: /routeTest/163
      url: http://www.163.com

        以上的配置,訪問“http://localhost:8080/reuteTest/163”,將會跳轉到163網站。為了配置簡便,可以省略path,默認情況下使用routeId作為path,以下的配置省略了path配置:

zuul: 
  routes:
    route163:
      url: http://www.163.com

        訪問“http://localhost:8080/route163”,同樣會路由到163網站。實際上,要觸發簡單路由,配置的url的值,需要以“http:”或者“https:”字符串打頭。以下的配置,不能觸發簡單路由。

zuul: 
  routes:
    noRoute163:
      url: www.163.com

        簡單路由的過濾器SimpleHostRoutingFilter,使用的是HttpClient進行轉發,該過濾器會將HttpServletRequest的相關數據(HTTP方法、參數、請求頭等),轉換為HttpClient的請求實例(HttpRequest),再使用CloseableHttpClient進行轉發。

        在此過程中,為了保證轉發的性能,使用了HttpClient的連接池功能。涉及連接池,就需要對其進行配置。在使用簡單路由時,可以配置以下兩項,修改HttpClient連接池的屬性:

  • zuul.host.maxTotalConnections:目標主機的最大連接數,默認值為200。配置該項,相當于調用了PoolingHttpClientConnectionManager的setMaxTotal方法。

  • zuul.host.maxPerRouteConnections:每個主機的初始連接數,默認值為20。配置該項,相當于調用了PoolingHttpClientConnectionManager的setDefaultMaxPerRoute方法。

跳轉路由

        除了簡單路由外,也支持跳轉路由,當外部訪問網關的A地址時,會forward到B地址,處理跳轉路由的過濾器為SendForwardFilter。接下來進行簡單測試,為網關項目(zuul-gateway)添加一個控制器,請見代碼清單7-5。

        代碼清單7-5:

        codes\07\03\zuul-gateway\src\main\java\org\crazyit\cloud\web\SourceController.java

@RestController
public class SourceController {

    @RequestMapping(value = "/source/hello/{name}", method = RequestMethod.GET)    
    public String hello(@PathVariable("name") String name) {
        return "hello " + name;
    }
}

        控制器中提供了一個最簡單的“hello”服務,用來當作“源服務”,在application.yml中進行轉發配置,配置項如下:

zuul: 
  routes:
    helloRoute:
      path: /test/**
      url: forward:/source/hello

        當外部訪問“/test”地址時,將會自動forward到“/source/hello”地址,打開瀏覽器,輸入:http://localhost:8080/test/anugs,可以看到瀏覽器會返回字符串“hello angus”,可見源服務被調用。跳轉路由實現較為簡單,實際上是調用了RequestDispatcher的forward方法進行跳轉。

Ribbon路由

        在7.3.2中,我們已經接觸過Ribbon路由。當網關作為Eureka客戶端,注冊到Eureka服務器時,可以通過配置serviceId,將請求轉發到集群的服務中。使用以下配置,可以執行Ribbon路由過濾器:

zuul: 
  routes:
    sale:
      path: /sale/**
      serviceId: zuul-sale-service

        與簡單路由類似,serviceId也可以被省略,當省略時,將會使用routeId作為serviceId,下面的配置片斷,效果等同于上面的配置:

zuul: 
  routes:
    zuul-sale-service:
      path: /sale/**

        需要注意的是,如果提供的url配置項,不是簡單路由格式(不以http:或htpps:開頭),也不是跳轉路由格式(forward:開頭),那么將會執行Ribbon路由過濾器,將url看作是一個serviceId,下面的配置片斷,效果也等同于前面的配置:

zuul: 
  routes:
    sale:
      path: /sale/**
      url: zuul-sale-service

自定義路由規則

        如果上面的路由配置無法滿足實際的需求,可以考慮使用自定義的路由規則。實現方式較為簡單,在配置類中創建一個PatternServiceRouteMapper即可,請見代碼清單7-6。

        代碼清單7-6:codes\07\03\zuul-gateway\src\main\java\org\crazyit\cloud\MyConfig.java

@Configuration
public class MyConfig {

    @Bean
    public PatternServiceRouteMapper patternServiceRouteMapper() {
        return new PatternServiceRouteMapper(
                "(zuul)-(?<module>.+)-(service)", "${module}/**");
    }
}

        創建的PatternServiceRouteMapper實例,構造器第一個參數為serviceId的正則表達式,第二個參數為路由的path。訪問“module/**”的請求,將會被路由到“zuul-module-service”的微服務。

        更進一步,以上的路由規則,如果想讓一個或多個服務不被路由,可以使用zuul.ignoredServices屬性,例如在代碼清單7-6的基礎上,想排除zuul-sale-service、zuul-book-service這兩個模塊,可以配置“zuul.ignoredServices: zuul-sale-service, zuul-book-service”。

忽略路由

        除了上面提到的zuul.ignoredServices配置可以忽略路由外,還可以使用zuul.ignoredPatterns來設置不進行路由的URL,請見以下配置片斷:

zuul:
  ignoredPatterns: /sale/noRoute
  routes:
    sale:
      path: /sale/**
      serviceId: zuul-sale-service

        訪問“/sale”路徑的請求,都會被路由到“zuul-sale-service”進行處理,但“/sale/noRoute”除外。

以上是“Spring Cloud中Zuul路由配置的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

扎囊县| 江陵县| 来安县| 乌海市| 达拉特旗| 东城区| 贡嘎县| 金门县| 五峰| 西乡县| 昌吉市| 胶州市| 苍梧县| 舟曲县| 南丰县| 罗甸县| 车致| 平度市| 中西区| 本溪市| 固始县| 剑川县| 祁连县| 宜兰市| 东乌珠穆沁旗| 黄冈市| 阳春市| 连平县| 南丹县| 双峰县| 营口市| 磴口县| 巴中市| 荥经县| 长沙市| 义马市| 杭锦后旗| 两当县| 寻乌县| 措勤县| 尚义县|