1. 课程导学与项目全景

大家好,欢迎来到《从零搭建实时推荐数据平台》的第一章。

先聊聊推荐系统这个行业。说实话,现在你打开任何一个 App——抖音、淘宝、B站、网易云音乐——背后都跑着一套推荐引擎。没有推荐,用户就只能在信息海洋里瞎逛。我入行那会儿,推荐还是「热门榜单 + 人工编辑」的玩法,现在呢?实时、个性化、多目标优化,已经是标配了。

那实时推荐到底值不值得做?我直接说结论:值得,而且越来越刚需。举个例子,用户刚在电商平台搜了「露营帐篷」,你下一秒就给他推帐篷配件,这叫实时。如果等第二天再推,他可能已经在别家下单了。实时推荐的价值,说白了就是缩短决策路径,提升转化率。我在项目中遇到过,实时推荐上线后,点击率提升了 30% 以上。

核心观点:实时推荐不是炫技,是业务竞争的必需品。延迟每增加 1 秒,用户流失率可能上升 7%。

项目技术栈总览

这个项目我们会用到四个核心组件:Kafka、Flink、Redis、HBase。我一个个说。

组件 角色 为什么选它
Kafka 消息队列 / 数据管道 高吞吐、持久化、解耦上下游
Flink 实时计算引擎 真正的流处理、低延迟、状态管理强
Redis 在线缓存 / 特征存储 毫秒级读写,适合存用户画像和热门数据
HBase 离线和近线存储 海量数据、稀疏存储、支持实时查询

你可能会问:为什么不用 Spark Streaming?嗯,这里有个关键区别。Flink 是真正的逐条流处理,而 Spark Streaming 本质上是微批次。在实时推荐场景下,延迟要求通常是秒级甚至毫秒级,Flink 更合适。我个人习惯用 Flink 做实时特征计算,配合 Kafka 做数据缓冲,效果很稳。

避坑指南:我曾经在项目里直接用 Flink 消费 Kafka,结果消费速度跟不上生产速度,导致数据积压。后来加了 Kafka 的分区数,并调整了 Flink 的并行度,才解决。记住:Kafka 分区数 = Flink 并行度,这是黄金法则。

项目架构图解析

下面这张图是整个项目的骨架。我建议你先看一遍,有个整体印象,后面每个章节都会对应到图中的某个模块。

实时推荐数据平台架构图 用户行为日志 业务数据库 外部特征源 Apache Kafka(数据总线) Apache Flink(实时计算引擎) 特征提取 · 实时统计 · 模型推理 Redis(在线特征缓存) HBase(离线特征存储) 推荐服务(召回 · 排序 · 重排) 用户端 App / Web 数据流向说明 1. 多源数据 → Kafka 2. Kafka → Flink 实时计算 3. Flink → Redis / HBase 4. 推荐服务 → 用户

从架构图你能看到,数据从用户行为日志、业务库、外部特征源进入 Kafka,然后 Flink 消费 Kafka 数据做实时计算,结果分别写入 Redis 和 HBase。推荐服务再从这里读取特征,完成召回、排序、重排,最终推送给用户。

这个链路里,Kafka 是主动脉,Flink 是心脏,Redis 和 HBase 是左右手。缺一个都不行。

注意:架构图里没有画「全链路监控」和「数据质量校验」,但实际生产环境这两块必不可少。我们会在后面的章节专门讲。

课程学习路径

整个课程 30 章,我把它分成四个阶段:

  1. 基础搭建(第 1-8 章):环境准备、Kafka 集群、Flink 开发环境、Redis 和 HBase 部署。
  2. 实时计算(第 9-18 章):Flink 实时特征工程、窗口聚合、状态管理、与 Kafka 集成。
  3. 存储与查询(第 19-24 章):Redis 缓存策略、HBase 表设计、冷热数据分离。
  4. 推荐服务与上线(第 25-30 章):召回算法、排序模型、AB 测试、监控告警。

我建议你跟着节奏走,每章都动手敲代码。光看是学不会的,你想想看,我当年踩过的坑,都是亲手写出来的。

学习建议:准备一台 8G 以上内存的 Linux 机器(虚拟机也行)。我们会用 Docker 部署大部分组件,所以 Docker 和 Docker Compose 是必备技能。如果你还没装,现在就去装。