标签:系统 环境 Env 设计 Navigator 客户端 Pilot
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的策略
Env 表, Env定义和流量控制策略
客户端使用方法:
客户端在每次使用服务端接口时候, 先从Env Navigator系统, 获取目标服务端的Resource取值, 比如获取目标服务端的网关 url, 当然, 客户端需要提交下面的信息,
标签:系统,环境,Env,设计,Navigator,客户端,Pilot 来源: https://www.cnblogs.com/harrychinese/p/env_navigator.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。