架构之:数据流架构

简介: 架构之:数据流架构

目录



简介


有时候我们的系统主要是对输入的数据进行处理和转换,这些处理和转换是互相独立的,在这种情况下,输入的数据经过转换之后被放到指定的输出中去。


在日常的工作中,我们会经常遇到这种数据处理的任务,那么对于这样的任务我们就可以采用数据流架构。


数据流架构


在实际工作中的流有很多种,最常见的就是I/O流,I / O缓冲区,管道等。不同的组件或者模块通过这些流进行连接。数据的流向可以是带有循环的拓扑图,没有循环的线性结构或者树形结构等。


数据流架构的主要目的是实现重用和方便的修改。 它适用于在顺序定义的输入和输出上进行一系列定义明确的独立数据转换或计算,例如编译器和业务数据处理应用程序。 一般来说有三种基本的数据流结构。


顺序批处理


顺序批处理是最常见也是最基础的数据流架构。数据作为一个整体,会经过一个一个的处理单元,在上一个处理单元处理结束之后,才会进入到下一个处理单元。


我们看下顺序批处理的流程图:


image.png


数据被作为一个整体,从一个处理器传到另外一个处理器。主要通过临时文件进行交互。每个处理器的输出被作为下一个处理器的输入,经过一次次的数据处理,最终得到要得的结果。


顺序批处理的优点是每个处理都是独立的,他们进行组合得到一个整体的顺序处理架构。

当然缺点就是不能并行,只能串行执行,吞吐量也不够。各个处理器之间只通过中间文件进行交互,交互程度不高。


管道和过滤器


顺序批处理中各个处理器的功能差异比较大,通常来说他们是不同的系统。如果在同一个系统中处理数据流任务,那么就需要用到管道和过滤器。


java 8引入了stream和管道的概念。一个集合可以转换成stream,通过对stream的操作,可以对整个数据流进行变换,最终得到想要的结果。


这种方法强调连续组件对数据的增量转换。 在这种方法中,数据流由数据驱动,整个系统可以分解为数据源、过滤器、管道和数据接收器等组件。


模块之间的连接是数据流,它是先进/先出的缓冲区,可以是字节流、字符流或任何其他类型的此类流。 这种架构的主要优点在于它的并发和增量执行。


这种模式下,最重要的组件就是过滤器,过滤器是独立的数据流转换器。 它转换输入数据流的数据,对其进行处理,并将转换后的数据流写入管道以供下一个过滤器处理。 它以增量模式工作,一旦数据通过连接的管道到达,它就会开始工作。


image.png


上图中的数据从管道出发,经过一个个的过滤器,最终得到处理过后的结果。


过滤器有两种类型,分别是主动型过滤器和被动型过滤器。主动型过滤器可以主动从管道中拉取数据,并将处理过后的数据推出。这种模式主要用于UNIX 管道。而被动型过滤器则是负责接收管道推入的数据。


这种模式的优点是可以提供高并发和高吞吐量。缺点就是不适合动态交互。


流程控制


还有一种模式,既不是批量处理也不是管道模式,他是根据输入内容的不同,来控制不同的执行流程。类似于我们程序中使用的判断语句。


总结



上面我们介绍了几种数据流的架构方式,希望大家能够喜欢。

相关文章
|
安全 物联网 物联网安全
带你读《工业物联网安全》之二:工业物联网数据流和安全架构
本书为读者提供了针对IIoT安全各个方面的综合理解,以及用来构建部署安全IIoT解决方案的实践技术。书中介绍IIoT安全的基本原则、威胁模型、参考架构,以及现实生活中的实例分析学习,涵盖了用来设计基于风险安全控制方案的各种实用工具,并且深入讨论了多层防御相关技术,包括IAM、终端安全、互联技术以及基于边界和云环境的应用。读者能够从本书中获得保护IIoT生命周期流程、标准化、治理与评估新兴技术适用性方面的实用经验,从而实现成规模、可靠且具有社会效益的互联系统。
|
前端开发 JavaScript 安全
Android MVI 架构:从双向绑定到单向数据流
现在从事Android开发多少都要懂点架构知识,从MVC、MVP再到MVVM,想必大家对于其各自的优缺点早已如数家珍。今天介绍的MVI与MVVM非常接近,可以针对性地弥补MVVM中的一些缺陷
2277 0
|
存储 缓存 前端开发
Android 架构之 MVI 雏形 | 响应式编程 + 单向数据流 + 唯一可信数据源(下)
Android 架构之 MVI 雏形 | 响应式编程 + 单向数据流 + 唯一可信数据源
479 1
|
存储 前端开发 安全
Android 架构之 MVI 雏形 | 响应式编程 + 单向数据流 + 唯一可信数据源
Android 架构之 MVI 雏形 | 响应式编程 + 单向数据流 + 唯一可信数据源
218 0
|
消息中间件 传感器 机器学习/深度学习
「物联网架构」MQTT 传感器数据流异常检测的深度学习KSQL UDF
「物联网架构」MQTT 传感器数据流异常检测的深度学习KSQL UDF
|
存储 运维 分布式计算
技术分享 | 被测系统架构与数据流分析
技术分享 | 被测系统架构与数据流分析
|
存储 运维 分布式计算
技术分享 | 被测系统架构与数据流分析
深入了解测试过程中被测系统的架构与数据流,有助于理解业务逻辑,梳理业务用例以及促进部门协同。 更深的理解业务逻辑是指要分析公司是做什么的,公司的重要的商务决策是什么,公司内部数据流是怎么运行的,有哪些常见的业务场景。这也能考验对公司业务的负责程度,可以更好的去服务业务部门,为公司创造价值。 ## 开源项目litemall系统架构 下面以开源项目 litemall 为例,分析一下这个项目中的系统
|
存储 运维 分布式计算
技术分享 | 被测系统架构与数据流分析
深入了解测试过程中被测系统的架构与数据流,有助于理解业务逻辑,梳理业务用例以及促进部门协同。 更深的理解业务逻辑是指要分析公司是做什么的,公司的重要的商务决策是什么,公司内部数据流是怎么运行的,有哪些常见的业务场景。这也能考验对公司业务的负责程度,可以更好的去服务业务部门,为公司创造价值。 ## 开源项目litemall系统架构 下面以开源项目 litemall 为例,分析一下这个项目中的系统
|
存储 运维 分布式计算
技术分享 | 被测系统架构与数据流分析
深入了解测试过程中被测系统的架构与数据流,有助于理解业务逻辑,梳理业务用例以及促进部门协同。 更深的理解业务逻辑是指要分析公司是做什么的,公司的重要的商务决策是什么,公司内部数据流是怎么运行的,有哪些常见的业务场景。这也能考验对公司业务的负责程度,可以更好的去服务业务部门,为公司创造价值。 ## 开源项目litemall系统架构 下面以开源项目 litemall 为例,分析一下这个项目中的系统
技术分享 | 被测系统架构与数据流分析
|
存储 NoSQL 关系型数据库
基于 MySQL + Tablestore 分层存储架构的大规模订单系统实践-数据流计算篇
背景在订单系统中,利用 Spark streamimg 或者 Flink 对接数据流并进行数据分析是一种常见请求。常见的场景如下:大促开始后,实时显示当前总成交金额。大促开始后,实时画出成交量走势图。……MySQL 若需要支持此类场景,需要开发应用,解析 binlog 中的数据,对接中间件,开发成本运维成本都会更高,且系统复杂度也会提升。而表格存储提供了通道服务,可以直接对接 Spark stre
684 0
基于 MySQL + Tablestore 分层存储架构的大规模订单系统实践-数据流计算篇