1. 程式人生 > >spring cloud 閘道器路由資訊動態配置

spring cloud 閘道器路由資訊動態配置

一、遠端git倉庫

api-gateway-dynamic.properties

zuul.routes.api-a.path=/feign/**
zuul.routes.api-a.serviceId=eureka-feign-consumer
遠端倉庫配置了一條閘道器路由,閘道器通過配置伺服器獲取該資訊

二、閘道器api-gateway-dynamic

pom.xml

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.4.RELEASE</version>
    <relativePath/>
  </parent>
<dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-zuul</artifactId>
      <version>1.3.1.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-eureka</artifactId>
      <version>1.3.1.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-config</artifactId>
      <version>1.3.1.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-actuator</artifactId>
      <version>1.3.1.RELEASE</version>
    </dependency>

配置資訊bootstrap.properties

#閘道器通過配置服務端獲取遠端庫的路由配置資訊
#應用名,這裡與配置倉庫名一樣,spring.cloud.config.name預設為應用名
spring.application.name=api-gateway-dynamic
server.port=5556

#這裡用服務名連線配置服務端出現jar包版本問題,不行
#spring.cloud.config.discovery.enabled=true
#spring.cloud.config.discovery.serviceId=config-server
spring.cloud.config.uri=http://127.0.0.1:1201/

#關閉端點許可權控制
management.security.enabled=false

eureka.client.serviceUrl.defaultZone=http://127.0.0.1:1001/eureka/

應用主類:
package org.api.gateway.dynamic;

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.client.SpringCloudApplication;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
import org.springframework.cloud.netflix.zuul.filters.ZuulProperties;
import org.springframework.context.annotation.Bean;

@EnableZuulProxy
@SpringCloudApplication
public class DynamicApplication {

    public static void main(String[] args) {
        new SpringApplicationBuilder(DynamicApplication.class).web(true).run(args);
    }
    
    @Bean
    @RefreshScope
    @ConfigurationProperties("zuul")
    public ZuulProperties zuulProperties(){
        return new ZuulProperties();
    }
}


這樣,先開啟服務治理中心eureka-server、配置服務端config-server,在啟動應用主類,閘道器會獲取到遠端倉庫配置的路由資訊。

通過/routes端點可以看到閘道器的所有路由資訊,包括預設路由資訊。

修改遠端引數路由配置資訊,在傳送post請求/refresh到閘道器重新整理配置就可以了。

2、從資料庫中讀取路由資訊,並動態重新整理

https://github.com/lexburner/zuul-gateway-demo

相關推薦

spring cloud 路由資訊動態配置

一、遠端git倉庫 api-gateway-dynamic.properties zuul.routes.api-a.path=/feign/** zuul.routes.api-a.service

spring cloud 路由

zuul.routes.stat.path=/s/** zuul.routes.stat.service-id = s1 zuul.routes.app.path=/a/** zuul.routes.a

spring cloud : Zuul(過濾:安全、監控、限流、路由)

單點搭建注意:藍色虛線代表註冊;綠色虛線代表呼叫、紅色虛線代表心跳1.     新增依賴建立專案tcloud-gateway-zuulserver , pom.xml內容如下<project xmlns="http://maven.apache.org/POM/4.0.

基於Lua的Spring Cloud高可用通用Ngnix外掛

專案github地址:點選跳轉 場景痛點 在Spring Cloud微服務架構體系中,我們往往會部署一個Zuul叢集來橫向擴充套件我們的微服務應用,叢集的上層是Nginx軟負載,在實際情況中,往往會遇到Zuul宕機的尷尬事情,這時候從Nginx到這臺

spring cloud 服務

微服務 閘道器服務 閘道器服務是微服務體系裡面重要的一環。 微服務體系內,各個服務之間都會有通用的功能比如說:鑑權、安全、監控、日誌、服務排程轉發。這些都是可以單獨抽象出來做一個服務來處理。所以微服務閘道器應運而生。其主要作用作為微服務體系裡面流量的唯一入口去做一些功能的實現。 微服務的閘道器擔當的主要職責可

Spring Cloud Alibaba | Nacos動態路由

Spring Cloud Alibaba | Gateway基於Nacos動態閘道器路由 本篇實戰所使用Spring有關版本: SpringBoot:2.1.7.RELEASE Spring Cloud:Greenwich.SR2 Spring CLoud Alibaba:2.1.0.RELEASE 前面

[Spring cloud 一步步實現廣告系統] 3. 路由

Zuul(Router and Filter) WIKI: 傳送門 作用 認證,鑑權(Authentication/Secur

SpringCloud進擊 | 五淺出:服務 - 路由(Zuul Router)【Finchley版本】

1.前言 上一節:SpringCloud進擊 | 四淺出:斷路器與容錯(Hystrix)【Finchley版本】 路由,微服務體系結構的一個組成部分,是 Netflix 基本 JVM 的路由器和服務端的負載均衡器。形象一點就是我們經常會看到的像請求路徑:/api/user 對映到使用

Spring Cloud Gateway 資料庫儲存路由資訊的擴充套件方案

動態路由背景 ​ 無論你在使用Zuul還是Spring Cloud Gateway 的時候,官方文件提供的方案總是基於配置檔案配置的方式 例如: # zuul 的配置形式 routes: pig-auth: path: /auth/** serviceId: pi

SpringCloud2.0 Zuul 路由 基礎教程(十)

1、啟動基礎工程 1.1、啟動【服務註冊中心】,工程名稱:springcloud-eureka-server 參考 SpringCloud2.0 Eureka Server 服務中心 基礎教程(二) 1.2、啟動【服務提供者】,工程名稱:springcloud-eureka-client

SpringCloud 服務路由規則的坑

一、場景簡述 筆者最近用到SpringCloud 服務閘道器的時候,進行服務閘道器的路由測試,發現無法路由自己設定的規則,測試的時候如下 通過錯誤排查發現,原來是路由規則寫錯了! 路由規則如下(錯誤) #埠 server: port: 8080 spring:

EIGRP:增強型內部路由選擇協議詳解

EIGRP:Ciso增強型內部閘道器路由選擇協議  EIGRP簡介:   Cisco私有; 無類別距離向量協議; 跨層封裝協議, 封裝於網路層--協議號88; 組播更新:224.0.0.10   支援非等開銷負載均衡

SpringCloud(九)zuul 路由與負載均衡

前言:        在前面的章節中,微服務架構中,每一個微服務都需要暴漏,不同的url,不同的埠,沒有一個統一的入口,這樣設計顯然不合理,閘道器的一個功能就是實現一個統一的入口,所有請求經過閘道器,然後閘道器統一代理到各個微服務,並且能實現負載均衡的功能。程式碼:工程構造如

SpringCloud-Gateway 路由、斷言、過濾

# Gateway 簡介 ## 是什麼? Spring Cloud 全家桶中有個很重要的元件:閘道器。在 1.x 版本中使用的是 Zuul 閘道器,但是到了 2.x,由於Zuul的升級不斷跳票,Spring Cloud 自己研發了一套閘道器元件:Spring Cloud Gateway。 Spring

⑤SpringCloud 實戰:引入Zuul元件,開啟路由

這是SpringCloud實戰系列中第4篇文章,瞭解前面第兩篇文章更有助於更好理解本文內容: [①SpringCloud 實戰:引入Eureka元件,完善服務治理](https://jinglingwang.cn/archives/eureka) [②SpringCloud 實戰:引入Feign元件,發起服務

⑥SpringCloud 實戰:引入gateway元件,開啟路由功能

這是SpringCloud實戰系列中第4篇文章,瞭解前面第兩篇文章更有助於更好理解本文內容: [①SpringCloud 實戰:引入Eureka元件,完善服務治理](https://jinglingwang.cn/archives/eureka) [②SpringCloud 實戰:引入Feign元件,發起服務

【.NET Core專案實戰-統一認證平臺】第四章 篇-資料庫儲存配置(2)

【.NET Core專案實戰-統一認證平臺】開篇及目錄索引 上篇文章我們介紹瞭如何擴充套件Ocelot閘道器,並實現資料庫儲存,然後測試了閘道器的路由功能,一切都是那麼順利,但是有一個問題未解決,就是如果閘道器配置資訊發生變更時如何生效?以及我使用其他資料庫儲存如何快速實現?本篇就這兩個問題展開講解,

kong DNS-based loadbalancing 配置

kong閘道器負載均衡配置方式分為DNS-based loadbalancing和Ring-balancer兩種,Ring-balancer方式的負載均衡配置之前已經介紹過------[Ring-balancer],今天這裡主要介紹基於DNS的負載均衡配置。 DNS-based load

【.NET Core專案實戰-統一認證平臺】第三章 篇-資料庫儲存配置(1)

原文: 【.NET Core專案實戰-統一認證平臺】第三章 閘道器篇-資料庫儲存配置(1) 【.NET Core專案實戰-統一認證平臺】開篇及目錄索引 本篇將介紹如何擴充套件Ocelot中介軟體實現自定義閘道器,並使用2種不同資料庫來演示Ocelot配置資訊儲存和動態更新功能,內容也是從實際設計出發

從ORACLE到SQL SERVER的透明的安裝和配置

最近專案中需要用到在ORACLE的儲存過程裡訪問SQL SERVER資料庫中的幾張表,就用到了DBLINK。這裡就寫幾個字記錄一下自己的配置步驟和遇到的坑: 第一步:準備 1:oracle資料庫 IP地址:10.201.81.13 ORACLE根目錄:D:\pr