You need to enable JavaScript to run this app.
导航
分流 agent
最近更新时间:2024.07.31 12:01:37首次发布时间:2023.06.09 16:02:39

1. 使用方式
  1. agent为docker镜像,需要部署到业务环境
  2. 通过http接口访问,获取分流结果
  3. 支持服务端SDK的主要功能

2. 服务部署
  1. 下载镜像,当前agent版本:v1.0.3

saas

datatester-docker-agent_v1.0.3.tar.gz
40.72MB

私有化
datatester-docker-agent-onpremise_v1.0.3.tar.gz
40.72MB

  1. 安装docker
  2. 启动服务
  3. 加载镜像
# 加载镜像
docker  load -i datatester-docker-agent*.tar.gz
# 查询load的镜像id
docker  images

图片

  1. 运行

saas

docker run -p {宿主机端口}:6789 {镜像id} {appKey} {metaInterval} {region}
所有参数都是必选,其中appkey:
在集团中接入一个应用后,您可以在集团相关页面查看应用的AppKey等信息,详情请参考:如何创建应用

  • SaaS-云原生
    图片
  • SaaS-非云原生
    图片

说明

1、宿主机端口根据业务需要进行配置
2、镜像id替换为实际的id,参照示例图片中的c8323aee9721
3、为了获取appKey,您需要在火山引擎A/B平台进行接入,并于"集团设置-应用列表-应用ID"处获取appKey
4、metaInterval为拉取元数据的时间间隔,单位为秒,建议设置为60秒
5、region区分国内和海外环境,国内为CN,海外为SG

示例:

  • docker run -p 6789:6789 380b4fc3dcf0 3ac7ff2fad9d005f97857596a9078 60 CN
  • docker run -p 6789:6789 380b4fc3dcf0 3ac7ff2fad9d005f97857596a9078 20 CN
  • docker run -p 6789:6789 380b4fc3dcf0 65877c795467314d04d9fa0ee33 60 SG

私有化

  • docker run -p {宿主机端口}:6789 {镜像id} {appKey} {metaInterval} {productHost} {eventHost}

所有参数都是必选,其中appkey:
在开始集成前,首先需要在集团中接入一个项目及应用,进行SDK集成前,您需要获取对应应用的appid、appkey等信息。
私有化场景下您可以在「全局设置」->「系统设置」->「集团设置」-> 「项目列表」中查看项目详情,可查看其中的appid、appkey等信息,详情请参见集团设置
图片

说明

1、宿主机端口根据业务需要进行配置
2、镜像id替换为实际的id,参照示例图片中的c8323aee9721
3、metaInterval为拉取元数据的时间间隔,单位为秒,建议设置为60秒
4、私有化部署时会有产品域名和上报域名,productHost替换为产品域名,eventHost替换为上报域名

示例:

  • docker run -p 6789:6789 380b4fc3dcf0 7857596a9078f97857596a907 60 http://product.cc https://product.com
  • docker run -p 6789:6789 380b4fc3dcf0 7857596a9078f97857596a907 20 http://product.cc https://product.com

3. 接口描述

3.1 健康检查接口

接口:/ping
方法: GET
描述:健康检查
请求参数:无
返回值:固定值

{
    "message": "pong"
}

注意

除健康检查接口外,其余所有接口都是HTTP POST

3.2 activate

接口:/activate
描述: 获取特定key的分流结果,并上报曝光事件
请求参数:

{
    "variant_key": "variantKey", // 特定的key, 即实验中配置的参数名
    "decision_id": "decisionID", // 本地分流用户标识,不用于事件上报,请替换为客户的真实用户标识
    "track_id": "uuid", // 事件上报用户标识,用于事件上报,请替换为客户的真实用户标识
    "attributes": {      // 用户属性,仅用于分流,不随埋点上报
        "name": "user_name",
        "age": 20,
        "is_android": true,
        "pay": 123.456
    }
}

返回值: 返回命中变体对象

// 未命中
{
    "data": {},
    "code": 200,
    "message": ""
}
// variant_key="string"
{
    "data": {
        "string": {
            "val": "bbb",
            "vid": "23357"
        }
    },
    "code": 200,
    "message": ""
}
// variant_key="number"
{
    "data": {
        "number": {
            "val": 456,
            "vid": "23357"
        }
    },
    "code": 200,
    "message": ""
}
// variant_key="boolean"
{
    "data": {
        "boolean": {
            "val": false,
            "vid": "23357"
        }
    },
    "code": 200,
    "message": ""
}
// variant_key="json"
{
    "data": {
        "json": {
            "val": {
                "count": 2,
                "ver": "b"
            },
            "vid": "23357"
        }
    },
    "code": 200,
    "message": ""
}
// 参数错误  code为203,message为错误信息
{
    "data": {},
    "code": 203,
    "message": "variant_key is empty"
}
// 其他错误  code为205,message为错误信息
{
    "data": {},
    "code": 205,
    "message": "xxxx"
}

说明

1、该接口与所有含有“WithImpression”字样的接口均会自动上报曝光事件
2、variant_key、decision_id、track_id必选

3.3 getExperimentConfigs

接口:/getExperimentConfigs
描述: 获取用户命中的特定实验的变体详情
请求参数:

