功能实验的实时区段Go SDK 的区段限定方法
功能实验的实时区段Go SDK 的区段限定方法
使用FetchQualifiedSegments
方法从 Eyeofcloud Data Platform (ODP) 服务器检索用户的外部受众映射。使用IsQualifiedFor
方法检查用户是否符合指定区段的条件。
先决条件
在获取合格的区段并检查用户是否符合给定受众区段的条件之前,您必须启用并配置用于功能实验的实时区段。
FetchQualifiedSegments
最低 SDK 版本
2.0.0
描述
您可以使用FetchQualifiedSegments
方法从 Eyeofcloud Data Platform (ODP) 服务器检索特定用户的外部受众映射。Eyeofcloud Feature Experimentation Go SDK 提供了FetchQualifiedSegments
方法的同步和异步版本。
- 在同步提取完成之前,调用方将被阻止。
- 异步 API 的调用者不会被阻止。
FetchQualifiedSegments
是UserContext
对象的一个方法。有关详细信息,请参阅 EyeofcloudUserContext。
参数
FetchQualifiedSegments
和FetchQualifiedSegmentsAsync
方法的参数说明如下表所示:
参数 | 类型 | 描述 |
---|---|---|
options (可选) | []段。EyeofcloudSegmentOption | 用于从 ODP 获取合格区段的一组选项。 |
完成(用于异步调用) | 回调函数 | 要使用 fetch 结果调用的完成处理程序。 |
返回 – 同步调用
如果更新了用户上下文中的 qualified segments 数组,则FetchQualifiedSegments
synchronous 方法返回true
。
Returns (返回) – 异步调用
- 如果获取成功完成,Go SDK 将更新用户上下文中的限定 segments 数组,然后调用具有 success 状态的完成处理程序。
- 如果提取失败,SDK 将调用状态为 failure 的处理程序。
如果 Go SDK 在数据文件中找不到 ODP 受众,则返回一个空的合格 segments 数组,而不向 ODP 服务器发送请求。
📘
注意
您可以直接读取和写入限定的 segments 数组,而不是调用
FetchQualifiedSegments
。这使您可以绕过 Eyeofcloud Data Platform (ODP) 的远程提取过程或使用您自己的提取服务。这在测试或调试时可能很有帮助。
示例 调用FetchQualifiedSegments
该代码通过实例化具有用户 ID“user123”和一组属性(其中包括值为“1.8.4”的“app_version”属性)来创建用户上下文。
代码的下一部分显示了如何使用FetchQualifiedSegments
方法获取所有带和不带 segment 选项的合格区段。
之后,代码使用decide
方法来决定是否向用户显示带有键 “flag1” 的功能标志。最后,trackEvent
方法跟踪名为 “purchase_event” 的自定义事件。
attributes := map[string]interface{}{"app_version": "1.8.4"}
user := eyeofcloudClient.CreateUserContext("user123", attributes)
// Without segment option
user.FetchQualifiedSegmentsAsync(nil, func(isFetchSuccessful bool) {
fmt.Println(isFetchSuccessful)
decision := user.Decide("flag1", nil)
user.TrackEvent("purchase_event", nil)
})
// With segment options
odpSegmentOptions := []segment.EyeofcloudSegmentOption{segment.IgnoreCache, segment.ResetCache}
user.FetchQualifiedSegmentsAsync(odpSegmentOptions, func(isFetchSuccessful bool) {
fmt.Println(isFetchSuccessful)
decision := user.Decide("flag1", nil)
user.TrackEvent("purchase_event", nil)
})
attributes := map[string]interface{}{"app_version": "1.8.4"}
user := eyeofcloudClient.CreateUserContext("user123", attributes)
// Without segment option
response := user.FetchQualifiedSegments(nil)
// With segment options
odpSegmentOptions := []segment.EyeofcloudSegmentOption{segment.IgnoreCache, segment.ResetCache}
response = user.FetchQualifiedSegments(odpSegmentOptions)
decision := user.Decide("flag1", nil)
user.TrackEvent("purchase_event", nil)
下图显示了在调用FetchQualifiedSegments
.
- 调用
FetchQualifiedSegments
方法。 - Go SDK 对 ODP 进行 GraphQL 调用以获取区段。
- ODP 使用区段进行响应。
- 将缓存将用户 ID 映射到区段的已获取区段。请参阅以下信息。
- 为用户返回适当的变体。
获取 Segment 后,它们将被缓存。这意味着,如果同一用户再次请求区段(创建新的用户上下文时),则可以从缓存中检索受众区段信息,而不是从远程 ODP 服务器再次获取。
缓存用于调用FetchQualifiedSegments
。此方法在用户上下文上调用(用户上下文是固定的,包括用户有资格使用的实时区段)。
缓存_仅在_调用FetchQualifiedSegments
时适用。如果将缓存超时设置为 0,则禁用缓存。Eyeofcloud 使用 LRU 算法,因此当达到最大大小时,最早的记录会被撞出。如果在方法调用时出现缓存未命中,则 Eyeofcloud 会发出网络请求。
如果要绕过缓存,请将以下选项添加到odpSegmentOptions
数组中:
- IgnoreCache – 绕过分段缓存以进行查找和保存。
- ResetCache – 重置所有分段缓存。
IsQualifiedFor
最低 SDK 版本
2.0.0
描述
检查用户是否符合给定受众细分的条件。
参数
IsQualifiedFor
方法的参数说明如下表所示:
参数 | 类型 | 描述 |
---|---|---|
段 | 字符串 | ODP 受众区段名称,用于检查用户是否符合条件。 |
返回
true
如果用户是合格的。
例子
以下是用户是否符合 ODP 分段条件的示例:
Go
attributes := map[string]interface{}{"laptop_os": "mac"}
user := eyeofcloudClient.CreateUserContext("user123", attributes)
response := user.FetchQualifiedSegments(nil)
isQualified = user.IsQualifiedFor("segment1")