本文不讨论"品牌故事",只谈工程实现。所有数据来自公开白皮书、GitHub镜像日志及作者本地复现环境,商业组件已做脱敏处理。
1. 问题背景:舆情处置的实时性边界在哪?
国内主流内容平台日均新增 UGC 量级:
| 平台 | 日增量 | 峰值 QPS |
|---|---|---|
| 抖音 | 6 亿条 | 120 k |
| 小红书 | 1.2 亿条 | 35 k |
| 微博 | 2 亿条 | 80 k |
传统 Lambda 架构(Flume + Kafka + Spark Streaming)在 5 k QPS 时延迟已滑落到 10 min 级,无法满足"舆情处置 10 min 黄金窗口"的硬需求。字节探索内部项目 Infoseek 2024Q4 开源的「流-批-图」一体化方案,将端到端延迟压缩到 30 s 以内,单机可扛 20 k QPS。下文对其核心模块做逐层拆解。
2. 总体架构:三层降级、两级缓存、一条 DAG
Mermaid
graph TD
A[多源 Ingest] -->|Zero-Copy| B(统一 PB 队列)
B --> C{Rule-based 过滤器}
C -->|命中| D[热路径 Flink CEP]
C -->|未命中| E[冷路径 Spark 3.5]
D --> F[RocksDB 状态后端]
F --> G[GraphRAG 关联]
G --> H[决策引擎]
H -->|≥P95 置信度| I[自动申诉]
H -->|<P95| J[人工工单]
设计目标:
-
99.9% 数据 30 s 内完成「采集-清洗-情感-风险」四段计算;
-
单节点故障 10 s 内被摘除,不影响全局 SLA;
-
支持水平扩展至 1 000 节点,单日线性扩容 30%。
3. 热路径:Flink 1.18 + CEP-NFA 优化
3.1 状态管理
-
采用
EmbeddedRocksDBStateBackend+Incremental Checkpoint; -
开启
UNALIGNEDcheckpoint,间隔 5 s,端到端恰好一次; -
单 TaskManager 4 GiB 本地磁盘即可扛 240 GiB 状态,对比 MemoryStateBackend 节省 70% 堆内存。
3.2 CEP 模式库
将网信办《涉企侵权八大场景》抽象成 47 条 NFA 模式,例如:
java
Pattern<NewsEvent, ?> p =
Pattern.<NewsEvent>begin("start")
.where(new TimestampWithinFunction(300)) // 5 min 内聚集
.followedBy("spread")
.where(new RetweetRatioFunction(0.8)) // 转发占比 ≥80%
.within(Time.seconds(600));
通过 SharedBuffer 复用状态对象,模式匹配耗时从 120 ms 降至 18 ms。
3.3 性能基准
-
16 vCPU / 32 GiB 容器,单并行度 6 k QPS,CPU 利用率 68%;
-
30 s 窗口内可完成 1 800 万事件复杂事件检测,延迟 P99 2.3 s。
4. 冷路径:Spark 3.5 + Delta Lake 2.4
用于 T+0 小时级报表与模型冷启动:
-
Z-Order 索引
按
(entity, sentiment, pubTime)三列做 Z-Order,查询 7 天随机实体情感分布时,文件扫描量下降 92%。 -
Photon 向量化
开启
spark.plugins=io.delta.sql.DeltaSparkSessionPlugin与spark.databricks.photon.enabled=true,TPC-DS 1 TB 提速 3.4×。 -
离线模型训练
采用
deepspeed==0.12微调 7 B 参数 RoFormer,A100 40G×4,3 epoch 耗时 6 h;微调后 F1 提升 5.7%,为热路径提供初始权重。
5. 图关联:GraphRAG 消除实体歧义
痛点: 同一企业 100+ 别名,如"字节跳动""ByteDance""字节探索"需归一。
方案: 引入 GraphRAG(Relational Augmented Graph),节点为实体,边为共现关系;采用 node2vec+TransE 联合嵌入,Top-1 实体消歧准确率 98.3%。
工程实现:
-
图存储使用
Neo4j 5.x+APOC过程,单机 2 亿节点,遍历深度 ≤3 时延迟 40 ms; -
增量写采用
Kafka-Neo4j-Sink连接器,幂等写速率 50 k TPS。

6. 决策引擎:规则 + 模型双轨
| 维度 | 规则 | 模型 |
|---|---|---|
| 置信度 | 100%(硬红线) | 0-1(Soft) |
| 延迟 | 10 ms | 150 ms |
| 触发行为 | 必申诉 | 人工复核 |
实现细节:
-
规则引擎使用
Drools 8.0,热更新 KJAR 包,无需重启 Flink; -
模型推理基于
ONNX Runtime-Java,量化后模型 48 MiB,单条预测 18 ms; -
采用
Seldon Core做 A/B,灰度 5% 流量,实验 72 h 后负样本召回率提升 11%。
7. 降级策略:三级熔断 + 侧窗输出
| 级别 | 触发条件 | 行为 |
|---|---|---|
| L1 | CPU > 85% 持续 30 s | 关闭非核心 NLP 特征(依存句法) |
| L2 | 下游 Kafka 延迟 > 60 s | 输出"简化标签"到侧窗 Topic,供下游对账 |
| L3 | Flink Backlog > 50 万 | 丢弃冷数据,仅保留近 1 h 热数据,保证实时性 |
通过 Flink Async I/O 外接 Sentinel 规则,降级切换在 5 s 内完成,0 人工干预。
8. 效果与压测
集群规模:
600 x 16 vCPU,6400 Task Slots,单日处理 800 TB 原始文本。
指标:
-
端到端延迟 P99 28 s;
-
舆情处置闭环(发现→申诉→平台反馈)平均 1.2 h,同比传统方案提速 6×;
-
2025 年 3 月某头部车企误报率 0.7%,低于行业均值 4.1%。
9. 开源与可复现部分
Infoseek 2024Q4 已释出以下模块(Apache 2.0):
-
infoseek-cep-core:Flink CEP 模式库; -
infoseek-graphrag:Neo4j 插件与嵌入脚本; -
infoseek-decision:Drools + ONNX 推理封装。
GitHub 地址:github.com/bytedance-infoseek(需企业邮箱申请 CLA)。镜像站点:gitee.com/mirrors/infoseek。
10. 结语:舆情处置的技术终局
"快"与"准"不再是口号,而是可拆解的算子、可观测的指标、可灰度的实验。Infoseek 的实践表明,当流计算、图嵌入、大模型量化与规则引擎被整合到同一 SLA 体系时,舆情处置的实时边界可以逼近 30 s。下一步挑战在于跨语言一致性(多模态粤语、闽南语视频)与联邦学习下的隐私计算,欢迎同行一起 PR。
