当您的仪表盘被查看时,数据已经过时。欺诈检测作为隔夜批处理作业运行,次日上午才能发现欺诈。库存每小时更新一次,导致超卖。传感器数据被收集,但直到在夜间 ETL 中进行分析后才会被处理。您需要一个系统,让数据从源头到处理再到消费者持续流动,并具有亚秒级延迟——实现实时分析、实时通知、流式 AI 推理以及系统间的即时同步。
实时流处理架构将数据作为连续的、无边界的流而非离散批次进行处理。事件生产者发布到流处理平台(Kafka, Kinesis, Pulsar)。流处理器(Flink, Kafka Streams, 自定义消费者)在数据传输过程中转换、丰富、过滤和聚合事件。处理结果被推送到消费者:实时仪表盘(WebSocket)、搜索索引(Elasticsearch)、分析数据库(ClickHouse)和下游服务。变更数据捕获(CDC)使现有数据库能够在不更改应用程序的情况下作为事件源参与。
Explore more design patterns and system architectures
MicrocosmWorks 建议 Kafka 适用于需要 multi-consumer replay、长期数据保留和跨云可移植性的团队,因为其 log-based architecture 支持无限的 consumer groups 独立地重新读取相同的数据流。当您想要一个与 AWS 生态系统紧密集成的 fully managed service,并且您的数据保留需求在 7 天以内且消费者应用程序少于 10 个时,Kinesis 是更好的选择。在我们的架构评估过程中,我们会评估您的具体要求——包括 throughput、retention、consumer patterns 和 operational maturity——以提供正确的建议。
MicrocosmWorks 通过结合幂等生产者、事务型消费者以及使用存储在 Redis 等快速查找缓存中的事件指纹的去重层来实现精确一次语义。对于基于 Kafka 的系统,我们利用 Kafka 内置的事务型 API 来原子地提交消费者偏移量和生产者写入;而对于自定义流式管道,我们实现 outbox 模式并在消费者端进行去重。我们总是将消费者设计为幂等作为安全网,因此即使精确一次机制发生边缘情况故障,重新处理事件也会产生相同的结果。
MicrocosmWorks 通常为包含数据摄取、处理和数据下沉写入的流处理管道提供 50-200ms 的端到端延迟,对于使用 Apache Flink 或 Kafka Streams 等内存流处理器进行更简单的直通或过滤工作负载,可以实现低于 10ms 的延迟。造成延迟的主要因素通常是网络跳数、序列化开销和数据下沉写入的批处理,我们会根据您对延迟与吞吐量权衡的偏好进行调整。在我们的架构设计过程中,我们为每个管道阶段设定明确的延迟 SLOs,并构建监控仪表板,用于跟踪生产环境中的 p50、p95 和 p99 延迟。
MicrocosmWorks 实现模式注册中心(通常是 Confluent Schema Registry 或 AWS Glue Schema Registry),它们强制执行向后和向前兼容性规则,确保生产者可以在不破坏现有消费者的情况下演进其数据格式。我们使用 Avro 或 Protobuf 序列化并带有显式模式版本控制,使得每条消息都是自描述的,并且即使模式自生成以来已发生变化,也可以被反序列化。我们的 CI/CD 流水线包含自动模式兼容性检查,如果提议的模式更改会破坏下游消费者,则会阻止部署。
MicrocosmWorks 建议至少需要 2-3 名具有分布式系统、流处理框架和基础设施自动化经验的工程师,以可靠地维护生产流平台。对于不希望在内部培养此专业知识的公司,我们提供每小时 $15-$40 的托管流平台支持,我们的团队负责集群操作、性能调优和事件响应,而您的开发人员则专注于构建流处理应用程序。我们还提供为期 4-8 周的培训计划,以提升您现有工程团队在 Kafka、Flink 或 Kinesis 操作方面的技能。
该架构包含四个层面。事件源生成数据——应用程序事件、数据库 CDC 流、IoT 遥测数据、用户点击流、外部 API Webhooks。流处理平台(Kafka)提供持久的、有序的、可回放的事件存储。流处理器从主题中消费,应用转换(过滤、丰富、窗口聚合、连接),并生产到输出主题或数据汇。消费者订阅处理后的流——WebSocket 服务器推送到浏览器,连接器写入数据库,警报引擎评估规则并触发通知。
核心组件:| 层 | 技术 |
|---|---|
| 流处理 | Apache Kafka (MSK, Confluent), Kinesis, Apache Pulsar, Redpanda |
| CDC | Debezium, AWS DMS, Maxwell |
| 处理 | Apache Flink, Kafka Streams, Benthos, 自定义消费者 |
| 实时交付 | WebSocket (Socket.io), SSE, GraphQL Subscriptions |
| 分析 | ClickHouse, Apache Druid, Elasticsearch, TimescaleDB |
| 可观测性 | Kafka 延迟监控 (Burrow), Flink 指标, 自定义延迟跟踪 |
| 使用时机 | 避免时机 |
|---|---|
| 业务决策需要亚秒级数据新鲜度(欺诈、监控、交易) | 批处理每小时/每天的新鲜度足以满足业务需求 |
| 多个消费者需要相同的事件流(扇出、解耦系统) | 您只有一个生产者和一个消费者——一个简单的队列就足够了 |
| 您需要事件回放以进行调试、重新处理或构建新消费者 | 数据量较低(< 1K 事件/分钟)且不值得建立流处理基础设施 |
| 需要 CDC 将现有数据库同步到下游系统而无需更改代码 | 团队缺乏分布式系统经验——流处理会增加显著的运营复杂性 |
MW 秉持“回放原则”设计流处理系统——每个流都应能够从某个时间点回放,从而使新消费者能够回填历史数据,并使现有消费者在错误修复后能够重新处理。我们的 Kafka 部署包括模式演进策略(默认向后兼容)、消费者延迟告警(在延迟对业务可见之前)以及具有自动重试功能的死信主题。我们已经构建了每秒处理超过 50 万事件的流管道,用于视频分析、IoT 遥测和实时仪表盘。
一个代码库,数百个租户,零数据泄露——每个可扩展 SaaS 业务的基础。