{
    "decision_id": "decisionID", // 本地分流用户标识,不用于事件上报,请替换为客户的真实用户标识
    "track_id": "uuid", // 事件上报用户标识,用于事件上报,请替换为客户的真实用户标识
    "attributes": {      // 用户属性,仅用于分流,不随埋点上报
        "name": "user_name",
        "age": 20,
        "is_android": true,
        "pay": 123.456
    },
    "experiment_id": "123456" // 特定实验的id
}

返回值: 返回命中变体的对象,表明用户命中某个实验的变体详情,通常仅能命中一个变体。

// 未命中实验
{
    "data": {},
    "code": 200,
    "message": ""
}
// 命中实验
{
    "data": {
        "number": {
            "val": 456,
            "vid": "23357"
        },
        "boolean": {
            "val": false,
            "vid": "23357"
        },
        "string": {
            "val": "bbb",
            "vid": "23357"
        },
        "json": {
            "val": {
                "count": 2,
                "ver": "b"
            },
            "vid": "23357"
        }
    },
    "code": 200,
    "message": ""
}
// 参数错误  code为203,message为错误信息
{
    "data": {},
    "code": 203,
    "message": "experiment_id is empty"
}
// 其他错误  code为205,message为错误信息
{
    "data": {},
    "code": 205,
    "message": "failed to find experiment[333333]"
}

3.4 getExperimentConfigsWithImpression

接口:/getExperimentConfigsWithImpression
请求响应与接口“getExperimentConfigs”相同,会自动上报曝光事件

3.5 getAllExperimentConfigs

接口:/getAllExperimentConfigs
描述: 获取用户命中的所有实验的变体详情
请求参数:

{
    "decision_id": "decisionID", // 本地分流用户标识,不用于事件上报,请替换为客户的真实用户标识
    "attributes": {      // 用户属性,仅用于分流,不随埋点上报
        "name": "user_name",
        "age": 20,
        "is_android": true,
        "pay": 123.456
    }
}

返回值: 返回命中变体详情,通常命中多个变体。

// 未命中实验
{
    "data": {},
    "code": 200,
    "message": ""
}
// 命中
{
    "data": {
        "number": {
            "val": 456,
            "vid": "23357"
        },
        "boolean": {
            "val": false,
            "vid": "23357"
        },
        "string": {
            "val": "bbb",
            "vid": "23357"
        },
        "json": {
            "val": {
                "count": 2,
                "ver": "b"
            },
            "vid": "23357"
        },
        "config": {
            "val": "off",
            "vid": "23361"
        }
    },
    "code": 200,
    "message": ""
}
// 参数错误  code为203,message为错误信息
{
    "data": {},
    "code": 203,
    "message": "decision_id is empty"
}
// 其他错误  code为205,message为错误信息
{
    "data": {},
    "code": 205,
    "message": "xxxxx"
}

3.6 getFeatureConfigs

接口:/getFeatureConfigs
描述: 获取用户命中的特定feature的变体详情
请求参数:

{
    "decision_id": "decisionID", // 本地分流用户标识,不用于事件上报,请替换为客户的真实用户标识
    "track_id": "uuid", // 事件上报用户标识,用于事件上报,请替换为客户的真实用户标识
    "attributes": {      // 用户属性,仅用于分流,不随埋点上报
        "name": "user_name",
        "age": 20,
        "is_android": true,
        "pay": 123.456
    },
    "feature_id": "123456" // 特定feature的id
}

返回值: 返回命中变体的对象,表明用户命中某个feature的变体详情,通常仅能命中一个变体。

// 未命中
{
    "data": {},
    "code": 200,
    "message": ""
}
// 命中ff
{
    "data": {
        "feature_str": {
            "val": "false",
            "vid": "20000044"
        }
    },
    "code": 200,
    "message": ""
}
// 命中ff
{
    "data": {
        "feature_key_number": {
            "val": 3,
            "vid": "20000058"
        }
    },
    "code": 200,
    "message": ""
}
// 参数错误  code为203,message为错误信息
{
    "data": {},
    "code": 203,
    "message": "feature_id is empty"
}
// 其他错误  code为205,message为错误信息
{
    "data": {},
    "code": 205,
    "message": "failed to find feature[333333]"
}

3.7 getFeatureConfigsWithImpression

接口:/getFeatureConfigsWithImpression
请求响应与接口“getFeatureConfigs”相同,会自动上报曝光事件

3.8 getAllFeatureConfigs

接口:/getAllFeatureConfigs
描述: 获取用户命中的所有feature的变体详情
请求参数:

{
    "decision_id": "decisionID", // 本地分流用户标识,不用于事件上报,请替换为客户的真实用户标识
    "attributes": {      // 用户属性,仅用于分流,不随埋点上报
        "name": "user_name",
        "age": 20,
        "is_android": true,
        "pay": 123.456
    }
}

返回值: 返回命中变体详情,通常命中多个变体。

// 未命中
{
    "data": {},
    "code": 200,
    "message": ""
}
// 命中
{
    "data": {
        "feature_str": {
            "val": "false",
            "vid": "20000044"
        },
        "feature_key_number": {
            "val": 1,
            "vid": "20000056"
        }
    },
    "code": 200,
    "message": ""
}
// 参数错误  code为203,message为错误信息
{
    "data": {},
    "code": 203,
    "message": "decision_id is empty"
}
// 其他错误  code为205,message为错误信息
{
    "data": {},
    "code": 205,
    "message": "xxxxx"
}

4. 其他

使用场景

agent为单节点,性能相当于单个服务端SDK,建议仅在试用阶段、请求量相对较小的场景下使用,大流量接入场景下还是优先使用服务端SDK。