1. 程式人生 > >spring cloud(三)-服務閘道器Zuul

spring cloud(三)-服務閘道器Zuul

前言

加入服務閘道器將許可權控制這些較重的非業務邏輯內容遷移到服務路由層面,讓服務叢集更關注服務本身的業務邏輯,具備更高的可複用性和可測試性。

1、構建服務閘道器

服務提供者和消費者分別是eureka-clienteureka-consumer
(一)建立一個spring boot專案,新增依賴

<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>2.0.2.RELEASE</version>
  <relativePath/>
</parent>

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

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-dependencies</artifactId>
      <version>Finchley.RELEASE</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

(二)啟動類
並使用@EnableZuulProxy註解開啟Zuul的功能

@EnableZuulProxy
@SpringCloudApplication
public class Application {  
  public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
  }
}

(三)application.properties配置

# 基礎資訊配置
spring.application.name=api-gateway
server.port=80791
# 路由規則配置
zuul.routes.eurekaclient.path=/eureka-client/**
zuul.routes.eurekaclient.serviceId=eureka-client

# API閘道器也將作為一個服務註冊到eureka-server上
eureka.client.service-url.defaultZone=http://localhost:80791/eureka/

服務閘道器構建完畢。主要用於請求的路由和過濾功能。
我們在這裡配置了路由規則所有符合/eurekaclient/**的請求都將被轉發到eureka-client服務上,這裡只需要寫上服務名即可。以上面的配置為例,如果我請求http://localhost:80791/eureka-client/hello介面則相當於請求http://localhost:80791/hello(我這裡eurekaclient的地址為http://localhost:80791),我們在路由規則中配置的eureka-client是路由的名字,可以任意定義,但是一組path和serviceId對映關係的路由名要相同。