UserProfileService
January 9, 2025About 2 min
UserProfileService
使用用户配置文件服务保留有关用户的信息,并确保变体分配具有粘性。例如,如果正在处理后端网站,则可以创建一个从 Redis 或 Memcached 存储读取和保存用户配置文件的实现。
在 JavaScript Node SDK 中,没有默认实现。实施用户配置文件服务是可选的,仅当希望保持变体分配的粘性时,即使实验条件在运行过程中发生了变化(例如,受众群体、属性、变体暂停和流量分配),才需要实现该服务。否则,JavaScript Node SDK 是无状态的,并且依赖于确定性分桶来返回一致的分配。
如果用户配置文件服务未按预期对用户进行分桶,请检查其他灰度发布/特性标帜(Feature Flag)是否覆盖了分桶。有关更多信息,请参阅 分桶的工作原理。
实现服务
请参阅下面的代码示例以提供您自己的用户配置文件服务。它应公开两个具有以下签名的函数:
lookup
:获取用户 ID 字符串并返回与以下架构匹配的用户配置文件。save
:获取用户配置文件并保留它。
如果要将用户配置文件服务纯粹用于跟踪目的而不是粘性分桶,则只能实现save
方法(始终从lookup
返回nil
)。
用户配置文件服务的界面如下所示:
// Sample user profile service implementation
const userProfileService = {
lookup: userId => {
// Perform user profile lookup
},
save: userProfileMap => {
// Persist user profile
},
};
var eyeofcloudClient = eyeofcloud.createInstance({ datafile, userProfileService, });
Java SDK 使用你提供的 User Profile Service 在保存试验分配的情况下替代默认分桶行为。
在实现自己的 User Profile Service 时,建议在初始化时将用户配置文件加载到 User Profile Service 中,并避免对查找函数执行成本高昂的阻塞查找,以最大程度地减少合并服务对性能的影响。
在多服务器或无状态环境中实现时,我们建议将此接口与 Cassandra 或 Redis 等后端一起使用。您可以通过配置这些服务来决定要将粘性存储桶保留多长时间。