SDK 选型
ABetterChoice 通过三种接入形态暴露同一套实验与开关。在写代码前先挑一种 —— 之后也可以切换形态, 不用重建项目(同一个项目 ID、同一把 API key、同一组实验)。
一图速览
| 形态 | 运行位置 | 时延 | 适合场景 |
|---|---|---|---|
| 服务端 SDK | 你的后端进程内 | 亚毫秒(本地求值) | 受信运行时、高 QPS、希望调用零网络往返。 |
| 客户端 SDK | 移动端 App、Web 页面 | 启动一次网络调用,后续本地 | 不受信运行时,希望分组与终端用户绑定。 |
| HTTP API | 任何能签名并发起请求的环境 | 每次调用一个网络往返 | 没有 SDK,或只需偶尔 / 批量调用。 |
服务端 SDK 与 HTTP API 中目前只有两种正式可用的接入:Go 服务端 SDK 与 HTTP API。 C++ 服务端 SDK 和三种客户端 SDK(Android、iOS、JavaScript)在 Settings → SDK&Key 下都标着 Coming soon。
服务端 SDK
适合下列场景:
- 进程跑在你控制的基础设施上,API token 永不出服务器;
- 希望在分组热路径上零网络调用 —— SDK 把配置缓存在内存里,每隔几秒后台轮询;
- 你能为该 SDK 部署并管理一个长生命周期的进程。
SDK 每 3 秒拉取一次配置,本地求值。完整生命周期见 服务端 SDK 概览。
今天可用:Go 已正式上线; C++ 在 Settings → SDK&Key 下标记为 Coming soon,如需提前 接入请联系支持。
客户端 SDK
适合下列场景:
- 分组在用户的设备或浏览器中执行;
- 希望应用启动时一次 HTTP 调用,后续热路径零调用;
- 你接受把 API token(或公开作用域的变体)打进用户能解开的二进制里。
客户端 SDK 读取的是平台预计算好的结果。完整生命周期见 客户端 SDK 概览。
今天三个客户端 SDK(Android、iOS、JavaScript)在 Settings → SDK&Key 下都是 Coming soon。 如需提前接入,请联系支持;语言专属页面已经描述了接入形态,便于你提前规划。
HTTP API
适合下列场景:
- 该运行时没有 SDK(Rust、.NET、PHP、BI 工具、临时 shell 脚本);
- 只需偶尔拉一次分组(批处理任务、CI 流水线);
- 希望依赖最小。
每次请求把 (token, ak, et) 用 MD5 签出 X-Es,并随请求带上 X-Ak、X-Et、X-Es 三个 header。 每次调用一次网络往返,无客户端缓存。详见 HTTP API 鉴权 与 HTTP API 端点。
决策路径
拿不准时,先用 HTTP API 端到端验证项目、key 与受众目标,等运行时定型后再换成服务端 SDK。