从“数据堆积如山”到“实时驱动业务”——聊聊Kafka到Flink的实时数据处理演进

举报
Echo_Wish 发表于 2025/11/11 21:41:32 2025/11/11
【摘要】 从“数据堆积如山”到“实时驱动业务”——聊聊Kafka到Flink的实时数据处理演进

从“数据堆积如山”到“实时驱动业务”——聊聊Kafka到Flink的实时数据处理演进

大家好,我是 Echo_Wish。

今天咱来聊一个我在无数公司里都看到的现象:数据越来越多,但能被实时用起来的数据却少得可怜

很多企业现在都在喊“实时监控、实时推荐、实时风控、实时决策”……
但实际做系统的时候,要么:

  • 数据堆在数据库里来不及处理;
  • 要么批处理一晚上跑一趟,第二天才出报告;
  • 要么业务方找你要指标,你只能说一句:“哥,你等下个批处理窗口吧。”

要实时,就得“数据一来就处理,不落地、不堆积、直接计算”。

而要做到这一点,现代实时数据架构,基本都离不开两个关键角色:

Kafka:负责数据“流”
Flink:负责数据“算”

今天我们就以非常接地气的方式,聊聊从只用 Kafka 到 Kafka+Flink 的架构演进过程,以及为什么它是现实可落地且行业主流的。


一、为什么需要实时处理?

先不要急着上技术,我们看个简单业务场景:

你是电商平台运营,有两个需求:

  1. 用户刚刚下单,要给他实时推荐优惠券
  2. 实时监控某个商品是否被秒杀攻击(异常高频下单)

如果你的数据处理是 T+1,那对不起,这两件事情毫无意义。
用户优惠券推荐已经错过关键时间,异常攻击也早就把你库存清光了。

实时处理,让数据从“历史回忆”变成“实时决策”。


二、Kafka:解决数据通路的问题

Kafka 的本质是什么?一句话说清:

Kafka 是一个高吞吐的分布式消息队列,不丢数据,能横向扩展。

它的作用,是让所有业务系统能接入到同一个“数据高速公路”:

[业务系统][Kafka][其他系统 / 数据仓库 / Flink处理]

这就解决了一件大事:
数据不再孤立,而是进入同样的流通体系。

但是,只用 Kafka 存数据,会遇到一个问题:

Kafka 只负责“存”与“传”,不负责“算”。

举个例子,业务说:

“帮我算一下过去 5 秒内商品A的下单量。”

Kafka 会说:

“哥,我只负责帮你把数据放好,你自己算。”

所以我们需要一个实时计算引擎


三、Flink:让数据“边走边算”

Flink 有两个关键能力:

  1. 流式计算(Stream Processing):数据到达就计算,不需要批量积累
  2. 状态管理(State):能记住历史,才能做窗口分析、实时统计

这意味着 Flink 能做的事包括:

  • 实时订单计算
  • 实时风控异常检测
  • 实时用户行为画像更新
  • 实时日志告警

甚至你看到的大部分实时数仓系统底层都是 Kafka + Flink


四、Kafka → Flink 的架构图

我们用一个简单易懂的架构图来看看:

               ┌──────────────────────────────┐
               │           业务系统            │
               └──────────────┬───────────────┘
                              │ 各类日志/事件/订单
                              ▼
                      ┌───────────────┐
                      │     Kafka     │  数据流入口
                      └───────┬───────┘
                              │
                              ▼
                      ┌───────────────┐
                      │     Flink     │  数据实时计算/聚合/分析
                      └───────┬───────┘
                              │
                   ┌──────────┴──────────┬───────────┐
                   ▼                     ▼           ▼
           实时数据库 (Redis/Doris)   OLAP存储     业务告警&推荐系统

看懂了吧?数据不落地、不等待,直接进入实时决策链路。


五、用代码看看:实时统计商品 5 秒下单数

Flink 示例(基于 Scala / Java 简化版)

DataStream<String> stream = env.addSource(new FlinkKafkaConsumer<>("orders", new SimpleStringSchema(), props));

DataStream<Tuple2<String, Integer>> result = stream
        .map(value -> {
            String productId = parseProductId(value);
            return new Tuple2<>(productId, 1);
        })
        .returns(Types.TUPLE(Types.STRING, Types.INT))
        .keyBy(value -> value.f0)
        .timeWindow(Time.seconds(5))
        .sum(1);

result.addSink(new RedisSink<>(redisConfig, new ProductCountMapper()));

意思就是:

  • 从 Kafka 读取订单流
  • 提取商品 ID
  • 以商品为 key 分组
  • 每 5 秒统计一次数量
  • 把结果写入 Redis 或推送业务服务

这样你就能实时看到商品热度,用于告警 or 推荐 or 自动调价。


六、Kafka+Flink 架构的核心价值

能力 带来的价值
实时数据流 业务决策不延迟
流式计算 省下大量批处理资源
有状态计算 可做实时监控、风控、画像
可扩展 数据规模再大也不慌
去中心化 系统间不再耦合

简单讲就是一句话:

从“数据存着等用”变成“数据来就用”。


七、写在最后:实时系统,本质是认知升级

很多团队犹豫做实时架构,因为觉得复杂、贵、风险大。
但现实是:

  • 数据实时 ≠ 高成本
    Kafka+Flink 都是开源,资源可弹性扩展

  • 数据实时 ≠ 一口吃成胖子
    可以从一个监控或推荐场景开始试点

  • 数据实时 ≠ 技术炫技
    它本质上是一种业务竞争力

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。