# data-flow
**Repository Path**: elfbobo_admin/data-flow
## Basic Information
- **Project Name**: data-flow
- **Description**: 一个高度配置化的数据处理(ETL)框架, 功能强大, 配置简单
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 10
- **Created**: 2020-11-11
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# data-flow
## 介绍
一个数据处理框架, 可从一个或多个源端将数据处理并同步至一个或多个目标端, 全配置化同步策略, 借助于SpringEL表达式, 支持强大的逻辑处理
## 依赖环境
- Java: 基于Java SE 8+ 开发
- MongoDB: 用于存储程序的配置文件, 或者也可自行实现配置的增删改方式
- Redis
- Kafka: 若消息从kafka接入(例如canal, ogg等工具)或者需要写入目标为Kafka, 则需要配置kafka
- MySQL: 写入目标为MySQL时需要
- 其他: 若数据需要写入到Oracle, SQLServer, Rocket, Rabbit等存储介质时, 需要对应配置
## 使用教程
- data-flow-starter模块作为spring starter引入其他项目中, 可高度定制化
- data-flow-server模块可直接启动, 使用了默认的配置化数据处理方案
## 架构介绍
### 核心概念
- 流(Flow)
数据流, 一条流中可包含多个节点, 数据会一一经过这些节点去处理, 除第一个节点外, 其余每一个节点的输入都是上一个节点的输出, 在每个节点中, 都可以访问到原始数据(SourceEntity), 都可以进行转换、服务调用、导出操作,多个流之间互不干扰, 一条数据可并行进入多个流处理
- SourceEntity(ink.andromeda.dataflow.core.SourceEntity)
原始数据的抽象, 所有输入的数据都需要转换为SourceEntity, 字段及含义如下:
- `id`: long类型, 保留字段, 暂未使用到
- `key`: String类型, 业务含义的主键, 保留字段, 暂未使用到
- `source`: String类型, 源名称, 一般对应于一个数据源实例
- `schema`: String类型, 一般指数据库名称
- `name`: String类型, 一般指表名称
- `data`: Map类型, 数据的载体
- `before`: Map类型, 在canal, ogg场景下当前数据的上一状态
- `timestamp`: long类型, 数据的发送时间戳
- `opType`: String类型, 数据的更新类型, 例如UPDATE,DELETE,INSERT
说明: source, schema, name也可视使用场景不同而赋予其他意义, 默认的描述含义是在关系型数据库的同步的场景下。
- TransferEntity(ink.andromeda.dataflow.core.TransferEntity)
数据在数据流节点中转化时的中间结果, 字段含义与SourceEntity类似
### 自定义Bean
todo
### 附录
#### Docker下的Canal搭建
todo