Flink SQL 开发 01:自动化部署和配置管理 - 教程
2025-12-17 19:12 tlnshuju 阅读(62) 评论(0) 收藏 举报主流方案
| 维度 | 1. 一体化平台(Dinky / StreamPark) | 2. 轻量工具链(Jinja2 + CI/CD) | 3. 云原生 GitOps(Argo CD + K8s) | 4. 商业平台(Ververica / 云厂商) |
|---|---|---|---|---|
| 上手难度 | ⭐⭐ 中等(需部署平台) | ⭐ 简单(脚本驱动) | ⭐⭐⭐ 高(需 K8s/GitOps 基础) | ⭐⭐ 中等(商业支持) |
| 开发体验 | ✅ 可视化 IDE、变量管理、模板 | ❌ 纯代码/脚本 | ❌ 无 UI,依赖 YAML/脚本 | ✅ 专业 UI + 审计 |
| 配置管理 | ✅ 内置变量中心,支持多环境 | ✅ YAML/JSON 外置配置 | ✅ ConfigMap + Secrets | ✅ Vault / KMS 集成 |
| 敏感信息安全 | ✅ 密码脱敏存储(可加密) | ⚠️ 依赖 CI Secrets | ✅ K8s Secrets / Vault | ✅✅ 企业级密钥管理 |
| 多环境支持 | ✅ 集群绑定 + 变量隔离 | ✅ 多 config 文件 | ✅ Argo CD Application per env | ✅ 环境标签/命名空间 |
| CI/CD 集成 | ✅ Webhook / API 触发 | ✅ 原生支持(GitHub Actions 等) | ✅ GitOps 自动同步 | ⚠️ 依赖厂商 API |
| 作业可观测性 | ✅ 日志、状态、Savepoint | ❌ 需自行对接监控 | ⚠️ 依赖 Flink UI / Prometheus | ✅ 全链路监控 + 告警 |
| CDC YAML 支持 | ⚠️ 需转为 SQL | ❌ 不支持 | ❌ 不支持 | ✅✅ 原生支持 |
| 成本 | 0(开源) | 0 | 0(但人力成本高) | 商业授权 / 云费用 |
| 适用团队 | 中小团队、数据平台组 | DevOps 能力强的小团队 | 云原生成熟的大厂 | 金融/政企/重度用户 |
开发工具
| 工具 | 开源 | SQL 编辑器 | 变量/模板 | 密码安全 | 多环境 | CDC YAML | 部署难度 |
|---|---|---|---|---|---|---|---|
| Dinky | ✅ | ⭐⭐⭐⭐⭐ | ✅ | ✅(脱敏) | ✅ | ⚠️(需转 SQL) | 中 |
| StreamPark | ✅ | ⭐⭐ | ✅(ConfigMap) | ✅ | ✅ | ✅ | 中高 |
| Ververica | ❌ | ⭐⭐⭐⭐⭐ | ✅ | ✅✅(Vault) | ✅ | ✅✅ | 高 |
| 阿里云 Flink | ❌ | ⭐⭐⭐⭐ | ✅ | ✅(KMS) | ✅ | ✅ | 低(托管) |
| VS Code 插件 | ✅ | ⭐⭐ | ❌ | ❌ | ❌ | ❌ | 低 |
维护方式对比
| 维护方式 | 动态表名 | 密码安全 | 多环境支持 | 自动化 | 适用场景 | 推荐指数 |
|---|---|---|---|---|---|---|
| 1. 硬编码 | ❌ | ❌ | ❌ | ❌ | 本地测试 | ⭐ |
| 2. 敏感值占位符 | ❌ | ✅ | ⚠️(需换文件) | ✅ | 认证参数 | ⭐⭐⭐⭐ |
| 3. SQL 模板 + 渲染 | ✅ | ✅ | ✅ | ✅ | 通用生产 | ⭐⭐⭐⭐⭐ |
| 4. Flink CDC YAML | ✅ | ✅ | ✅ | ✅ | CDC 同步 | ⭐⭐⭐⭐⭐ |
| 5. K8s ConfigMap | ⚠️ | ✅ | ✅ | ✅ | K8s 环境 | ⭐⭐⭐⭐ |
| 6. 编程 API + 配置中心 | ✅ | ✅✅ | ✅ | ✅ | 高安全企业 | ⭐⭐⭐ |
关键结论:
- CDC 场景 → 用 YAML(方式 4)
- 通用 SQL 场景 → 用模板渲染(方式 3) + 敏感值占位符(方式 2)
- K8s 环境 → 结合方式 3 + 5
- 永远不要用方式 1(硬编码)上生产
Dinky
安装
数据库初始化(mysql)
#登录mysql
mysql -uroot -p
#创建数据库
CREATE DATABASE dinky;
#创建用户并允许远程登录
create user 'dinky'@'%' IDENTIFIED WITH mysql_native_password by 'Admin1234';
#授权
grant ALL PRIVILEGES ON dinky.* to 'dinky'@'%';
flush privileges;
解压到指定目录
tar -xzf dinky-release-1.19-1.2.3.tar.gz
mv dinky-release-1.19-1.2.3 /opt/module/
cd /opt/module/
配置环境变量
sudo vim /etc/profile.d/myprofile.sh
#设置 dinky 环境变量
export DINKY_HOME=/opt/module/dinky-release-1.19-1.2.3
export PATH=$DINKY_HOME/bin:$PATH
# 配置生效
source /etc/profile
配置 application.yml
vim $DINKY_HOME/config/application.yml
# 修改 Dinky 所使用的数据库类型为 mysql
spring:
application:
name: Dinky
profiles:
# The h2 database is used by default. If you need to use other databases, please set the configuration active to: mysql, currently supports [mysql, pgsql, h2]
# If you use mysql database, please configure mysql database connection information in application-mysql.yml
# If you use pgsql database, please configure pgsql database connection information in application-pgsql.yml
# If you use the h2 database, please configure the h2 database connection information in application-h2.yml,
# note: the h2 database is only for experience use, and the related data that has been created cannot be migrated, please use it with caution
active: ${DB_ACTIVE:mysql} #[h2,mysql,pgsql]
修改mysql 配置文件
vim $DINKY_HOME/config/application-mysql.yml
# 修改 Dinky 的 mysql 链接配置
spring:
datasource:
url: jdbc:mysql://${MYSQL_ADDR:127.0.0.1:3306}/${MYSQL_DATABASE:dinky}?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
username: ${MYSQL_USERNAME:dinky}
password: ${MYSQL_PASSWORD:Admin1234}
driver-class-name: com.mysql.cj.jdbc.Driver
修改参数(针对 JDK 11)
vim $DINKY_HOME/bin/auto.sh
注掉这一行

