1. 程式人生 > >Zuul閘道器配置and案例

Zuul閘道器配置and案例

目錄

幹什麼的?

閘道器會幫著路由到叢集

開啟閘道器配置user-zuul~接收所有請求

網管怎麼把請求分發到伺服器---配置檔案中對映路徑

總結圖片

此時只需要閘道器 服務 註冊中心 不需要服務呼叫者

訪問叢集,自動負載均衡,如何實現?

過濾器ZuulFilter

負載均衡和熔斷都整合閘道器來做


幹什麼的?

所有請求經過閘道器--安全監控

Zuul加入之後的架構

閘道器會幫著路由到叢集

建立閘道器模組

引入jar包

 <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

    </dependencies>

開啟閘道器配置user-zuul~接收所有請求

閘道器的application.yaml

網管怎麼把請求分發到伺服器---配置檔案中對映路徑

path意思時攔截這個開頭的所有請求

訪問方式

總結圖片

此時只需要閘道器 服務 註冊中心 不需要服務呼叫者

訪問叢集,自動負載均衡,如何實現?

通過服務名進行訪問底層自動實現負載---zuul面向服務

1 引入座標 (把閘道器作為服務的呼叫者)

添加註解@EnableDiscoveryClient--此時既是閘道器又是服務的呼叫者

2 新增Eureka配置 獲取服務資訊

 

如何通過服務名字訪問服務

過濾器ZuulFilter

public abstract ZuulFilter implements IZuulFilter{

    abstract public String filterType();

    abstract public int filterOrder();
    
    boolean shouldFilter();// 來自IZuulFilter

    Object run() throws ZuulException;// IZuulFilter
}
  • shouldFilter:返回一個Boolean

    值,判斷該過濾器是否需要執行。返回true執行,返回false不執行。

  • run:過濾器的具體業務邏輯。

  • filterType:返回字串,代表過濾器的型別。包含以下4種:

    • pre:請求在被路由之前執行

    • routing:在路由請求時呼叫

    • post:在routing和errror過濾器之後呼叫

    • error:處理請求時發生錯誤呼叫

  • filterOrder:通過返回的int值來定義過濾器的執行順序,數字越小優先順序越高。

========================================================================

圖解:整個服務流程是先走prefilter,再走路由過濾器routingfliter,再走orginserver伺服器,再走postfilter返回給使用者,出現錯誤走error過濾器

customfilter是自定義過濾器

負載均衡和熔斷都整合閘道器來做

配置閘道器的application

===========================================================