1.2.1 • Published 8 months ago

@datatester/node-sdk v1.2.1

Weekly downloads
-
License
ISC
Repository
-
Last release
8 months ago

Datatester 分流 Node.js SDK

使用及说明

import AbClient from "@datatester/node-sdk";
// const AbClient = require('@datatester/node-sdk').default

(async () => {
  // 在rangers应用管理中查询token信息
  const abClient = new AbClient("token");

  // 因为返回的是promise,业务使用上需要自己处理reject行为
  try {
    const conf = await abClient.activate(
      "key",
      "decisionId",
      "trackId",
      new Map(),
      ""
    );
    // 获取key版本配置
    const config = conf.val;
  } catch (e) {
    console.error(e);
  }
})();

初始化参数

名词类型说明备注
tokenstringapp 级别的 token, 可以在 rangers 控制台应用列表中查询
metaHoststring获取 meta 数据服务 host, 默认为 AbClient.metaHost.cn
trackHoststring上报实验曝光数据, 默认为 AbClient.trackHost.cn
intervalnumber元数据更新间隔时间,单位秒,默认 60s
metaTypestring元数据类型, 可选值:'cdn', 'server', 'file'对文件读取一次,不会按照 interval 去更新数据
metaFilePathstring元数据文件本地路径,使用前确保应用对文件有可读权限metaType==='file'时候才生效
enableFileboolean开启日志文件保存
dirstring日志写入的文件路径, 默认为当前应用启动的根路径, 确保应用对路径有写路径enableFile=true 情况下日志写入路径,
maxSizestring文件最大值 https://github.com/iccicci/rotating-file-stream#size
levelstring需要记录的日志等级 可选值:'console','info', 'warn', 'error'
formatterfunction对日志做自定义格式化输出参数请参照 types/plugins/logger/TLog
trackMaxNumnumber一次上报的事件量个数,可选值 1-50,默认每 10 秒会自动上报一次,一次上报 50 条
UserAbInfoHandlerobject用户若需缓存相关功能,请实现此对象,包含查询和保存两个方法 | { query: (decisionId: string) => Promise; createOrUpdate: (decisionId: string, flight2VersionStr: string) => Promise; }

接口及参数

接口类型参照 types/type.d.ts

参数说明

  • 入参
参数类型说明
intervalnumber元数据获取时间间隔
experimentIdstring实验 id
decisionIdstring决策 ID, 分流口径, 和系统中设置的白名单数据行为一致
featureIdstringfeature flag id
trackIdstring上报数据唯一标识
attributesMap<string, any>分流的受众数据,和系统中设置的目标受众做比对
  • 返回值(TConfig)
参数类型说明
valstring元数据获取时间间隔
vidstring实验 id
entity_idstring决策 ID, 分流口径, 和系统中设置的白名单数据行为一致

接口说明

接口返回值说明
getExperimentVariantName(experimentId: string, decisionId: string, attributes: Map<string, any>, options?: TOptions)Promise<string>命中分流结果名称
getExperimentVariantNameWithImpression(experimentId: string, decisionId: string, trackId: string, attributes: Map<string, any>, options?: TOptions)Promise<string>命中分流结果名称并曝光实验信息
getExperimentConfigs(experimentId: string, decisionId: string, attributes: Map<string, any>, options?: TOptions)Promise<TConfig>命中分流结果配置信息
getExperimentConfigsWithImpression(experimentId: string, decisionId: string, trackId: string, attributes: Map<string, any>, options?: TOptions)Promise<TConfig>命中分流结果配置信息并曝光信息
getAllExperimentConfigs(decisionId: string, attributes: Map<string, any>, options?: TOptions)Promise<TConfig>获取 app 下所有实验命中分流结果配置
verifyFeatureEnabled(featureId: string, decisionId: string, attributes: Map<string, any>, options?: TOptions)Promise<boolean>检验 feature flag 是否命中
getFeatureConfigs(featureId: string, decisionId: string, attributes: Map<string, any>, options?: TOptions)Promise<TConfig>feature flag 分流结果配置
getFeatureConfigsWithImpression(featureId: string, decisionId: string, trackId: string, attributes: Map<string, any>, options?: TOptions)Promise<TConfig>feature flag 分流结果配置并曝光信息
getAllFeatureConfigs(decisionId: string, attributes: Map<string, any>, options?: TOptions)Promise<TConfig>命中的所有 feature flag 版本信息
getEnabledFeatureIds(decisionId: string, attributes: Map<string, any>, options?: TOptions)Promise<string[]>获取所有命中的 feature flag id
activate(variantKey: string, decisionId: string, trackId: string, attributes: Map<string, any>, defaultValue: unkown, options?: TOptions)Promise<{val: any}>根据 key 做分流,并上报实验信息; 返回逻辑:命中的实验信息 -> 命中的 feature flag 信息 -> 传入的默认值
close()void主动关闭所有元数据服务的 schedule job
setInterval(interval: number)void动态调整获取元数据的间隔时间

不同场景使用

自定义获取元数据和实验信息曝光地址

  • SaaS 服务不同区域的配置
import AbClient from '@datatester/node-sdk'

// metaHost
// cn: AbClient.metaHost.cn
// sg: AbClient.metaHost.sg
// va: AbClient.metaHost.va

// trackHost
// cn: AbClient.trackHost.cn
// sg: AbClient.trackHost.sg
// va: AbClient.trackHost.va

const abSdk = new AbClient('token', {
    trackHost: AbClient.trackHost.sg
    metaHost: AbClient.metaHost.sg
})
  • 私有化服务
import AbClient from '@datatester/node-sdk'
const abSdk = new AbClient('token', {
    trackHost: '' // 可访问到的上报http接口的host
    metaHost: ''// 可访问到的获取元数据http接口的host
})
  • 监听内部日志

    sdk 对外暴露了一个 EventEmitter 的实现,可以对 sdk 内部一些日志进行监听

// meta获取成功
abSdk.on("meta.success", (data) => {});
// meta获取失败
abSdk.on("meta.failure", (error) => {});
// ...
1.2.0

8 months ago

1.2.1

8 months ago

1.1.4-beta

3 years ago

1.1.4

3 years ago

1.1.3

3 years ago

1.1.2

3 years ago

1.1.1

4 years ago

1.1.0

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago

0.4.4

4 years ago

0.4.3

4 years ago

0.4.2

4 years ago

0.4.1

4 years ago

0.4.0

4 years ago