上传依赖
cp $FLINK_HOME/lib/* $DINKY_HOME/extends/flink1.19
# 解决planner 找不到或冲突
rm $DINKY_HOME/extends/flink1.19/flink-table-planner-loader-1.19.3.jar
cp $FLINK_HOME/opt/flink-table-planner_2.12-1.19.3.jar $DINKY_HOME/extends/flink1.19
管理
启停
| 启动 | $DINKY_HOME/bin/auto.sh start |
| 停止 | $DINKY_HOME/bin/auto.sh stop |
| 重启 | $DINKY_HOME/bin/auto.sh restart |
| 查看状态 | $DINKY_HOME/bin/auto.sh status |
| 前台启动(调试使用) | $DINKY_HOME/bin/auto.sh startOnPending |
$DINKY_HOME/bin/auto.sh start
DINKY_HOME is already set to: /opt/module/dinky-release-1.19-1.2.3
DINKY_HOME : /opt/module/dinky-release-1.19-1.2.3 , JAVA_VERSION : 17.0 , FLINK_VERSION : 1.19
From /opt/module/dinky-release-1.19-1.2.3/config/application.yml server.port: 8888
>>>>>>>>>>>>>>>>>>>>> Starting application... <<<<<<<<<<<<<<<<<<<<<<<
[==================================================] 100%(time consuming: 00:00:14)
........................................Start Dinky Successfully........................................
current log path : /opt/module/dinky-release-1.19-1.2.3/logs/dinky-start.log , you can execute tail -fn1000 /opt/module/dinky-release-1.19-1.2.3/logs/dinky-start.log to watch the log
查看日志
tail -fn1000 /opt/module/dinky-release-1.19-1.2.3/logs/dinky-start.log

访问 web
浏览器打开:登录 - Dinky Real-time Platform

设置密码




注册 flink 实例

注册数据源
注册mysql数据库


jdbc:mysql://mydoris:3306/app_db?useSSL=false&serverTimezone=UTC
注册doris数据库

浙公网安备 33010602011771号