跳到主要内容

马克·扎克伯格正在打造西方版的微信

· 阅读需 2 分钟

作为一家盈利状况非常好的公司,Facebook的营业利润率达到42%

营业利润率=营业收入/净销售额
营业收入=总收入 - (营业费用+折旧和摊销)

当它过渡到一个以隐私为中心的超级应用时,将会面临三个挑战。

  1. 技术。如何在WhatsApp和Instagram等应用程序之间架起桥梁,把它们变成一个统一的平台?
  2. 经济。
    • 在中国,没有占主导地位的应用商店,因此微信成长为首选平台。但是在美国,已经有了有苹果和谷歌。
    • ==微信并不是摇钱树。== 针对受隐私保护的用户进行细分广告是很难的。
  3. 隐私和竞争。
    • 没有哪个国家希望一家公司垄断互联网。
    • 社交网络+私人消息= Windows OS + IE

架构导论

· 阅读需 4 分钟

什么是架构?

架构是软件系统的形状。就好像是一个物理世界的建筑的全景:

  • 范式是砖块。
  • 设计原则是房间。
  • 组件是一幢建筑。

它们共同服务于特定的目的,例如医院是为治愈病人而设,学校是为教育学生而设。

我们为什么需要架构?

行为与结构

每个软件系统为利益相关者提供两种不同的价值:行为和结构。软件开发人员负责确保这两种价值都保持高水平。

==软件架构师由于其工作描述,更加关注系统的结构,而不是其特性和功能。==

终极目标 - ==每个功能节省人力资源成本==

架构为软件系统的整个生命周期提供服务,使其易于理解、开发、测试、部署和操作。目标是最小化每个业务用例的人力资源成本。

O’Reilly的书《软件架构模式》由Mark Richards撰写,是对这五种基本架构的简单而有效的介绍。

1. 分层架构

分层架构是最常见的架构,开发人员广泛熟知,因此是应用程序的事实标准。如果您不知道使用什么架构,请使用它。

示例

  • TCP / IP模型:应用层 > 传输层 > 网络层 > 网络接入层
  • Facebook TAO:网页层 > 缓存层(跟随者 + 领导者) > 数据库层

优缺点

  • 优点
    • 易于使用
    • 职责分离
    • 可测试性
  • 缺点
    • 单体
      • 难以调整、扩展或更新。您必须对所有层进行更改。

2. 事件驱动架构

状态变化将向系统发出事件。所有组件通过事件相互通信。

一个简单的项目可以结合中介、事件队列和通道。然后我们得到一个简化的架构:

示例

  • QT:信号和插槽
  • 支付基础设施:银行网关通常具有非常高的延迟,因此在其架构设计中采用异步技术。

3. 微内核架构(即插件架构)

软件的职责被划分为一个“核心”和多个“插件”。核心包含最基本的功能。插件彼此独立,并实现共享接口以实现不同的目标。

示例

  • Visual Studio Code,Eclipse
  • MINIX操作系统

4. 微服务架构

一个庞大的系统被解耦为多个微服务,每个微服务都是一个单独部署的单元,它们通过RPCs相互通信。

uber architecture

示例

5. 基于空间的架构

该模式得名于“元组空间”,意为“分布式共享内存”。没有数据库或同步数据库访问,因此没有数据库瓶颈。所有处理单元在内存中共享复制的应用数据。这些处理单元可以弹性启动和关闭。

示例:见维基百科

  • 主要在Java用户中采用:例如,JavaSpaces

马克·扎克伯格正在为西方打造微信

· 阅读需 1 分钟

Facebook 是一家非常盈利的公司。其运营利润率 = 42%

运营利润 = 运营收入 / 净销售额
运营收入 = 毛收入 − (运营费用 + 折旧和摊销)

在转型为隐私中心的超级应用程序时,面临三大挑战。

  1. 技术。如何在将 WhatsApp 和 Instagram 转变为统一平台时进行桥接?
  2. 经济。
    • 中国没有主导的应用商店,因此微信成为了首选平台。然而,在美国,有苹果和谷歌。
    • ==微信并不是摇钱树。== 针对保护隐私的用户进行微定位广告是困难的。
  3. 隐私与竞争。
    • 没有哪个国家希望一家企业垄断互联网。
    • 社交网络 + 私人消息 = Windows 操作系统 + IE

科技独角兽的问题

