Flink学习笔记

Published: by Creative Commons Licence

  • Tags:

简介

Flink是一个分布式流处理器,它以容错的方式在大规模的集群中运行。2014年4月份Flink作为孵化项目加入了Apache软件基金会,并在2015年的一月变成顶级项目。

一般应用分为两层,数据处理层(应用本身)和数据存储层(传统数据库)。

一般,会提供一个面向用户的外部服务,并持续地监听客户事件,而客户事件最后会导致远程数据库数据的变更。通常一个数据库系统需要对多个应用提供服务。这种情况下,如果应用需要升级或横向扩展,这样的话就会出现多个应用同时使用相同的数据,这时候对于应用的开发人员和DBA都提出了更高的要求。

现在一种常见的方案就是使用微服务架构,遵循UNIX的设计哲学,每个服务只做单一的工作,并将工作做好。不同的服务之间通过标准的接口,比如REST风格的HTTP请求来交互,因此不同的服务可以采用不同的技术栈,使用不同的数据库,部署在不同的容器上。

由于上面提到微服务使用了不同的数据库,这为数据分析(我们可能需要联合查询)带来了困难。我们一般会建立一个数据仓库,并将需要用到的数据从这些传统数据库拷贝到我们的数据仓库中,这个拷贝的过程叫做提取-转换-装载(extract-transform-load,ETL)。ETL的过程大概为从关系型数据库中提取数据,转换数据成通用形式,去重,校验,编码,最后装载到数据仓库中。我们还需要周期性地执行ETL过程,来保证数据仓库中的数据和事务数据库中的数据的同步。

数据仓库中的数据一般用于生成报告,以及提供一些专门的查询。

参考资料

  • 《Stream Processing with Apache Flink》