随着数据量越来越来,越来越被人们所应用,数据也越来越被重视,离线数据处理已经远远不能满足业务上的一些需求,而基于流的数据处理将成为整个数据架构的核心,本文主要基于Flink介绍一下流处理的架构以及在数据处理中所扮演的重要角色。

本文首先介绍一下传统架构和流处理结构的异同之处:

传统的数据处理架构是采用一个中心化的数据库系统,主要用于存储事务性数据,这些数据反映了当前的业务状态。需要新鲜的数据的应用程序都依靠数据库实现,分布式文件系统则用来存储不需要经常更新的历史数据,但随着大型分布式系统中的计算复杂度不断上升,这种架构已经不堪重负。在开发过程中经常会遇到以下问题:

1,从数据库中的数据到达数据分析的过程太复杂,太缓慢;

2,传统数据架构单一;数据库是唯一正确数据源,所有应用程序都需要通过访问数据库来获取数据;

3,由于传统架构存在复杂的异常问题处理方法,当异常问题出现后,很难保证系统还能很好的运行;

4,需要通过大型分布系统中不断更新来维护保持一致的全局状态,苏子河系统规模越来越大,维持实际数据和状态数据间的一致性越来越困难;

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

流处理的核心:消息传输层和流处理层

1,消息传输层是指从各种数据源采用连续事件产生的数据,并传输给订阅了这些数据的应用程序和服务。

2,流处理层是指持续地将数据在用用程序和系统间移动,并进行聚合并处理时间,在本地维持应用程序的状态。

Flink项目中消息传输层目前有Kafka和MapR Streams两种技术可以很好的提供所需的功能。而消息传输层需要具备以下理想功能:

(1)兼备高性能和持久性:

具有持久性的好处之一是消息可以重播,这个功能使得FLink处理器对时间流的某一部分可以进行重播和在计算。

(2)将生产者和消费者解耦:

从生产者到达消费者,到达的消息既可以立刻被使用,也可以稍后被使用。消费者从对垒中订阅消息,而不是由生产者向所有消费者广播,在消息达到的时候,消费者不必处于运行状态。采用解耦的消息传输系统很有意义,因为它能支持微服务,也支持将处理步骤中实现过程隐藏起来,从而允许自由的修改实现过程。