· 阅读需 2 分钟
  1. 数百万用户喜爱这些独角兽的品牌和领导者。这些科技明星拥有一切——除了通往高利润的道路。

  2. 在过去的 25 年里,三件事情发生了变化。

    1. 由于云计算、智能手机和社交媒体的普及,快速增长变得更加可及。
    2. 低利率使投资者追逐回报。
    3. 超级明星公司(例如谷歌、Facebook、阿里巴巴和腾讯)证明了财富是通过
      • 巨大的市场、高利润和自然垄断创造的
      • 有限的实物资产和轻度监管
  3. 由于独角兽的市场竞争激烈,尽管销售快速增长,利润率并没有持续改善。

  4. 以任何代价获取客户的快速扩张哲学正在达到顶峰。在独角兽之后,必须培育出一种新的、更具说服力的初创企业。

可惜!安德鲁·格罗夫说——成功滋生自满,自满滋生失败。只有那些偏执(拥抱变化)的人才能生存。

今日头条推荐系统:P2 内容分析

· 阅读需 5 分钟

今日头条推荐系统:P1 概述 中,我们了解到内容分析和用户标签的数据挖掘是推荐系统的基石。

什么是内容分析?

内容分析 = 从原始文章和用户行为中提取中间数据。

以文章为例。为了建模用户兴趣,我们需要对内容和文章进行标记。为了将用户与“互联网”标签的兴趣关联起来,我们需要知道用户是否阅读了带有“互联网”标签的文章。

我们为什么要分析这些原始数据?

我们这样做的原因是 …

  1. 标记用户(用户画像)
    • 标记喜欢带有“互联网”标签的文章的用户。标记喜欢带有“小米”标签的文章的用户。
  2. 根据标签向用户推荐内容
    • 向带有“小米”标签的用户推送“小米”内容。向带有“Dota”标签的用户推送“Dota”内容。
  3. 按主题准备内容
    • 将“德甲”文章放入“德甲主题”。将“饮食”文章放入“饮食主题”。

案例研究:一篇文章的分析结果

以下是“文章特征”页面的示例。文章特征包括分类、关键词、主题、实体。

一篇文章的分析结果

一篇文章的分析结果:详细信息

文章特征是什么?

  1. 语义标签:人类预定义这些标签,具有明确的含义。

  2. 隐含语义,包括主题和关键词。主题特征描述了单词的统计数据。某些规则生成关键词。

  3. 相似性。重复推荐曾是我们从客户那里获得的最严重反馈之一。

  4. 时间和地点。

  5. 质量。滥用、色情、广告或“心灵鸡汤”?

文章特征的重要性

  • 并不是说没有文章特征推荐系统就完全无法工作。亚马逊、沃尔玛、Netflix可以通过协同过滤进行推荐。
  • 然而,在新闻产品中,用户消费的是当天的内容。没有文章特征的引导是困难的。协同过滤无法帮助引导。
    • 文章特征的粒度越细,启动的能力就越强。

更多关于语义标签的信息

我们将语义标签的特征分为三个层次:

  1. 分类:用于用户画像、过滤主题内容、推荐召回、推荐特征
  2. 概念:用于过滤主题内容、搜索标签、推荐召回(喜欢)
  3. 实体:用于过滤主题内容、搜索标签、推荐召回(喜欢)

为什么要分成不同的层次?我们这样做是为了能够以不同的粒度捕捉文章。

  1. 分类:覆盖全面,准确性低。
  2. 概念:覆盖中等,准确性中等。
  3. 实体:覆盖低,准确性高。它仅覆盖每个领域的热门人物、组织、产品。

分类和概念共享相同的技术基础设施。

我们为什么需要语义标签?

  • 隐含语义
    • 一直运作良好。
    • 成本远低于语义标签。
  • 但是,主题和兴趣需要一个明确的标签系统。
  • 语义标签还评估公司的NPL技术能力。

文档分类

分类层级

  1. 科学、体育、金融、娱乐
  2. 足球、网球、乒乓球、田径、游泳
  3. 国际、国内
  4. A队、B队

分类器:

  • SVM
  • SVM + CNN
  • SVM + CNN + RNN

计算相关性

  1. 对文章进行词汇分析
  2. 过滤关键词
  3. 消歧义
  4. 计算相关性

如何激励员工?

· 阅读需 4 分钟

动机和激励是绩效管理的核心。没有激励,员工没有动机把事情做好,所有的反馈和培训都是白费力气。

领导对员工的尊重与员工的激励程度正相关

