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

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

传统数据架构


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

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将使得这一切变得更加简单。

相关文章
|
9天前
|
消息中间件 存储 缓存
十万订单每秒热点数据架构优化实践深度解析
【11月更文挑战第20天】随着互联网技术的飞速发展,电子商务平台在高峰时段需要处理海量订单,这对系统的性能、稳定性和扩展性提出了极高的要求。尤其是在“双十一”、“618”等大型促销活动中,每秒需要处理数万甚至数十万笔订单,这对系统的热点数据处理能力构成了严峻挑战。本文将深入探讨如何优化架构以应对每秒十万订单级别的热点数据处理,从历史背景、功能点、业务场景、底层原理以及使用Java模拟示例等多个维度进行剖析。
29 8
|
10天前
|
存储 分布式计算 数据挖掘
数据架构 ODPS 是什么?
数据架构 ODPS 是什么?
88 7
|
10天前
|
数据采集 搜索推荐 数据管理
数据架构 CDP 是什么?
数据架构 CDP 是什么?
35 2
|
3月前
|
机器学习/深度学习 数据采集 人工智能
揭秘!47页文档拆解苹果智能,从架构、数据到训练和优化
【8月更文挑战第23天】苹果公司发布了一份47页的研究文档,深入解析了其在智能基础语言模型领域的探索与突破。文档揭示了苹果在此领域的雄厚实力,并分享了其独特的混合架构设计,该设计融合了Transformer与RNN的优势,显著提高了模型处理序列数据的效能与表现力。然而,这种架构也带来了诸如权重平衡与资源消耗等挑战。苹果利用海量、多样的高质量数据集训练模型,但确保数据质量及处理噪声仍需克服。此外,苹果采取了自监督与无监督学习相结合的高效训练策略,以增强模型的泛化与稳健性,但仍需解决预训练任务选择及超参数调优等问题。
152 66
|
4月前
|
存储 分布式数据库 数据库
Hbase学习二:Hbase数据特点和架构特点
Hbase学习二:Hbase数据特点和架构特点
84 0
|
1月前
|
存储 大数据 数据处理
洞察未来:数据治理中的数据架构新思维
数据治理中的数据架构新思维对于应对未来挑战、提高数据处理效率、加强数据安全与隐私保护以及促进数据驱动的业务创新具有重要意义。企业需要紧跟时代步伐,不断探索和实践新型数据架构,以洞察未来发展趋势,为企业的长远发展奠定坚实基础。
|
2月前
|
存储 搜索推荐 数据库
MarkLogic在微服务架构中的应用:提供服务间通信和数据共享的机制
随着微服务架构的发展,服务间通信和数据共享成为关键挑战。本文介绍MarkLogic数据库在微服务架构中的应用,阐述其多模型支持、索引搜索、事务处理及高可用性等优势,以及如何利用MarkLogic实现数据共享、服务间通信、事件驱动架构和数据分析,提升系统的可伸缩性和可靠性。
47 5
|
3月前
|
安全 网络安全 数据安全/隐私保护
云原生技术探索:容器化与微服务架构的实践之路网络安全与信息安全:保护数据的关键策略
【8月更文挑战第28天】本文将深入探讨云原生技术的核心概念,包括容器化和微服务架构。我们将通过实际案例和代码示例,展示如何在云平台上实现高效的应用部署和管理。文章不仅提供理论知识,还包含实操指南,帮助开发者理解并应用这些前沿技术。 【8月更文挑战第28天】在数字化时代,网络安全和信息安全是保护个人和企业数据的前线防御。本文将探讨网络安全漏洞的成因、加密技术的应用以及提升安全意识的重要性。文章旨在通过分析网络安全的薄弱环节,介绍如何利用加密技术和提高用户警觉性来构建更为坚固的数据保护屏障。
|
3月前
|
存储 监控 安全
大数据架构设计原则:构建高效、可扩展与安全的数据生态系统
【8月更文挑战第23天】大数据架构设计是一个复杂而系统的工程,需要综合考虑业务需求、技术选型、安全合规等多个方面。遵循上述设计原则,可以帮助企业构建出既高效又安全的大数据生态系统,为业务创新和决策支持提供强有力的支撑。随着技术的不断发展和业务需求的不断变化,持续优化和调整大数据架构也将成为一项持续的工作。
|
3月前
|
机器学习/深度学习 自然语言处理 数据处理
下一篇
无影云桌面