
1) 【一句话结论】采用Kafka作为实时数据采集与缓冲层,Flink作为核心实时计算引擎完成特征转换与更新,ES作为实时特征存储与检索组件,构建端到端实时流处理系统,保障大模型推荐特征对用户行为的实时响应。
2) 【原理/概念讲解】老师会解释关键概念:
{"userId":"u001","action":"click","itemId":"p001","timestamp":"2023-10-26T10:30:00Z"})和商品数据(商品ID、类别、价格、标签等)。3) 【对比与适用场景】
| 组件 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| Kafka | 分布式消息队列 | 高吞吐、持久化、多消费者 | 数据采集、缓冲、解耦 | 需管理主题分区,避免数据倾斜 |
| Flink | 流处理引擎 | 实时计算、状态管理、Exactly-Once | 实时特征计算、窗口计算 | 并行度设置影响性能,状态存储需考虑成本 |
| ES | 分布式搜索引擎 | 实时索引、检索 | 特征存储、查询 | 索引分片过多/过少影响性能,冷热数据分离 |
4) 【示例】
用户行为日志JSON格式:{"userId": "u001", "action": "click", "itemId": "p001", "timestamp": "2023-10-26T10:30:00Z"}。
Flink作业伪代码(计算用户点击率与购买率,写入ES):
DataStream<LogEvent> kafkaStream = env.fromSource(
KafkaSource.<LogEvent>builder()
.setBootstrapServers("kafka:9092")
.setTopics("user_behavior")
.setGroupId("flink_group")
.setStartingOffsets(OffsetsInitializer.earliest())
.build(),
WatermarkStrategy.<LogEvent>forMonotonousTimestamps()
.withTimestampAssigner((event, timestamp) -> event.getTimestamp())
);
DataStream<Feature> processedStream = kafkaStream
.filter(event -> event.getAction().equals("click"))
.keyBy(LogEvent::getUserId)
.window(TumblingEventTimeWindows.of(Time.minutes(5)))
.process(new UserClickRateFunction())
.connect(kafkaStream
.filter(event -> event.getAction().equals("purchase"))
.keyBy(LogEvent::getUserId)
.window(TumblingEventTimeWindows.of(Time.minutes(5)))
.process(new UserPurchaseRateFunction()))
.process(new FeatureMergeFunction())
.addSink(new ElasticsearchSink<Feature>(
new ElasticsearchSink.Builder<Feature>(new RestHighLevelClient(
RestClient.builder(new HttpHost("es:9200"))),
new FeatureMapper<Feature>()),
new ElasticsearchSinkSettings.Builder<Feature>()
.withIndex("user_features")
.withDocumentType("feature")
.build()
));
5) 【面试口播版答案】
“面试官您好,我来设计一个实时用户行为数据流处理系统,核心是保障大模型推荐特征的实时更新。首先,数据源包括用户行为日志(如点击、购买、浏览)和商品数据(属性、标签),通过Kafka采集并缓冲。处理流程分四步:采集(Kafka)、清洗(过滤无效数据)、转换(计算用户兴趣度、商品热度等特征)、存储(ES)。技术选型上,Kafka负责高吞吐数据采集,Flink作为实时计算引擎,支持状态管理和Exactly-Once语义,ES用于实时特征存储和查询。性能保障方面,通过数据分区提升并行度,监控延迟和吞吐量,设置告警机制。这样就能实现特征实时更新,支持大模型推荐。”
6) 【追问清单】
7) 【常见坑/雷区】