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 并行度,这是黄金法则。
项目架构图解析
下面这张图是整个项目的骨架。我建议你先看一遍,有个整体印象,后面每个章节都会对应到图中的某个模块。
从架构图你能看到,数据从用户行为日志、业务库、外部特征源进入 Kafka,然后 Flink 消费 Kafka 数据做实时计算,结果分别写入 Redis 和 HBase。推荐服务再从这里读取特征,完成召回、排序、重排,最终推送给用户。
这个链路里,Kafka 是主动脉,Flink 是心脏,Redis 和 HBase 是左右手。缺一个都不行。
注意:架构图里没有画「全链路监控」和「数据质量校验」,但实际生产环境这两块必不可少。我们会在后面的章节专门讲。
课程学习路径
整个课程 30 章,我把它分成四个阶段:
- 基础搭建(第 1-8 章):环境准备、Kafka 集群、Flink 开发环境、Redis 和 HBase 部署。
- 实时计算(第 9-18 章):Flink 实时特征工程、窗口聚合、状态管理、与 Kafka 集成。
- 存储与查询(第 19-24 章):Redis 缓存策略、HBase 表设计、冷热数据分离。
- 推荐服务与上线(第 25-30 章):召回算法、排序模型、AB 测试、监控告警。
我建议你跟着节奏走,每章都动手敲代码。光看是学不会的,你想想看,我当年踩过的坑,都是亲手写出来的。
学习建议:准备一台 8G 以上内存的 Linux 机器(虚拟机也行)。我们会用 Docker 部署大部分组件,所以 Docker 和 Docker Compose 是必备技能。如果你还没装,现在就去装。