冒犯行为会直接打击员工的动机和绩效,所以经理需要遏制冒犯行为,可以这样做:

  1. 自己作出表率,上行下效。
  2. 维护员工的自尊。公开表扬,私下批评。
  3. 雇佣尊重人的员工,不姑息坏行为。遇到问题反馈要及时。

激励主要来自两个方面:外在和内在

  1. 外在的奖励——金钱 (升职加薪奖金)

    1. 这种奖励不一定会提高员工的绩效。
    2. 通常效果短暂。
    3. 整个团队的工作很难分清楚贡献的多寡,奖励多少才算合适对每个人来讲标准都不一样。==实际上,大多数员工的主要关注点在于公平,作出金钱奖励的时候一定要注意公平性和一致性(consistency)。==
  2. 内在的奖励——满足感(成就感、控制感、被感激感、智力上的提升、技能提高、自治、达成挑战)

    1. 一定要注意,==这种奖励要注意因人而异==。

怎么做到给人以内在奖励呢?

  1. 认可他的工作。“认可的关键在于让人感受到他的与众不同”。每个人得到同样的东西,每个人就不会有与众不同感。

    1. 每个人对认可的来源的重视程度不同。来自同事?在同事面前公开表扬他。来自客户?发一张客户的感谢信。来自专业?发专业奖项。来自老板?1:1 的时候生动地描述他对团队的重要性。
    2. 按照性格认可。内向外向?公开私下?如果不清楚,可以直接问对方。
    3. ==认可的频率要高,至少两周一次。==
    4. 手写的奖励成本低但是效果奇佳。
  2. 提供决策权

    1. 人们喜欢拥有感和控制感
  3. 提供挑战

    1. 挑战难度越高,完成的成就感就越高。
    2. 提供做没做过的事情的机会,帮助人开发新技能。要注意,前提是他们有相关的天赋和技能,而不是完全从零开始。

黄东旭:在中国打造数据库初创公司

· 阅读需 5 分钟

公司

  • 总共成立四年,前两年都在写代码,最近一年半有一两百家企业在用
  • Infra 在中国做很有优势,因为中国市场大,公司快糙猛拿来主义,infra 的好东西能够很快地被用上
  • cofounders 里面没有 db 的经验
  • open source 模式是未来,如果是闭源只能一家一家谈
  • 最重要的商业决策:不在于算法有多nb 团队有多厉害,护城河的关键在于 1)社区 2)mysql 接口 (借用了 mysql 的社区开始,SQL 的支持很重要,比如连Kafka, Spark都支持 SQL)

TiDB 数据库原理

  • 越nb的工程师越喜欢高性能,认为越快越好。但是 TiDB 的首要目标不是做到最快,而是做到 Availability reliability 稳定性 IO和 无限扩展。高性能的成本太高,要根据用户的硬件优化。但是这里是通用的数据库,不可能去优化各种场景。简单留给用户,复杂留给自己(跟AWS意见相反)。
  • 认为 eventual consistency 是个伪概念,实际上就是没一致性或者弱一致性。比如 cassandra WRN 设置好了,但到底过多久 能够resolve?不确定。太复杂,用户最好不需要知道操心这些复杂的设置。
  • 跑分不是唯一的指标,TPCC/TPCH 分数高对实际没有太多指导意义。数据库是磨出来的。比如第一家客户,游戏公司,居然创建了3万张表,json 的 meta 信息连起来非常慢。
  • 构架上不是 P2P,而是不同角色分得很清楚。
  • KV 用的是 RocksDB 但是典型的 LSM tree 的写放大是15倍,这里优化到 value 拆出来,解决写放大的问题。
  • 支持 MySQL 的client,也支持 SparkSQL 的读。
  • SQL layer 没有用 MySQL 的模块。一开始有试过,但是1)下面很难分布式 2)代码太烂很难改。魔改的话,半年能做;但是长期的维护成本更高。重做不麻烦,都重构了三次了。这里用 Go 比用 C/C++/Rust 重构更方便。
  • 一开始只想做 F1只做sql,和 CockroachDB 合作,后来他们往sql这边做,这边就只能往storage 做
  • 挖了 Rust core team 的两个人。rust 很难招人,一般是招 C++的人然后转rust,他们会觉得很多脑袋里的约定编译器帮你搞定了。
  • 不要低估造工业级轮子的难度。用 grpc,raft,rocksdb的好处是,如果业界有新的进展,会直接让使用者收益。
  • Chunk (region) split 做了两个月,merge 做了三年。merge 做了形式化证明。

