SpringCloud Gateway動態路由

2020-12-23 計算機java編程

概述

線上項目發布一般有以下幾種方案:

停機發布藍綠部署滾動部署灰度發布停機發布 這種發布一般在夜裡或者進行大版本升級的時候發布,因為需要停機,所以現在大家都在研究 Devops 方案。

藍綠部署需要準備兩個相同的環境。一個環境新版本,一個環境舊版本,通過負載均衡進行切換與回滾,目的是為了減少服務停止時間。

滾動部署就是在升級過程中,並不一下子啟動所有新版本,是先啟動一臺新版本,再停止一臺老版本,然後再啟動一臺新版本,再停止一臺老版本,直到升級完成。基於 k8s 的升級方案默認就是滾動部署。

灰度發布也叫金絲雀發布,灰度發布中,常常按照用戶設置路由權重,例如 90%的用戶維持使用老版本,10%的用戶嘗鮮新版本。不同版本應用共存,經常與 A/B 測試一起使用,用於測試選擇多種方案。

上邊介紹的幾種發布方案,主要是引出我們接下來介紹的 spring-cloud-gateway 動態路由,我們可以基於動態路由、負載均衡和策略加載去實現灰度發布。當然現在有很多開源的框架可以實現灰度發布,這裡只是研究學習。

動態路由

spring-cloud-gateway 默認將路由加載在內存中。具體可以參見 InMemoryRouteDefinitionRepository 類的實現。

這裡我們基於 Redis 實現動態路由。基礎項目見 spring-cloud-gateway 簡介

1. 將 actuator 的端點暴露出來

2. redis 配置

3. 將原內存路由持久化到 redis

4. 重寫動態路由服務

5. 對外暴露接口

測試

測試前刪除我們配置的靜態路由,因為靜態路由和 redis 動態路由同時存在時取併集。

1.訪問 ocalhost:2000/actuator/gateway/routes , 可以看到只有默認路由。

這個時候訪問 192.168.124.5:2000/idc-provider1/provider1/1 根據結果可以推測能正確路由到 provider1, 測試結果一致。

