1. 程式人生 > 實用技巧 >SpringCloud(4) - Zuul路由閘道器

SpringCloud(4) - Zuul路由閘道器

一、概述

Zuul提供了代理、路由、過濾三大功能!

主要的功能:

路由:負責將外部請求轉發到具體的微服務例項上,是實現外部訪問統一入口的基礎。

過濾:負責對請求的處理過程進行干預,是實現請求校驗、服務聚合等功能的基礎。

Zuul和Eureka進行整合,將Zuul自身註冊為Eureka服務治理下的應用,同時還可以從Eureka中獲取其他微服務的訊息,以後訪問微服務都是通過Zuul跳轉後獲得的。

注意Zuul服務最終還是會註冊進Eureka

二、程式碼實現

新建一個模組 springcloud-zuul-9207

匯入依賴

<!-- zuul -->
<dependency
> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zuul</artifactId> <version>1.4.6.RELEASE</version> </dependency> <!-- 由於zuul 也是微服務所以應該屬於euaeka的客戶端,所以需要引入這個 --> <dependency> <groupId>org.springframework.cloud</
groupId> <artifactId>spring-cloud-starter-eureka</artifactId> <version>1.4.6.RELEASE</version> </dependency> <!-- web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId
> </dependency> <!-- 熱部署工具 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency>

新建application.yaml,進行配置

server:
  port: 9207

# Spring配置
spring:
  application:
    name: springcloud-zuul

# Eureka配置
eureka:
  client:
    service-url:
      defaultZone: http://localhost:7001/eureka/,http://localhost:7002/eureka/,http://localhost:7003/eureka/
  instance:
    instance-id: zuul9207.com
    prefer-ip-address: true # 隱藏真實IP

# zuul路由配置
zuul:
  routes: # 隱藏服務名稱,通過新的path訪問
    mydept.serviceId: springcloud-provider-dept
    mydept.path: /mydept/**
  ignored-services: springcloud-provider-dept # 忽略服務,不能再使用這個路徑訪問,"*"可以隱藏全部
  prefix: /cyan # 設定統一公共的字首

# 配置資訊
info:
  app.name: cyan-springcloud
  company.name: blog.cyan.com

新建一個主啟動類,並新增@EnableZuulProxy 註解

@SpringBootApplication
@EnableZuulProxy  // 開啟代理
public class ZuulApplication_9207 {
    public static void main(String[] args) {
        SpringApplication.run(ZuulApplication_9207.class, args);
    }
}

三、測試

① 配置 serviceId 和 path

只能通過 http://localhost:9207/mydept/dept/get/1與http://localhost:9207/springcloud-provider-dept/dept/get/1訪問

② 增加 ignored-services 忽略配置,可以配置星號 "*" 忽略所有

只能通過 http://localhost:9207/mydept/dept/get/1 訪問

③ 配置prefix增加統一的字首

只能通過 http://localhost:9207/cyan/mydept/dept/get/1 訪問