Nifi简介
Apache Nifi是一款基于数据流设计系统。它支持高度可配置的组件、数据路由、数据转换,支持目前大多数数据源的动态拉取数据。以下是Apache Nifi官网架构图。
简而言之,Nifi是一款基于Web图形界面,通过拖拽、连接、配置完成基于流程的系统,实现数据采集、数据转换、数据同步等功能。
分布式关系型数据库
以天翼云的DRDS为例,分布式关系型数据库系统,一般指的基于 MySQL 存储、采用分库分表技术进行水平扩展的分布式 OLTP 数据库服务产品,其核心能力采用标准关系型数据库技术实现,构建与公共云( cloud native ),配合完善的管控运维及产品化能力,使其具备稳定可靠、高度可扩展、持续可运维、类传统单机 MySQL 数据库体验的特点。
数据同步实现
首先,如果只是少数据量的同步,对于分布式关系型数据库的来说,可以直接基于逻辑库去做数据同步,一般的分布式关系型数据库本身就能兼容Mysql协议,可以通过使用mysql的数据拉取组件和方法去简单的实现数据同步。但是在数据量比较庞大的时候,这样做很容易会遇到问题,比如数据一致性问题,断点重传问题,还有实时数据同步实现等问题。为了能让数据同步更加的可靠,更加的高效,我们会去使用分布式关系型数据库系统的具体物理库节点去做数据库同步,也可以理解成是多source单sink的数据同步。
首先由于各种分布式关系型数据库的物理库表获取信息都不太相同,实时同步的是现实上,建议是直接使用物理库连接信息去做数据同步
而离线数据同步的实现,基于nifi开发了一个获取分库分表信息的组件:FetchUdalTables去获取逻辑表所对应的物理库表信息,该组件会把各个分库分表信息获取到每个文件的属性里。
然后通过DBCPConnectionPoolLookup去各个物理库的连接信息,根据文件属性里不同的数据库名路由到不同的物理库,连接物理库之后再去实现数据拉取,连接物理库之后就能实现高效的数据同步了。