栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

GrayScale灰度切量系统 【AB测试】

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

GrayScale灰度切量系统 【AB测试】

AB测试中的痛点

新功能上线,产品要求按照规则进行AB测试,但是规则随着业务的推进不断变化(上线前也无法完全确定)。例如:第一天要求产品价格>100的走A场景,第二天要求:在上午10到下午18之前的走B场景,第三天要求产品编码为(1001,1002,1003)的走A场景… 传统方案:修改规则后发版,这就导致开发工作量增加,频繁上线,时效性也很差。 在这种情况下GrayScale 应运而生…

介绍
com-grayscale-annotation  (注解模块,快速下线是使用)
com-grayscale-client  (客户端demo 依赖 com-grayscale-annotation )
com-grayscale-core     (核心模块依赖 com-grayscale-annotation )
com-grayscale-dashboard (控制台,服务查看,规则配置)

GrayScale是一套轻量、高可用、配置友好的灰度程序管理器,内置20多个常用规则,用户可以按照业务场景快速开发自己的规则,离线模式满足高并发场景的需求。在实际业务场景中针对AB测试,开发一个B方法。并使用GrayScale的注解为A方法指定切量方法B,GrayScale会更具用户自定义的规则来选择执行A方法还是B方法 ,目前,GrayScale定义了3个维度的规则,服务全局开关、方法开关、方法规则 。

功能架构

提供标准规则库,用户可按照需求扩展提供Dashboard,查看服务和规则、动态配置规则,自动同步到在线节点高可用支持:规则本地持久化,规则变更后通过zookeeper监听机制动态刷新本地缓存,支持开启离线模式(直接本地获取规则不连接zk)使用简单,快速接入,代码O侵入(只需一个注解+一个配置),支持更换jar包快速下线,无需修改业务代码 技术架构

如何接入? 第一步:准备zk集群

搭建好zk集群,GrayScale在zk集群中使用的根目录为 grayscale,接入请确保该目录没有被占用

第二步:Dashboard下载和启动

指定zk地址
– grayscale.zookeeper.connect-url 指定zookeeper地址.

java -jar com-grayscale-dashboard-1.0.jar grayscale.zookeeper.connect-url=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183

配置参数详解

user.username 登录名(默认:admin)
user.password: 密码(默认:123456)
grayscale.clientRegister 是否注册服务(false)控制台不注册
grayscale.zookeeper.connect-url zk集群地址(默认:127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183)

启动后访问地址: http://localhost:8888/index.html

功能预览
登录

首页

服务列表

接口服务列表

接口服务规则

接口服务规则配置

规则列表

第二步:服务接入

引入maven支持:打包com-grayscale-core (上传到自己的私服,可根据项目情况调整依赖jar版本)


  com.grayscale.core
  com-grayscale-core
  1.0
  

参数配置

# 必须参数
server.port  服务端口 (默认8080)
spring.application.name 服务编码
spring.application.code 服务名称
grayscale.zookeeper.connect-url zk地址
grayscale.offlinePath 本地配置信息路劲(默认/grayscale/${spring.application.code})
grayscale.offlineMode 是否开启离线模式(默认false)

– 配置切量方法

@Service
public class Server1Impl implements Server1 {

 @Override
 
 @GrayScaleFunction
 public void sFunction1(String productCode, String userId, double price, PamsVo pamsVo) {
   System.out.println("sFunction1=不切量");
 }

 @Override
 public void sFunction1GrayScale(String productCode, String userId, double price, PamsVo pamsVo){
   System.out.println("sFunction1GrayScale=切量");
 }

}
第三步:实例

参考:https://gitee.com/wenwang2000/grayscale

服务下线

服务快速下线:

一、把core替换成annotation 无需修改业务代码,摘除grayscale

二、关闭grayscale.zookeeper.connect-url(如项目不再需要zk)等配置

 
  com.grayscale.core
  com-grayscale-annotation
  1.0
  
2.0 规划

扩展更多规则库增加数据统计功能

说明:

由于作者时间有限,后期项目升级,博客内容未必能同步更新,请参考gitee开源项目 :grayscale如果你喜欢该项目、或该项目对你有用,请在gitee上 给个start有兴趣的同学 ,如果你有新的想法 可以联系我一起维护

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/760375.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号