Env Navigator項目設計
Env Navigator項目
定位: 用于管理企業內部系統與環境相關的配置, 還可以做到流量調控. 和通用的配置系統不同的是, 本系統專注于多環境下的環境相關的配置, 同時提供一個集中化的規則引擎, 無需每個客戶端增加切換環境的邏輯.
架構: SpringBoot web應用, 配置信息存儲在 DB 中, 如果需要更高性能, 可以增加 Redis 緩存.
核心系統升級上線要求:
1. 核心系統新版 Production 上線之前, 需要一個 Pilot 測試, 需要有 Pilot 環境
2. 核心系統上線過程中, 需要保證系統不停機, 往往需要A/B兩套環境
這樣運行環境就有4套, 見下圖.

項目背景: 所有接入核心系統的客戶端或其他服務, 需要配合核心系統作上線之前的 pilot 運行, 接入 pilot 的范圍要做精細化管控, 不能太多, 畢竟是上線前的試運行, 又不能太少, 否則就不能在試運行期間發現問題. 每次升版因為改動不同, 可能需要調整接入客戶端范圍.
在這種要求下, 每個客戶端或調用方如果都增加這樣的環境切換邏輯, 成本太高, 就算加好了, 如何確保所有客戶端能同時變更環境配置也非常困難.
Env Navigator項目應運而生.
使用場景:
1. 集中調控客戶端按需接入 Pilot/Production 環境.
2. 支持滾動升級, 比如Pilot環境, 需要從1.0升級到2.0, 可以先將 Pilot_A 流量關掉, 完成升級, 然后將 Pilot_A 開啟, 然后將 Pilot_B完成升級.
3. 流量分攤. 升級完成后, A/B兩套環境, 可以作 Load Balance.
4. 如果核心系統升級, 引起接口不兼容, 可以通過本系統強制客戶端完成對應的升級.
ER 模型:
Service 表 , 定義 Service, 并設定未知客戶端將被分配到哪個環境中

Client 表, 定義 Client 端

ServiceDos 表, 指定拒絕客戶端的策略

Resource表, 用于存儲具體的Resource value

NavPolicy表, 存儲客戶端選擇Env Level的策略, 下面設計是client和serviceId直接建立關系, 也可以抽象成client到 serviceGroup建立關系,

Env 表, Env定義和流量控制策略

客戶端使用方法:
客戶端在每次使用服務端接口時候, 先從Env Navigator系統, 獲取目標服務端的Resource取值, 比如獲取目標服務端的網關 url, 當然, 客戶端需要提交下面的信息,


浙公網安備 33010602011771號