数据架构的未来——浅谈流处理架构

简介: 数据架构设计领域正在发生一场变革,其影响的不仅是实时处理业务,这场变革可能将基于流的处理视为整个架构设计的核心,而不是将流处理只是作为某一个实时计算的项目使用。本文将对比传统数据架构与流处理架构的区别,并将介绍如何将流处理架构应用于微服务及整体系统中。

传统数据架构


传统数据架构是一种中心化的数据系统,可能会分为业务数据系统和大数据系统。

image.png

业务数据系统存储事务性数据,比如SQL, NOSQL数据库,这种数据拥有准确的数据,比如用户业务,支付业务等体系都可以这样实现,这类需要经常更新,是整体业务系统支撑的核心。

大数据系统主要负责存储不需要经常更新的数据,由于数据量过大,可能需要Hadoop等大数据框架进行实现,系统会定时的计算结果,比如在每天零点统计用户访问量,可能将结果结果写入SQL数据库,完成统计工作。

而实时数据系统往往只作为一个某一个项目使用,比如实时日志报警系统,实时推荐系统。

image.png

这样设计的原因是因为数据处理性能和准确性的限制,在Streaming-大数据的未来一文中曾提到过,由于对事件时间的不可控,我们不能将实时数据作为准确可靠的数据来源。而低延迟的要求将极大的占用系统性能。

这种传统架构成功地服务了几十年,但随着大型分布式系统中的计算复杂 度不断上升,这种架构已经不堪重负。许多公司经常遇到以下问题。

• 在许多项目中,从数据到达到数据分析所需的工作流程太复杂、太缓慢。

• 传统的数据架构太单一:数据库是唯一正确的数据源,每一个应用程序 都需要通过访问数据库来获得所需的数据。

• 采用这种架构的系统拥有非常复杂的异常问题处理方法。当出现异常问题时,很难保证系统还能很好地运行。

而且随着系统规模扩大,维持实际数据与状态数据间的一 致性变得越来越困难,需要不断更新维护全局状态。


流处理架构


作为一种新的选择,流处理架构解决了企业在大规模系统中遇到的诸多问题。以流为基础的架构设计让数据记录持续地从数据源流向应用程序,并在各个应用程序间持续流动。没有一个数据库来集中存储全局状态数据, 取而代之的是共享且永不停止的流数据,它是唯一正确的数据源,记录了业务数据的历史。在流处理架构中,每个应用程序都有自己的数据,这些 数据采用本地数据库或分布式文件进行存储。

这种思路在之前是不可能办到的,它要求我们对消息有重复消费的能力,还要保持消息系统的高性能,同时还必须对事件时间做出精确的处理,但是现在我们有了Kafka与Flink,一切都变得简单了。

image.png

流处理项目架构主要是两部分:消息传输层,流处理层。数据来源是连续的消息流,比如日志,点击流事件,物联网数据。输出为各种可能的数据流向。

消息传输层从各种数据源(生产者)采集连续事件产生的数据,并传输 给订阅了这些数据的应用程序和服务(消费者)。这种设计使得生产者与消费者解耦,topic的概念,多个源接收数据,给多个消费者使用,消费者不需要立刻处理消息也不需要一直处于启动状态。消息传输层需要同时具备高性能,持久性,相当于缓冲区,可以将事件数据短期保存起来。而Kafka可以让高性能和持久性兼得。Offset机制实现了消息持久性,消息可以重播再计算;而基于磁盘缓存的读写可以做到高吞吐。

image.png

流处理层有 3 个用途:①持续地将数据在应用程序和系统间移动;②聚合并处理事件;③在本地维持应用程序的状态

Flink兼顾了这些优势,Apache Flink是一个框架和分布式处理引擎,用于在无边界和有边界数据流上进行有状态的计算。Flink 能在所有常见集群环境中运行,并能以内存速度和任意规模进行计算。

image.png


将流处理架构应用于微服务与整体系统


应用于微服务

从上文可以知道,流处理架构的消息是从Kafka中流出的流数据。Flink从消息队列中订阅数据并加以处理。处理后的数据可以流向另一个消息队列。这样所有的应用都可以共享流数据。

基于流处理的微服务架构也为欺诈检测系统的开发人员带来了灵活性。新增加一个数据消费者的开销几乎可以忽略不计,同时只要合适,数据的历史信息可以保存成任何一种格式,并且使用任意的数据库服务。消息就在反复使用,处理,持久化中发挥了其最大最高效的作用。


应用于整体系统

事实上,流处理架构的作用远不止于此,流数据消费者并不仅限于实时应用程序,尽管它们是很重要的一种。

image.png

图中展示了从流处理架构中获益的几类消费者。A 组消费者可能做各种实时分析,包括实时更新仪表盘。B 组消费者记录数据的当前状态,这些数据可能同时也被存储在数据库或搜索文件中。

比如在电力监控系统中,我们需要实时的对电力故障报警,也需要实时监控电流电压数据,也需要持久化数据做历史分析预测等等。