Tech 趋势

  • 为什么是现在?
    • hardware
    • Hot / cold data -> warm data
    • Log is the new database
  • Everything is pluggable, 顶层 api 不变,下面即插即用可替换
  • Distributed Transaction
    • 2PC is the only option
    • challenges: reduce round-trips
  • Multi-tenancy achieved by kubernetes

中国 Biz Trend

  1. 中国速度,说上就得上
  2. 对新技术服务赋能业务的期望更高。二三线城市的公司或者非BAT用新技术与巨头斗争。必须能够解决使用者的技术焦虑。
  3. 基础软件人才储备逐渐变强。P产能CAP 对技术 content marketing 做了很多贡献。
  4. 一些核心场景(银行核心系统)敢于使用国产技术。
  5. PingCAP路径:开源(互联网/社区) <-> 商业化

流处理和批处理框架

· 阅读需 3 分钟

为什么有这种框架?

  • 为了在更短的时间内处理更多的数据。
  • 统一处理分布式系统中的容错问题。
  • 将任务简化抽象以应对多变的业务要求。
  • 分别适用于有界数据集(批处理)和无界数据集(流处理)。

批处理与流处理的发展史简介

  1. Hadoop 与 MapReduce。谷歌让批处理在一个分布式系统中像 MapRduceresult = pairs.map((pair) => (morePairs)).reduce(somePairs => lessPairs)一样简单。
  2. Apache Storm 与有向图拓扑结构。MapReduce 不能很好地表示迭代算法。因此,内森·马兹(Nathan Marz)将流处理抽象成一个由 spouts 和 bolts 组件构成的图结构。
  3. Spark 内存计算。辛湜(Reynold Xin)指出 Spark 在处理相同数据的时候比 Hadoop 少使用十倍机器的同时速度却快三倍
  4. 基于 Millwheel 和 FlumeJava 的谷歌数据流(Google Dataflow)。谷歌使用窗口化API同时支持批处理与流处理。
  1. Flink 快速采纳了 ==Google Dataflow== 以及 Apache Beam 的编程模式。
  2. Flink 对 Chandy-Lamport checkpointing 算法的高效实现。

这些框架

架构选择

若要用商业机器来满足以上的需求,有这些热门的分布式系统架构……

  • master-slave(中心化的):Apache Storm + zookeeper, Apache Samza + YARN
  • P2P(去中心化的):Apache s4

功能

  1. DAG Topology 用来迭代处理 -例如Spark 中的 GraphX, Apache Storm 中的 topologies, Flink 中的 DataStream API。
  2. 交付保证 (Delivery Guarantees)。如何确保节点与节点之间数据交付的可靠性?至少一次 / 至多一次 / 一次。
  3. 容错性。使用cold/warm/hot standby, checkpointing 或者 active-active 来实现容错。
  4. 无界数据集的窗口化API。例如 Apache 的流式窗口。Spark 的Window函数。Apache Beam 的窗口化。

不同架构的区别对照表

架构StormStorm-tridentSparkFlink
模型原生微批量微批量原生
Guarentees至少一次一次一次一次
容错性记录Ack记录Ack检查点检查点
最大容错
延迟非常低
吞吐量

今日头条推荐系统:P1 概述

· 阅读需 10 分钟

我们优化的目标是什么?用户满意度

我们正在寻找以下最佳 function 以最大化 用户满意度

用户满意度 = function(内容, 用户资料, 上下文)
  1. 内容:文章、视频、用户生成内容短视频、问答等的特征。
  2. 用户资料:兴趣、职业、年龄、性别和行为模式等。
  3. 上下文:在工作空间、通勤、旅行等情况下的移动用户。

如何评估满意度?

  1. 可测量的目标,例如:

    • 点击率
    • 会话持续时间
    • 点赞
    • 评论
    • 转发
  2. 难以测量的目标:

    • 广告和特殊类型内容(问答)的频率控制
    • 低俗内容的频率控制
    • 减少点击诱饵、低质量、恶心内容
    • 强制/置顶/高度权重重要新闻
    • 低权重来自低级账户的内容

如何优化这些目标?机器学习模型

找到上述最佳 function 是一个典型的监督机器学习问题。为了实施该系统,我们有以下算法:

  1. 协同过滤
  2. 逻辑回归
  3. 深度神经网络
  4. 因子分解机
  5. GBDT

