Rope 是一款轻量级别的 ETL (Extract-Transform-Load) 工具。主要用于从不同源获取/接受数据,然后统一处理数据后,写入到各种目标源;系统采用多级缓冲和数据缓存,每秒可处理上万级别的数据;而且系统采用插件扩展系统的各个组件,针对不同需求扩展不同插件。

特性

  1. 轻量级别、快速、简单,入门门槛低
  2. 基于Springboot开发
  3. 扩展性强,基于插件开发,可根据不同需求来开发数据读取者、数据处理器、数据写入者
  4. 既可通过UI界面来构建流程、也可以使用jsonyml文件构建流程
  5. 基于 Disruptor 做的缓冲,并新增缓存(内存、redis、rocksdb等),处理速度快

核心模块

输入模块

用于控制数据的输入动作。主要包括两种类型:主动获取型输入、被动接受性输入。

数据读取者

该模块主要是读取数据的具体实现,可自行扩展。不能单独运行,需要作用于 主动获取型Input上才能运行。

数据传输模块

主要对数据进行传送,系统中存在两种数据传输:一个是用于把输入模块输入的数据传输到数据处理器中,另一个是把数据处理器处理后的数据传输到输出模块中。目前支持默认的数据传输器和基于Disruptor的缓冲数据传输器,在实际环境中建议Disruptor的缓冲数据传输器。

数据处理器模块

该组件为数据处理器,其作用是处理数据,比如将字符型数据处理成其他类型、丢弃某数据、新增某数据字段。该组件可自行扩展,是非必须组件。

数据输出模块

该组件主要用于系统数据的输出,即将数据以哪种方式输出,它并不关心数据输出到哪里去,只关心数据如何输出。

数据写入者

该组件为具体数据写入的实现,它主要关心数据写入到哪里去,为数据输出的具体实现。必须作用于Output上才能运行

数据转换器-Converter

数据转换器,该组件主要用于数据类型的转换,大部分情况是配合Reader Writer实现的,核心思想是让Reader Writer关心数据的读取、写入,它关心数据类型的转换细节。这样就具有很强的扩展性。