littlebot
Published on 2025-04-11 / 4 Visits
0

【源码】基于Go语言的业务接口灰度发布策略管理模块

项目简介

本项目是基于Go语言开发的模块,用于实现业务接口的灰度发布策略。灰度发布作为软件发布策略,可在正式环境前对新功能或更新进行测试,保障新功能在真实环境中的稳定运行。项目通过HTTP接口完成灰度策略的配置与查询,依据灰度策略决定请求的路由方向。

项目的主要特性和功能

  1. 灰度策略配置格式设计:采用JSON格式配置灰度策略,可方便定义不同业务接口的灰度规则。每个应用有多种业务接口,各业务接口可能有多个放量规则,每个放量策略由多个维度匹配规则构成。
  2. 仓库接口定义:定义了Repository接口,用于获取和更新灰度策略,可根据实际存储方式(如数据库、文件等)实现该接口。
  3. 灰度策略管理:初始化AppGrey实例并传入自定义的配置获取接口实现,可实现灰度策略的动态刷新。
  4. 灰度流量判定:使用AppGrey实例的Match方法,可判断请求是否为灰度请求,并根据匹配规则返回对应的主机和端口,便于将请求路由至正确环境。
  5. 示例DEMO:提供简单的业务处理系统使用示例,模拟网关和两个服务端场景,展示模块对灰度流量的转发功能。

安装使用步骤

前提条件

假设用户已经下载了本项目的源码文件,且系统已配置好Go语言开发环境。

具体步骤

  1. 实现appgrey.Repository接口:因不同应用的配置管理实现方式不同,使用模块前需先实现appgrey.Repository接口,其定义如下: go type Repository interface { // 查询 灰度放量策略, 返回其配置的 json 字符串 或 error GetAppGreyStrategy() (string, error) }
  2. 初始化AppGrey实例appgrey.AppGrey为全局变量,默认未初始化,未初始化时调用其Match方法将返回false。初始化完成后,appgrey.AppGrey会自动启动一个ticker按指定时间自动重新获取配置,实现动态刷新。在应用启动时调用一次初始化方法,示例如下: go func main() { //... // 初始化 只需在应用启动时调用一次, 传入 自定义的配置获取接口 实现,指定多久自动重新获取一次配置 if err := AppGrey.Initialize(&AppGreyRepositoryExample{}, time.Second * 5); err!= nil { fmt.Printf("AppGrey initialize failed: %v\n", err) // 初始化异常应用自行处理 } //... }
  3. 使用AppGrey判定灰度流量:调用Match方法判断请求是否为灰度请求,示例如下: go // 开始进行 某类业务接口的 灰度维度数据 匹配,判断是否为一个灰度流量 isGreyFlow, host, port := AppGrey.Match(OnlineJsonDirect, map[ApiGreyDimension]string{ // 在处理某类业务接口请求时,解析相关的维度数据, 对于 OnlineJsonDirect 的两个灰度规则, 命中第一个 Version: "v1", StoreId: "SID000002", InsCode: "INS0001xx", })
  4. 运行样例DEMO
    • 在Windows系统开启三个命令行分别执行如下命令: shell app-grey-demo -gateway app-grey-demo -server -port 8081 app-grey-demo -server -port 8082
    • 打开POSTMAN,导入app-grey-demo.postman_collection.json文件,可调整参数和更新灰度放量策略配置进行测试:
      • GET http://localhost:8080/grey/strategy/json:查看应用当前的灰度放量策略配置。
      • PUT http://localhost:8080/grey/strategy/json:更新应用当前的灰度放量策略配置。
      • GET http://localhost:8080/api/v1/business/online-json-direct:测试online-json-direct的业务接口灰度放量策略。
      • GET http://localhost:8080/api/v1/business/online-json-indirect:测试online-json-indirect的业务接口灰度放量策略。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】