image.png

本文简单对比了传统数据架构与流处理架构的区别,以及流处理架构的优势所在,但这种体系也面临着其复杂性和很多挑战,深入了解Kafka和Flink将使得这一切变得更加简单。

相关文章
|
7月前
|
存储 BI Shell
Doris基础-架构、数据模型、数据划分
Apache Doris 是一款高性能、实时分析型数据库,基于MPP架构,支持高并发查询与复杂分析。其前身是百度的Palo项目,现为Apache顶级项目。Doris适用于报表分析、数据仓库构建、日志检索等场景,具备存算一体与存算分离两种架构,灵活适应不同业务需求。它提供主键、明细和聚合三种数据模型,便于高效处理更新、存储与统计汇总操作,广泛应用于大数据分析领域。
752 2
|
7月前
|
SQL 缓存 前端开发
如何开发进销存系统中的基础数据板块?(附架构图+流程图+代码参考)
进销存系统是企业管理采购、销售与库存的核心工具,能有效提升运营效率。其中,“基础数据板块”作为系统基石,决定了后续业务的准确性与扩展性。本文详解产品与仓库模块的设计实现,涵盖功能概述、表结构设计、前后端代码示例及数据流架构,助力企业构建高效稳定的数字化管理体系。
|
6月前
|
数据采集 缓存 前端开发
如何开发门店业绩上报管理系统中的商品数据板块?(附架构图+流程图+代码参考)
本文深入讲解门店业绩上报系统中商品数据板块的设计与实现,涵盖商品类别、信息、档案等内容,详细阐述技术架构、业务流程、数据库设计及开发技巧,并提供完整代码示例,助力企业构建稳定、可扩展的商品数据系统。
|
5月前
|
数据采集 机器学习/深度学习 搜索推荐
MIT新论文:数据即上限,扩散模型的关键能力来自图像统计规律,而非复杂架构
MIT与丰田研究院研究发现,扩散模型的“局部性”并非源于网络架构的精巧设计,而是自然图像统计规律的产物。通过线性模型仅学习像素相关性,即可复现U-Net般的局部敏感模式,揭示数据本身蕴含生成“魔法”。
249 3
MIT新论文:数据即上限,扩散模型的关键能力来自图像统计规律,而非复杂架构
|
5月前
|
JSON 供应链 监控
1688商品详情API技术深度解析:从接口架构到数据融合实战
1688商品详情API(item_get接口)可通过商品ID获取标题、价格、库存、SKU等核心数据,适用于价格监控、供应链管理等场景。支持JSON格式返回,需企业认证。Python示例展示如何调用接口获取商品信息。
|
6月前
|
数据采集 监控 数据可视化
数据量暴涨时,抓取架构该如何应对?——豆瓣电影案例调研
本案例讲述了在豆瓣电影数据采集过程中,面对数据量激增和限制机制带来的挑战,如何通过引入爬虫代理、分布式架构与异步IO等技术手段,实现采集系统的优化与扩展,最终支撑起百万级请求的稳定抓取。
371 0
数据量暴涨时,抓取架构该如何应对?——豆瓣电影案例调研
|
6月前
|
SQL 数据采集 数据处理
终于有人把数据架构讲清楚了!
本文深入浅出地解析了数据架构的核心逻辑,涵盖其定义、作用、设计方法及常见误区,助力读者构建贴合业务的数据架构。
|
7月前
|
数据采集 存储 分布式计算
一文读懂数据中台架构,高效构建企业数据价值
在数字化时代,企业面临数据分散、难以统一管理的问题。数据中台架构通过整合、清洗和管理数据,打破信息孤岛,提升决策效率。本文详解其核心组成、搭建步骤及常见挑战,助力企业高效用数。
2247 24
|
10月前
|
存储 运维 Serverless
千万级数据秒级响应!碧桂园基于 EMR Serverless StarRocks 升级存算分离架构实践
碧桂园服务通过引入 EMR Serverless StarRocks 存算分离架构,解决了海量数据处理中的资源利用率低、并发能力不足等问题,显著降低了硬件和运维成本。实时查询性能提升8倍,查询出错率减少30倍,集群数据 SLA 达99.99%。此次技术升级不仅优化了用户体验,还结合AI打造了“一看”和“—问”智能场景助力精准决策与风险预测。
947 69
|
6月前
|
缓存 前端开发 BI
如何开发门店业绩上报管理系统中的门店数据板块?(附架构图+流程图+代码参考)
门店业绩上报管理是将门店营业、动销、人效等数据按标准化流程上报至企业中台或BI系统,用于考核、分析和决策。其核心在于构建“数据底座”,涵盖门店信息管理、数据采集、校验、汇总与对接。实现时需解决数据脏、上报慢、分析无据等问题。本文详解了实现路径,包括系统架构、数据模型、业务流程、开发要点、三大代码块(数据库、后端、前端)及FAQ,助你构建高效门店数据管理体系。