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, 当然, 客户端需要提交下面的信息,

 

posted @   harrychinese  阅读(36)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2013-06-20 记一个奇怪的python异常处理过程
点击右上角即可分享
微信分享提示