# easy-gray **Repository Path**: swmswm/easy-gray ## Basic Information - **Project Name**: easy-gray - **Description**: 分布式环境,后端微服务灰度解决方案 - **Primary Language**: Java - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 7 - **Created**: 2022-11-07 - **Last Updated**: 2022-11-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ![](doc/img/log.gif) # 1. 介绍 此项目是一款通用的灰度发布服务组件; ## 1.1 可以用于解决的问题 ### 案例1: 开发过程中,往往多个任务并行,并且一个项目可能由多人进行维护; 如果同时部署到QA环境,不仅会产生代码冲突、还有可能因为业务的关联性,导致与预想结果不符合; 注:核心解决的问题是这个,往大了搞,可以整一个灰度环境,用于灰度测试 ### 案例2: 系统由多个版本,例如:公测版、内测版、开发版、稳定版; 他们之间的差异可能很小,可能仅有1个服务不一样,那么我们没有必要每个版本都整一套全服务的环境;那样成本过高; 灰度环境即可解决这个问题,根据修复的内容,新增相应的业务服务即可,携带业务环境变量那就走业务服务,不携带那就走公共的; # 2. 快速开始 ## 2.1 环境准备 - nacos-server 环境搭建可参见:[docker 部署nacos](https://github.com/haopenge/interview/blob/master/docker/nacos-docker-2.0.2/README_ZH.md) - nacos配置---新增命名空间 新增命名空间:qa ,记录命名空间id - nacos配置---新增commom.yaml 配置 ```yaml #开放灰度的环境 gray: enable: true env_list: qa,online #灰度环境 log: level: error #rocket-mq ip rocket-mq: ip: 12138 ``` - host更改 本地host新增一行:(ip 根据实际nacos 地址更改) ```shell # easy-gray nacos定义 127.0.0.1 nacos.easy.cn ``` ## 2.2 项目配置更改 本服务jar包目前仓库地址配置如下: ```xml rdc-snapshots https://repo.rdc.aliyun.com/repository/139501-snapshot-yAmm21/ ``` spring-cloud-gateway api网关中引入如下 jar: ```xml com.easy easy-gray-gateway 0.0.3-SNAPSHOT ``` 参见演示项目`easy-gray-gateway-api` spring-boot-web 类服务中引入如下jar: ```xml com.easy easy-gray-core 0.0.19-SNAPSHOT ``` 参见演示项目: `easy-gray-consumer`、`easy-gray-provider-one`、`easy-gray-provider-two` ; ## 2.3 示例项目运行 同时启动`easy-gray-consumer`、`easy-gray-provider-one`、`easy-gray-provider-two`项目; 携带环境变量访问: ```shell curl --request GET \ --url http://localhost:10080/eat/apple \ --header 'content-type: multipart/form-data' # 结果 provider: 我吃了 苹果 on 10001 provider: 我吃了 苹果 on 10001 provider: 我吃了 苹果 on 10001 ``` 不携带环境变量访问: ```shell curl --request GET \ --url http://localhost:10080/eat/apple \ --header 'content-type: multipart/form-data' \ --header 'pod_env: EASY-12138' # 结果 provider: 我吃了 苹果 on 10001 provider: 我吃了 苹果 on 10002 provider: 我吃了 苹果 on 10001 provider: 我吃了 苹果 on 10002 provider: 我吃了 苹果 on 10001 ``` # 3. 文档 [**实现原理-eureka-ribbon版**](doc/实现原理-eureka-ribbon版.md) [**admin管理后台接口文档**](https://console-docs.apipost.cn/preview/a02138bb162545c3/d3b1ac7dc543eacf) # 4. mr规范 commit格式:`type: ${decription}` ```shell #示例 feat: 初始化项目 ``` ## type类型 - build:影响生成系统或外部依赖性的更改 - ci: 更改 CI 配置文件和脚本 - feat: 新功能(feature) - fix: 修补 bug - perf: 提高性能的代码更改 - docs: 文档(documentation) - style: 不影响代码含义的更改(不影响代码运行的变动) - refactor: 代码修改既不修复错误,也不添加特征(即不是新增功能,也不是修改 bug 的代码变动) - test: 添加缺失测试或纠正现有测试 - revert: 撤回 # 5. 版本功能 ## 5.1 版本号对应关系 | 本项目版本 | spring-cloud版本 | spring-boot版本 | |--| --- |---------------| | 0.0.1 | 3.1.1 | 2.6.3 | ## 5.2 计划上线: - 0.0.2版计划功能 | 功能 | 进度 | |-------------------------|--| | spring-cloud-gateway 集成 | 已完成✅| | spring-mvc 集成 | 已完成✅| | 管理后台-表结构设计 | 进行中🚀| | 管理后台-api | 进行中🚀| | 管理后台-git版本获取 | 进行中🚀| | 管理后台-服务管理ssh | 规划中 📚| 0.0.1版: - 基于nacos配置、注册中心的核心完成;