zoukankan      html  css  js  c++  java
  • 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, 当然, 客户端需要提交下面的信息,

  • 相关阅读:
    mktemp -t -d用法
    使用getopts处理输入参数
    linux中$1的意思
    linux中的set -e 与set -o pipefail
    在windows 7 和linux上安装xlwt和xlrd
    nginx map使用方法
    Linux crontab下关于使用date命令和sudo命令的坑
    东哥讲义
    ldapsearch使用
    date 命令之日期和秒数转换
  • 原文地址:https://www.cnblogs.com/harrychinese/p/env_navigator.html
Copyright © 2011-2022 走看看