一个世界级的推荐系统应该具备 灵活性,以进行 A/B 测试并结合上述多种算法。现在结合逻辑回归和深度神经网络变得流行。几年前,Facebook 使用了逻辑回归和 GBDT。

模型如何观察和测量现实?特征工程

  1. 内容特征与用户兴趣之间的相关性。 显式相关性包括关键词、类别、来源、类型。隐式相关性可以从 FM 等模型的用户向量或项目向量中提取。

  2. 环境特征,如地理位置、时间。 可以用作偏见或在其基础上建立相关性。

  3. 热门趋势。 有全球热门趋势、类别热门趋势、主题热门趋势和关键词热门趋势。热门趋势在我们对用户信息较少时非常有助于解决冷启动问题。

  4. 协同特征,帮助避免推荐内容越来越集中。 协同过滤不是单独分析每个用户的历史,而是根据用户的点击、兴趣、主题、关键词或隐式向量找到用户的相似性。通过找到相似用户,可以扩展推荐内容的多样性。

实时大规模训练

  • 用户喜欢看到根据我们从他们的行为中跟踪到的内容实时更新的新闻源。
  • 使用 Apache Storm 实时训练数据(点击、展示、收藏、分享)。
  • 收集数据到达阈值后更新推荐模型
  • 在高性能计算集群中存储模型参数,如数十亿的原始特征和数十亿的向量特征。

它们的实现步骤如下:

  1. 在线服务实时记录特征。
  2. 将数据写入 Kafka
  3. 从 Kafka 向 Storm 导入数据
  4. 填充完整的用户资料并准备样本
  5. 根据最新样本更新模型参数
  6. 在线建模获得新知识

如何进一步减少延迟?召回策略

考虑到所有内容的超大规模,无法用模型预测所有事情。因此,我们需要召回策略来关注数据的代表性子集。性能在这里至关重要,超时时间为 50 毫秒。

召回策略

在所有召回策略中,我们采用 InvertedIndex<Key, List<Article>>

Key 可以是主题、实体、来源等。

兴趣标签相关性文档列表
电子商务0.3
娱乐0.2
历史0.2
军事0.1

数据依赖

  • 特征依赖于用户端和内容端的标签。
  • 召回策略依赖于用户端和内容端的标签。
  • 用户标签的内容分析和数据挖掘是推荐系统的基石。

什么是内容分析?

内容分析 = 从原始文章和用户行为中推导中间数据。

以文章为例。为了建模用户兴趣,我们需要对内容和文章进行标记。为了将用户与“互联网”标签的兴趣关联起来,我们需要知道用户是否阅读了带有“互联网”标签的文章。

我们为什么要分析这些原始数据?

我们这样做的原因是 …

  1. 标记用户(用户资料)
    • 标记喜欢带有“互联网”标签的文章的用户。标记喜欢带有“小米”标签的文章的用户。
  2. 通过标签向用户推荐内容
    • 向带有“小米”标签的用户推送“小米”内容。向带有“Dota”标签的用户推送“Dota”内容。
  3. 按主题准备内容
    • 将“德甲”文章放入“德甲主题”。将“饮食”文章放入“饮食主题”。

案例研究:一篇文章的分析结果

这是“文章特征”页面的示例。文章特征包括分类、关键词、主题、实体。

文章分析结果

文章分析结果:详细信息

文章特征是什么?

  1. 语义标签:人类预定义这些标签并赋予明确的含义。

  2. 隐式语义,包括主题和关键词。主题特征描述了单词的统计信息。某些规则生成关键词。

  3. 相似性。重复推荐曾是我们客户反馈中最严重的问题。

  4. 时间和地点。

  5. 质量。滥用、色情、广告或“心灵鸡汤”?

文章特征的重要性

  • 推荐系统并非完全无法在没有文章特征的情况下工作。亚马逊、沃尔玛、Netflix 可以通过协同过滤进行推荐。
  • 然而,在新闻产品中,用户消费的是同一天的内容。没有文章特征的引导是困难的。协同过滤无法帮助引导。
    • 文章特征的粒度越细,启动的能力越强。

更多关于语义标签

我们将语义标签的特征分为三个层次:

  1. 分类:用于用户资料、过滤主题内容、推荐召回、推荐特征
  2. 概念:用于过滤主题内容、搜索标签、推荐召回(喜欢)
  3. 实体:用于过滤主题内容、搜索标签、推荐召回(喜欢)

