基于 Golang 实现一个类似 SeaTunnel 的数据同步工具, 主要是为了简便易用
- 数据源多样:兼容基本常用的数据源。
- 管理和维护简单:基于容器化部署或二进制部署,部署维护简便
- 资源利用率高/高性能:Golang 天然资源利用率高 + Channel 实现的高性能同步数据流
-
Windows 下需要安装 make 命令
-
golangci-lint
- 安装:
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.59.1
或brew install golangci-lint
- 检查:
golangci-lint --version
- 安装:
-
nilaway
- 安装:
go install go.uber.org/nilaway/cmd/nilaway@latest
- 检查:
nilaway ./...
- 安装:
- 配置文件示例: example/kafka_to_http.json
{
"streams": [
{
"name": "stream-1",
"enable": true,
"channel_size": 1000,
"source": [
{
"type": "Kafka",
"source_name": "kafka-1",
"kafka": {
"address": "kfk-01.com:9092,kfk-01.com:9092,kfk-01.com:9092",
"group": "test-default",
"topic": "data-pipeline-events"
}
}
],
"transform": {
"mode": "json",
"schemas": [
{
"source_key": "key",
"sink_key": "key",
"converter": "toString",
"is_ignore": false,
"is_strict_mode": true,
"is_keep_keys": true,
"source_name": "kafka-1",
"sink_name": "http-1"
}
]
},
"sink": [
{
"type": "HTTP",
"sink_name": "http-1",
"http": {
"url": "http://0.0.0.0:8000/api/v1",
"content_type": "application/json",
"headers": {
"key": "value"
}
}
}
]
}
]
}
- 配置文件说明:
- 配置文件的格式为 json 格式
- 配置文件的
streams
内容为一个数组, 数组中的每个元素为一个作业 source
为输入源transform
为数据转换sink
为输出源- 该示例中的作业为从 kafka 读取数据, 然后将数据转换为 json 格式, 然后将数据发送到 http 服务
# go version >= 1.22.0
# 以本地配置文件为例
export CONFIG_SRC=local
export LOCAL_PATH=../example/kafka_to_http.json
cd data-pipeline-go/cmd && go run main.go
# go version >= 1.22.0
cd data-pipeline-go/cmd
# 设置环境变量
export CONFIG_SRC=local
export LOCAL_PATH=example/kafka_to_http.json
# 编译项目
go build -o data-pipeline-go ./main.go
# 启动项目
./data-pipeline-go