2.創建 provider1路由,將路徑設置為 /p1/**,測試是否生效。

POST請求 localhost:2000/gateway/add

查看 redis 存儲,或者請求

localhost:2000/actuator/gateway/routes

, 都可以看到配置成功。

訪問

curl localhost:2000/p1/provider1/1

結果輸出 2001,與期望一致。

由此可見動態路由已經生效。

結語

本文到此結束。感興趣的小夥伴後續可以通過加載配置文件,基於權重進行灰度。

相關焦點

  • Spring Cloud Gateway實現Token校驗
    GatewayFilter Factories路由過濾器允許以某種方式修改輸入的HTTP請求或輸出的HTTP響應。路由過濾器適用於特定路由。Spring Cloud Gateway包括許多內置的GatewayFilter工廠。3.1.1.
  • springcloud的五大組件
    在介紹springcloud五大組件之前,先帶大家了解一下springcloud是什麼。Spring Cloud是一種最常見的分布式系統模式,為開發者提供了一種簡單並且易於接受的編程模型,幫助開發人員構建有彈性的、可靠的、協調的程序軟體,輕鬆實現微服務項目的構建,springcloud由五大組件組成!
  • 基於SpringBoot Cloud構建的一個商城項目源碼分享
    基於springboot cloud構建的一個商城項目,包括前端,後端和h5應用,小程序,作為zscat應用實踐的模板項目。基於SpringBoot2.x、SpringCloud和SpringCloudAlibaba並採用前後端分離的企業級微服務敏捷開發系統架構。
  • Spring Cloud 和 Dubbo,到底用哪個好?
    從公司整體規劃:我不會選擇很久沒人維護的dubbo,重啟之後也未必是原班人馬從程式設計師招聘難度:招springcloud的程式設計師會更好招,因為更新更炫從系統結構簡易程序:springcloud的系統結構更簡單
  • 從零搭建 Spring Cloud 服務(超詳細)
    SpringCloud官網:https://spring.io/projects/spring-cloud(個人建議是用谷歌瀏覽器訪問官網打開中文翻譯粗略把官網讀一遍)把 Spring 全家桶相關的文章整理成了 PDF,關注微信公眾號 Java後端,回復 666 下載這個技術棧手冊。
  • springcloud五大組件
    首先我們來看springcloud是什麼?它是微服務架構集大成者,基於springboot構建,可以將一系列優秀組件進行完美整合。對熟悉的程式設計師來說,上手不麻煩,對新手來說,就需要了解springcloud架構再去學習。
  • 詳解SpringCloud中RabbitMQ消息隊列原理及配置,一篇就夠!
    rabbitmq已經被spring-boot做了整合訪問實現。spring cloud也對springboot做了整合邏輯。所以rabbitmq的依賴可以在spring cloud中直接使用。mq.config.exchange=log.direct# 路由鍵, 是定義某一個路由鍵。info級別日誌使用的queue的路由鍵。mq.config.queue.info.routing.key=log.info.routing.key# 路由鍵,error級別日誌使用的queue的路由鍵。
  • Spring Cloud學習筆記——Feign的簡單實現和基本原理
    基於spring-cloud-base-demo創建。在pom.xml中添加eureka-client依賴,如下:也是基於Spring-cloud-base-demo創建。在pom.xml添加eureka-client和feign的依賴,如下:
  • springcloud的五大組件是什麼?讀完這篇就懂了
    概括而言,springcloud的五大組件包括Netflix Eurek,Netflix Ribbon,Netflix Hystrix,Netflix Zuul和Spring Cloud Config。
  • vk-uni-cloud-router v1.6.2 發布,uniCloud 雲函數路由框架
    vk-uni-cloud-router v1.6.2 已經發布。
  • 什麼是Spring Cloud項目,我把它講清楚了
    01微服務講起springcloud之前,我們需要了解一下什麼是微服務。學任何東西都先訪問官方文檔,我們先訪問SpringCloud官方文檔:https://spring.io/projects/spring-cloud/Spring Cloud為開發人員提供了工具,以快速構建分布式系統中的一些常見模式(例如,配置管理,服務發現,斷路器,智能路由,微代理,控制總線,一次性令牌,全局鎖,領導選舉
  • Spring全家桶、Dubbo、分布式、消息隊列後端必備全套開源項目
    《Spring Cloud Alibaba 服務調用 Dubbo 入門》 對應 labx-07-spring-cloud-alibaba-dubbo《Spring Cloud Alibaba 服務容錯 Sentinel 入門》 對應 labx-04-spring-cloud-alibaba-sentinel
  • SpringCloud服務間通信方式
    總結:在springcloud中服務間調用方式主要是使用 http restful方式進行服務間調用1|0 1.說明spring框架提供的RestTemplate類可用於在應用中調用rest服務,它簡化了與http服務的通信方式,統一了RESTful的標準,封裝了http連結, 我們只需要傳入url及返回值類型即可。相較於之前常用的HttpClient,RestTemplate是一種更優雅的調用RESTful服務的方式。
  • 雲原生時代的流量入口:Envoy Gateway
    動態配置 API。提供健壯的管控代理行為的接口,實現 Envoy 動態配置熱更新。可觀察性設計。提供七層流量高可觀察性,原生支持分布式追蹤。支持熱重啟。可實現 Envoy 的無縫升級。自定義插件能力。Lua 與多語言擴展沙箱 WebAssembly。
  • 小姜學網絡(動態路由協議RIP的配置)
    >ruijie(config-router)#no version關於RIP版本:(1)RIPv1:使用廣播方式發送路由更新報文,不支持VLSM,在更新報文中不帶子網掩碼,為有類路由協議,不支持認證,不支持路由自動匯總功能。
  • 使用start.aliyun.com ,極速構建 Spring Cloud 應用
    本文,圍繞 spring initializr 框架,以 start.spring.io 為例,全面的給大家介紹如何使用和擴展這個框架,以及背後的運行原理。整個架構大量使用了 spring 的 spi 機制,我們來看一下一共有哪些 spring.factories :initializr-generator/src/main/resources/META-INF/spring.factoriesinitializr-generator-spring/src/main/resources/META-INF/spring.factoriesinitializr-web
  • 38華為技術:詳解配置路由器RIP動態路由
    38華為技術:詳解配置路由器RIP動態路由 2020-12-07 19:46
  • gateway筆記本多少錢 gateway筆記本價格大全(熱門款式)
    今天小編就為您帶來gateway筆記本電腦的熱 門 款式的報價以及簡單介紹。     Gateway NV4429c  這款gateway筆記本電腦是2010年推出的,如今價格為4999元。在存儲方面,這款gateway筆記本電腦配備了2GB的運行內存與320GB的硬碟空間,這兩者的配置實際上是十分低的。顯卡方面,作為一款定位於全能學生本的gateway筆記本電腦,它並沒有配置獨立顯卡,配置的是一款Intel GMA X4500集成顯卡,這款集成顯卡的性能也是十分落後的。
  • Fizz Gateway 1.3.0 發布,全新的服務發現、服務編排、反向代理...
    優化路由管理模塊,支持服務發現、服務編排、反向代理三種模式,支持正則表達式匹配 支持服務編排的步驟非必填
  • 幾個SpringCloud常見面試題及答案
    同步通信:dobbo通過 RPC 遠程過程調用、springcloud通過 REST 接口json調用 等。 異步:消息隊列,如:RabbitMq、ActiveM、Kafka 等。 3.SpringCloud 和 Dubbo 有哪些區別?