Stream vs Batch分析
1)简短的精髓
Stream-在几秒钟内对事件进行连续处理:antifrod/AML、RG触发器、SLA-alerta、操作面板。
Batch是具有完整可重复性的定期重新计算:监管报告(GGR/NGR),finswerks,ML-datasets。
地标: Stream p95 e2e 0。5-5秒,Batch D+1到06:00 (lock.).
2)选择矩阵(TL;DR)
第80/20条规则:在Batch中不需要反应的任何事情<5分钟;其余的在Stream,与Batch的夜间验证。
3)体系结构
3.1 Lambda
Stream for online+Batch用于整合。加:灵活性。减:两个逻辑。
3.2 Kappa
一切都像溪流;Batch=通过日志进行"倒带"。另外:一个代码。减:反射的复杂性/成本。
3.3 Lakehouse-Hybrid(推荐)
流式→操作OLAP 3月(分钟)和Bronze/Silver;Batch重新包装黄金(D+1)并发布报告。
4)数据和时间
Stream
窗口:tumbling/hopping/session。
Watermarks:2-5分钟;后期数据被标记和删除。
Stateful:CEP,dedup,TTL。
Batch
Increments/CDC:"updated_at",日志复制。
SCD I/II/III:属性的历史。
Snapshots:"as-of"的白天/月度层。
5)在iGaming中的应用模式
AML/Antifrod:流(velocity/结构)+Batch对账和案例。
响应游戏:流极限/自我体验控制;Batch报告注册表。
运营/SRE:Stream Alerta SLA;对事件和趋势进行后期分析。
产品/营销:流个性化/任务;Batch 队列/LTV。
财务/报告:Batch (Gold D +1, WORM套件),Stream-操作面板。
6) DQ,可重复性,反射
Stream DQ:方案验证,dedup"(event_id,source)",窗口完整性,后期评分,dup-rate;关键的DLQ →。
Batch DQ: 唯一性/FK/range/temporal,与OLTP/提供商对账;关键→ fail job+报告。
- Stream:跨越+deterministic变换范围的拓扑。
- Batch:时间旅行/逻辑版本("逻辑版本")+Gold snapshots。
7)隐私和居留权
流:化名,在线掩码,区域输送机(EEA/UK/BR),外部PII-lookups的时间表。
Batch:PII映射隔离,RLS/CLS,DSAR/RTBF,法律保留,WORM档案。
8)成本工程
流:避免"热键"(salting),限制async lookups,TTL状态,预聚合。
Batch:分组/聚类,小文件压缩,稳定单元的实现,配额/启动窗口。
9)示例
9.1 Stream-Flink SQL (10分钟优先存款)
sql
SELECT user_id,
TUMBLE_START(event_time, INTERVAL '10' MINUTE) AS win_start,
COUNT() AS deposits_10m,
SUM(amount_base) AS sum_10m
FROM stream. payments
GROUP BY user_id, TUMBLE(event_time, INTERVAL '10' MINUTE);
9.2 Stream-CEP (AML伪代码)
python if count_deposits(10MIN) >= 3 and sum_deposits(10MIN) > THRESH \
and all(d. amount < REPORTING_LIMIT for d in window):
emit_alert("AML_STRUCTURING", user_id, snapshot())
9.3 Batch-MERGE(银铸造)
sql
MERGE INTO silver. payments s
USING stage. delta_payments d
ON s. transaction_id = d. transaction_id
WHEN MATCHED THEN UPDATE SET
WHEN NOT MATCHED THEN INSERT;
9.4 Batch — Gold GGR (D+1)
sql
CREATE OR REPLACE VIEW gold. ggr_daily AS
SELECT
DATE(b. event_time) event_date,
b. market, g. provider_id,
SUM(b. stake_base) stakes_eur,
SUM(p. amount_base) payouts_eur,
SUM(b. stake_base) - SUM(p. amount_base) ggr_eur
FROM silver. fact_bets b
LEFT JOIN silver. fact_payouts p
ON p. user_pseudo_id = b. user_pseudo_id
AND p. game_id = b. game_id
AND DATE(p. event_time) = DATE(b. event_time)
JOIN dim. games g ON g. game_id = b. game_id
GROUP BY 1,2,3;
10)度量和SLO
流(地标)
p95 ingest→alert ≤ 2–5 c completeness окна ≥ 99.5%
schema-errors ≤ 0.1%
late-ratio ≤ 1%
可用性≥ 99。9%
Batch(地标)
Gold.每日准备到06:00 lock。
completeness ≥ 99.5%
validity ≥ 99.9%
MTTR DQ事件≤ 24-48小时
11)测试和发布
合同/计划: 消费者驾驶测试;back-compat CI.
流:金丝雀规则,黑暗启动,重播模拟器。
Batch: dry-run在采样、指标比较、校验总和(reconciliation)。
12)反模式
逻辑重复:不同的Stream和Batch计算没有公式对齐。
在没有缓存/定时器的Stream热路径中同步外部API。
"以防万一"完全重置而不是增添。
缺少watermarks/late策略。
分析层中的PII;没有CLS/RLS。
追溯地"变异"的黄金店面。
13)推荐的混合动力(花花公子)
1.流路径:ingest →总线→ Flink/Beam(watermarks,dedup,CEP)→
OLAP(ClickHouse/Pinot)用于1-5分钟面板+青铜/银(append)。
2.Batch回路:increments/CDC → Silver 正常化/SCD →黄金每日店面/报告(WORM)。
3.配对:单个语义层度量;夜间Stream↔Batch对账;差异>阈值→滴答声。
14) RACI
R(响应性):流平台(流输入),数据工程(Batch模型),域分析(度量/规则),MLOps(fichi/Feature Store)。
A (Accountable): Head of Data / CDO.
C (Consulted): Compliance/Legal/DPO, Finance (FX/GGR), Risk (RG/AML), SRE (SLO/стоимость).
I (Informed): BI/产品/营销/运营。
15)路线图
MVP(2-4周):1.Kafka/Redpanda+2关键拓扑("payments","auth")。
2.Flink-joba:watermark+dedup+1 CEP规则(AML或RG)。
3.OLAP陈列柜1-5分钟+dashboard lag/late/dup。
4.Lakehouse Silver(ACID),第一枚金牌。ggr_daily (D+1至06:00)。
第二阶段(4-8周):- 按域,SCD II,语义度量层/CDC。
- 流式DQ和夜间对账Stream↔Batch。
- 区域化(EEA/UK/BR),DSAR/RTBF,法律保留。
- Replay Simulator,canary/A-B规则/度量版本。
- Cost-dashbords和配额;tiered storage;DR演习。
- 店面/度量和线性文档的自动生成。
16)实施支票
- Registry的计划/合同;背对背测试为绿色。
[] Stream: watermarks/allowed-lateness, дедуп, DLQ;销售中的OLAP面板。
- Batch: increments/CDC、SCD II、Gold D+1 with WORM export。
- 单个语义层度量;夜间核对Stream↔Batch。
- DQ-dashbords Freshness/Completeness/Validity;Alerta lag/late/dup。
- RBAC/ABAC,加密,居住;DSAR/RTBF/Legal Hold.
- 控制成本(成本/GB、成本/查询、状态大小、继电器配额)。
17)结果
Stream和Batch不是竞争对手,而是两个单一驱动器的齿轮。Stream提供了"这里和现在"的反应,Batch是"早晨"可验证的真相。Lakehouse方法混合体,单层度量和DQ/lineage学科,使您可以构建快速,可复制和兼容的分析轮廓,从而实现SLA和成本的最佳化。