菜单

推送通知

相关源文件

目的与范围

本文档详细介绍了 Twitter 的推送通知系统,该系统负责生成并向用户发送基于推荐的通知。它侧重于 pushservice 组件的核心功能、架构和工作流程,该组件支持 Twitter 基于推荐的通知。有关通用通知投递机制的信息,请参阅用户信号服务用户信号服务

来源:pushservice/README.md1-8 README.md51-60

系统概览

Pushservice 是 Twitter 的主要推荐服务,用于通过推送通知向用户展示个性化内容。该系统分析用户行为、内容相关性以及其他几个因素,以确定何时以及向特定用户发送哪些内容,旨在让用户了解相关内容,同时尊重通知偏好。

该系统处理两个主要功能

  1. 确定哪些用户应该收到推荐通知
  2. 决定发送哪些内容并管理投递过程

这些功能通过两个主要处理程序实现

  • RefreshForPushHandler:确定是否向用户发送推荐推送并选择最佳内容
  • SendHandler:管理向目标用户投递特定推送推荐

来源:pushservice/README.md1-8 README.md57-60

系统架构

下图展示了推送通知系统如何与 Twitter 更广泛的推荐基础设施集成

推送通知系统架构

来源:pushservice/README.md8-33 README.md51-60

推送通知工作流程

推送通知系统遵循两个主要工作流程,每个工作流程都由一个主要处理程序实现。

RefreshForPushHandler 工作流程

来源:pushservice/README.md10-31

SendHandler 工作流程

来源:pushservice/README.md32-45

RefreshForPushHandler

RefreshForPushHandler 是主要的控制器,负责确定用户是否应该收到推送通知推荐以及应该发送什么内容。它执行以下步骤

1. 目标构建和资格检查

  • 基于提供的用户 ID 构建目标用户对象
  • 执行资格检查以确定用户是否应该收到推荐
  • 资格可能包括通知设置、最近应用使用情况和用户活动模式等因素

2. 候选内容获取

  • 查询各种内容源以检索潜在的通知候选内容
  • 候选内容来源可能包括热门话题、来自关注账号的近期推文和推荐内容

3. 候选内容补全

  • 通过对下游服务进行批量调用来丰富候选内容信息
  • 补全包括检索完整的元数据、互动指标和内容详情

4. 预排序(轻量级)筛选

  • 执行初始轻量级筛选以快速剔除明显不合适的候选内容
  • 使用 RPC 调用验证候选内容,无需进行完整的特征计算

5. 排序

  • 特征补全:计算候选内容和目标用户的特征
  • 轻量级排序:应用 PushserviceLightRanker 模型以高效预选有潜力的候选内容
  • 重量级排序:应用计算量更大的 PushserviceHeavyRanker 以确定最终候选内容分数

6. 执行步骤(重量级筛选)

  • 逐一选取排名靠前的候选内容并应用全面的筛选规则
  • 持续进行,直到找到通过所有筛选条件的候选内容或耗尽候选内容列表

7. 发送

  • 调用 SendHandler 以将选定的推荐内容作为推送通知发送

来源:pushservice/README.md10-31

SendHandler

SendHandler 侧重于确定是否向目标用户发送特定预选的推送推荐项并管理投递过程

1. 目标构建

  • 基于提供的用户 ID 构建目标用户对象

2. 候选内容补全

  • 丰富提供的候选内容以完整的元数据和详情

3. 特征补全

  • 计算目标用户和候选内容的特征
  • 这些特征可能包括个性化因素和上下文信息

4. 执行步骤(重量级筛选)

  • 对候选内容执行全面的验证和筛选
  • 根据用户偏好、内容政策和时间敏感因素进行检查

5. 发送

  • 调用适当的下游投递服务以发送通知
  • 可以根据配置作为推送通知、应用内通知或两者发送

来源:pushservice/README.md32-45

排序模型

推送通知系统使用两个专门的排序模型,以评估和选择最相关的内容进行通知投递

PushserviceLightRanker

轻量级排序器作为高效的第一阶段过滤器,通过从初始池中快速识别有潜力的候选内容,从而桥接候选内容生成和重量级排序。

  • 目的:高效地从初始大型候选池中预选高度相关的候选内容
  • 特点:更低的计算成本,更快的推理时间
  • 输入:可以快速计算的基本特征
  • 输出:用于进一步评估的排序候选内容列表

PushserviceHeavyRanker

重量级排序器是用于最终候选内容选择的更复杂的模型

  • 目的:对预选候选内容进行最终评分,以确定通知价值
  • 架构:多任务学习模型
  • 预测目标:
    • 通知打开概率
    • 与通知内容互动概率
  • 特征:包含用户、内容和上下文特征的综合集合

模型与特征计算之间的关系如下图所示

来源:README.md58-60 pushservice/README.md21-28

代码结构

推送通知系统的核心组件组织如下

来源:pushservice/README.md README.md57-60

与推荐基础设施的集成

推送通知系统利用了 Twitter 推荐基础设施中的几个共享组件

  1. Navi 机器学习服务:推送通知模型通过 Twitter 的高性能模型服务平台提供服务

  2. 可见性过滤器:通用内容筛选规则确保推送通知遵守 Twitter 的内容政策

  3. 用户信号服务:提供个性化和资格判定所需的用户活动数据

  4. 表示管理器:提供用户和内容的嵌入和表示

来源:README.md10-28 README.md57-60