1. 程式人生 > >Spring Boot Zuul代理伺服器和路由的簡單理解

Spring Boot Zuul代理伺服器和路由的簡單理解

Zuul Server是一個閘道器應用程式,可處理所有請求並執行微服務應用程式的動態路由。 Zuul伺服器也稱為邊緣伺服器。Zuul是 Netflix 開源的微服務閘道器,他可以和 Eureka , Ribbon , Hystrix 等元件配合使用。

在主應用程式新增 @EnableZuulProxy 註解.

Maven 使用者需要在pom.xml 檔案中新增以下依賴項 --

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

對於Zuul路由,請在application.properties 檔案中新增以下屬性。

spring.application.name = zuulserver
zuul.routes.products.path = /api/demo/**
zuul.routes.products.url = http://localhost:8080/
server.port = 8111

application.yml 檔案中

server:
   port: 8111
spring:
   application:  
      name: zuulserver
zuul:

routes:
   products:
      path: /api/demo/**
      url: http://localhost:8080/

注 - 在通過Zuul Proxy進行路由之前,http://localhost:8080/應用程式應該已經執行。 這個配置表示已/api/demo/開頭的URL請求將被轉發到peoducets上。 

Zuul元件的核心是一系列的過濾器,這些過濾器可以完成以下功能:

  • 安全和認證

  • 動態路由

  • 壓力測試

  • 負載均衡

  • 靜態響應處理

 

Filter工作流程:

    首先看到Filter的四個方法,FilterTypefilterOrdershouldFilterrun

    filterType

代表過濾型別 --

String filterType();
  • PRE  --  在Request routing到源web-service之前執行。用來實現Authentication、選擇源服務地址等

  • ROUTING  --  路由請求時被呼叫,請求路由到位伺服器

  • POST  --  ROUTING返回Response後執行。用來實現對Response結果進行修改,收集統計資料以及把Response傳輸會客戶端。

  • ERROR  --  發生錯誤時即呼叫

下面是其執行順序  --

    filterOrder --

int filterOrder();
  • 通過int值來定義過濾器的執行順序,數值越小優先順序越高。

    shouldFilter --

boolean shouldFilter();
  • 返回一個boolean值來判斷該過濾器是否要執行。我們可以通過此方法來指定過濾器的有效範圍。

    run  --

Object run();
  • 過濾器的處理邏輯,許可權控制,安全,日誌等就是在這個地方.