为什么要分为不同层次?我们这样做是为了能够以不同的粒度捕捉文章。

  1. 分类:覆盖全面,准确性低。
  2. 概念:覆盖中等,准确性中等。
  3. 实体:覆盖低,准确性高。它仅覆盖每个领域的热门人物、组织、产品。

分类和概念共享相同的技术基础设施。

我们为什么需要语义标签?

  • 隐式语义
    • 一直运作良好。
    • 成本远低于语义标签。
  • 但是,主题和兴趣需要一个明确的标记系统。
  • 语义标签还评估了公司在 NPL 技术方面的能力。

文档分类

分类层次结构

  1. 科学、体育、金融、娱乐
  2. 足球、网球、乒乓球、田径、游泳
  3. 国际、国内
  4. A 队、B 队

分类器:

  • SVM
  • SVM + CNN
  • SVM + CNN + RNN

计算相关性

  1. 对文章进行词汇分析
  2. 过滤关键词
  3. 消歧义
  4. 计算相关性

今日头条推荐系统:P1 概述

· 阅读需 6 分钟

我们优化的目标是什么?用户满意度

我们正在寻找以下最佳 函数 以最大化 用户满意度

用户满意度 = 函数(内容, 用户画像, 上下文)
  1. 内容:文章、视频、用户生成内容短视频、问答等的特征。
  2. 用户画像:兴趣、职业、年龄、性别和行为模式等。
  3. 上下文:工作空间、通勤、旅行等场景下的移动用户。

如何评估满意度?

  1. 可测量的目标,例如:

    • 点击率
    • 会话时长
    • 点赞
    • 评论
    • 转发
  2. 难以测量的目标:

    • 广告和特殊类型内容(问答)的频率控制
    • 低俗内容的频率控制
    • 减少点击诱饵、低质量、恶心内容
    • 强制/固定/高度权重重要新闻
    • 低权重来自低级账户的内容

如何优化这些目标?机器学习模型

寻找上述最佳 函数 是一个典型的监督机器学习问题。为了实现系统,我们有以下算法:

  1. 协同过滤
  2. 逻辑回归
  3. 深度神经网络
  4. 因子分解机
  5. GBDT

一个世界级的推荐系统应该具备 灵活性,能够进行 A/B 测试并结合上述多种算法。现在结合逻辑回归和深度神经网络的做法越来越流行。Facebook 多年前就同时使用了逻辑回归和 GBDT。

模型如何观察和测量现实?特征工程

  1. 内容特征与用户兴趣之间的相关性。 显性相关性包括关键词、类别、来源、类型。隐性相关性可以从用户向量或模型如因子分解机中的物品向量中提取。

  2. 环境特征,如地理位置、时间。 可以作为偏差或在其基础上建立相关性。

  3. 热门趋势。 有全球热门趋势、类别热门趋势、主题热门趋势和关键词热门趋势。热门趋势在我们对用户信息较少时非常有助于解决冷启动问题。

  4. 协同特征,有助于避免推荐内容越来越集中。 协同过滤不是单独分析每个用户的历史,而是根据用户的点击、兴趣、主题、关键词或隐性向量找到用户之间的相似性。通过找到相似用户,可以扩展推荐内容的多样性。

大规模实时训练

  • 用户喜欢看到根据我们从他们的行为中跟踪到的信息实时更新的新闻推送。
  • 使用 Apache Storm 实时训练数据(点击、展示、收藏、分享)。
  • 收集数据直到达到阈值,然后更新推荐模型
  • 在高性能计算集群中存储模型参数,如数百亿的原始特征和数十亿的向量特征。

它们的实现步骤如下:

  1. 在线服务实时记录特征。
  2. 将数据写入 Kafka
  3. 从 Kafka 向 Storm 进件数据
  4. 填充完整的用户画像并准备样本
  5. 根据最新样本更新模型参数
  6. 在线建模获得新知识

如何进一步减少延迟?召回策略

考虑到所有内容的超大规模,无法用模型预测所有事情。因此,我们需要召回策略来关注数据的代表性子集。性能在这里至关重要,超时为 50 毫秒。

召回策略

在所有召回策略中,我们采用 反向索引<Key, List<Article>>

Key 可以是主题、实体、来源等。

兴趣标签相关性文档列表
电子商务0.3
娱乐0.2
历史0.2
军事0.1

数据依赖

  • 特征依赖于用户端和内容端的标签。
  • 召回策略依赖于用户端和内容端的标签。
  • 用户标签的内容分析和数据挖掘是推荐系统的基石。