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

file

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

传统数据架构

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

file

​ 业务数据系统存储事务性数据,好比SQL, NOSQL数据库,这种数据拥有准确的数据,好比用户业务,支付业务等体系均可以这样实现,这类须要常常更新,是总体业务系统支撑的核心。缓存

​ 大数据系统主要负责存储不须要常常更新的数据,因为数据量过大,可能须要Hadoop等大数据框架进行实现,系统会定时的计算结果,好比在天天零点统计用户访问量,可能将结果结果写入SQL数据库,完成统计工做。架构

​ 而实时数据系统每每只做为一个某一个项目使用,好比实时日志报警系统,实时推荐系统。框架

file

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

​ 这种传统架构成功地服务了几十年,但随着大型分布式系统中的计算复杂 度不断上升,这种架构已经不堪重负。许多公司常常遇到如下问题。 • 在许多项目中,从数据到达到数据分析所需的工做流程太复杂、太缓慢。微服务

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

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

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

流处理架构

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

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

file

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

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

file

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

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

file

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

应用于微服务

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

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

应用于总体系统

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

file

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

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

file

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

参考资料:Flink基础教程

Flink官方文档

相关文章:

Flink快速入门

Streaming-大数据的将来

什么是Kafka?

更多实时计算,Flink,Kafka等相关技术博文,欢迎关注实时流式计算

file

相关文章
相关标签/搜索