Commit 23e544d1 authored by wenmo's avatar wenmo

update 0.6.0 markdown

parent 05a0f6f5
<font size=7>English|[简体中文](README.zh-CN.md)</font>
# Dinky # Dinky
Dinky is a visual, lightweight and interactive Studio based on Apache Flink,You can develop, complete, verify, execute, and preview FlinkSQL online, and support all official Flink syntax and its enhanced syntax.In addition, operation and maintenance operations such as submitting, stopping, and saving points can be performed on multiple Flink cluster instances at the same time.
Learn more about Dinky at http://www.dlink.top [![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)
[![Total Lines](https://tokei.rs/b1/github/DataLinkDC/dlink?category=lines)](https://github.com/DataLinkDC/dlink)
[![CN doc](https://img.shields.io/badge/文档-中文版-blue.svg)](README_zh_CN.md)
[![EN doc](https://img.shields.io/badge/document-English-blue.svg)](README.md)
[![Stargazers over time](https://starchart.cc/DataLinkDC/dlink.svg)](https://starchart.cc/DataLinkDC/dlink)
## 简介
实时即未来,Dlink 为 Apache Flink 而生,让 Flink SQL 纵享丝滑,并致力于实时计算平台建设。
Dinky 基于 Apache Flink 实现 Dlink ,增强 Flink 的应用与体验,探索流式数仓。即站在巨人肩膀上创新与实践,Dinky 在未来批流一体的发展趋势下潜力无限。
最后,Dinky 的发展皆归功于 Apache Flink 等其他优秀的开源项目的指导与成果。
## 特点
一个基于 `Apache Flink` 二次开发且 `易扩展``一站式` 开发运维 `FlinkSQL``SQL` 的实时计算平台。致力于解决 `实时``离线` 数据开发、数仓建设流程中大量复杂的 `数据口径`,使 `实时、准实时、离线一体`的数据开发平台在数据治理流程中`开箱即用`
其主要目标如下:
- 可视化交互式 FlinkSQL 和 SQL 的数据开发平台:自动提示补全、语法高亮、调试执行、语法校验、语句美化、全局变量等
- 支持全面的多版本的 FlinkSQL 作业提交方式:Local、Standalone、Yarn Session、Yarn Per-Job、Kubernetes Session、Kubernetes Application
- 支持 Apache Flink 所有的 Connector、UDF、CDC等
- 支持 FlinkSQL 语法增强:兼容 Apache Flink SQL、表值聚合函数、全局变量、CDC多源合并、执行环境、语句合并、共享会话等
- 支持易扩展的 SQL 作业提交方式:ClickHouse、Doris、Hive、Mysql、Oracle、Phoenix、PostgreSql、SqlServer 等
- 支持实时调试预览 Table 和 ChangeLog 数据及图形展示
- 支持语法逻辑检查、作业执行计划、字段级血缘分析等
- 支持 Flink 元数据、数据源元数据查询及管理
- 支持实时任务运维:作业上线下线、作业信息、集群信息、作业快照、异常信息、作业日志、数据地图、即席查询、历史版本、报警记录等
- 支持作为多版本 FlinkSQL Server 的能力以及 OpenApi
- 支持易扩展的实时作业报警及报警组:钉钉、微信企业号等
- 支持完全托管的 SavePoint 启动机制:最近一次、最早一次、指定一次等
- 支持多种资源管理:集群实例、集群配置、Jar、数据源、报警组、报警实例、文档、用户、系统配置等
- 更多隐藏功能等待小伙伴们探索
## 原理
![dinky_principle](https://raw.githubusercontent.com/DataLinkDC/dlink/main/dlink-doc/images/main/dinky_principle.png)
## 精彩瞬间
> FlinkSQL Studio
![flinksqlstudio](https://raw.githubusercontent.com/DataLinkDC/dlink/main/dlink-doc/images/060/flinksqlstudio.png)
> 实时调试预览
![selectpreview](https://raw.githubusercontent.com/DataLinkDC/dlink/main/dlink-doc/images/060/selectpreview.png)
> 语法和逻辑检查
![checksql](https://raw.githubusercontent.com/DataLinkDC/dlink/main/dlink-doc/images/060/checksql.png)
> JobPlan
![jobplan](https://raw.githubusercontent.com/DataLinkDC/dlink/main/dlink-doc/images/060/jobplan.png)
> 字段级血缘分析
![lineage](https://raw.githubusercontent.com/DataLinkDC/dlink/main/dlink-doc/images/060/lineage.png)
> BI 展示
![charts](https://raw.githubusercontent.com/DataLinkDC/dlink/main/dlink-doc/images/060/charts.png)
> 元数据查询
![metadata](https://raw.githubusercontent.com/DataLinkDC/dlink/main/dlink-doc/images/060/metadata.png)
> 实时任务监控
![monitor](https://raw.githubusercontent.com/DataLinkDC/dlink/main/dlink-doc/images/060/monitor.png)
> 实时作业信息
![jobinfo](https://raw.githubusercontent.com/DataLinkDC/dlink/main/dlink-doc/images/060/jobinfo.png)
> 数据地图
![datamap](https://raw.githubusercontent.com/DataLinkDC/dlink/main/dlink-doc/images/060/datamap.png)
> 数据源注册
![datasource](https://raw.githubusercontent.com/DataLinkDC/dlink/main/dlink-doc/images/060/datasource.png)
## 功能
详见 [功能](https://github.com/DataLinkDC/dlink/blob/dev/docs/zh-CN/feature.md)
## 近期计划
- 多租户及命名空间
- 全局血缘与影响分析
- 统一元数据管理
- Flink 元数据持久化
- 多版本 Flink-Client Server
- 整库千表同步
## 参与贡献
欢迎您为社区贡献自己的力量,共建共赢,贡献流程请参考: [[参与贡献]()]
## 如何部署
详见 [编译](https://github.com/DataLinkDC/dlink/blob/dev/docs/zh-CN/quick_start/build.md)[安装](https://github.com/DataLinkDC/dlink/blob/dev/docs/zh-CN/quick_start/deploy.md)
## 如何升级到最新
执行 sql 目录下的 dlink_history.sql 中的部分升级语句,依据是通过版本号与日期来判断从何处开始执行,请不要直接执行全部 sql。
## 感谢
站在巨人的肩膀上,Dinky 才得以诞生。对此我们对使用的所有开源软件及其社区表示衷心的感谢!我们也希望自己不仅是开源的受益者,也能成为开源的贡献者,也希望对开源有同样热情和信念的伙伴加入进来,一起为开源献出一份力!致谢列表如下:
## Main features
## Compile
See [Compilation](https://github.com/DataLinkDC/dlink/blob/dev/docs/zh-CN/quick_start/build.md)
## install
See [install](https://github.com/DataLinkDC/dlink/blob/dev/docs/zh-CN/quick_start/deploy.md)
## Technology
[Apache Flink](https://github.com/apache/flink) [Apache Flink](https://github.com/apache/flink)
[Mybatis Plus](https://github.com/baomidou/mybatis-plus) [Apache Dolphinscheduler](https://github.com/apache/dolphinscheduler)
[ant-design-pro](https://github.com/ant-design/ant-design-pro) [Ant-Design-Pro](https://github.com/ant-design/ant-design-pro)
[Mybatis Plus](https://github.com/baomidou/mybatis-plus)
[Monaco Editor](https://github.com/Microsoft/monaco-editor) [Monaco Editor](https://github.com/Microsoft/monaco-editor)
[SpringBoot]() [SpringBoot]()
## License 感谢 [JetBrains](https://www.jetbrains.com/?from=dlink) 提供的免费开源 License 赞助。
## thanks
Thanks to [JetBrains](https://www.jetbrains.com/?from=dlink) for sponsoring a free open source license [![JetBrains](https://raw.githubusercontent.com/DataLinkDC/dlink/main/dlink-doc/images/main/jetbrains.svg)](https://www.jetbrains.com/?from=dlink)
## 获得帮助
[![JetBrains](https://gitee.com/DataLinkDC/dlink/raw/main/dlink-doc/images/main/jetbrains.svg)](https://www.jetbrains.com/?from=dlink) 1.提交 issue
## recent plan 2.进入微信用户社区群(推荐,添加微信号 wenmo_ai 邀请进群)和QQ用户社区群(**543709668**)交流,申请备注 “ Dinky + 企业名 + 职位”,不写不批
1.Task Lifecycle Management 3.关注微信公众号获取相关内容的文章(最新消息获取建议关注):[DataLink数据中台](https://mmbiz.qpic.cn/mmbiz_jpg/dyicwnSlTFTp6w4PuJruFaLV6uShCJDkzqwtnbQJrQ90yKDuuIC8tyMU5DK69XZibibx7EPPBRQ3ic81se5UQYs21g/0?wx_fmt=jpeg)
2.Job monitoring and operation and maintenance 4.关注 bilibili UP 主(是文末呀)获取最新视频教学
3.Streaming Job Automatic Recovery 5.访问 [GithubPages](https://datalinkdc.github.io/dlink/#/)[官网](http://www.dlink.top/#/) 网址,阅读最新文档手册
4.Job log view ## 版权
5.Dingding alarm and push 请参考 [LICENSE](https://github.com/DataLinkDC/dlink/blob/main/LICENSE) 文件。
\ No newline at end of file
# Dinky # Dinky
## 简介 [![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)
[![Total Lines](https://tokei.rs/b1/github/DataLinkDC/dlink?category=lines)](https://github.com/DataLinkDC/dlink)
实时即未来,Dinky 为 Apache Flink 而生,让 Flink SQL 纵享丝滑,并致力于实时计算平台建设。 [![CN doc](https://img.shields.io/badge/文档-中文版-blue.svg)](README_zh_CN.md)
[![EN doc](https://img.shields.io/badge/document-English-blue.svg)](README.md)
Dinky 架构于 Apache Flink,增强 Flink 的应用与体验,探索流式数仓。即站在巨人肩膀上创新与实践,Dinky 在未来批流一体的发展趋势下潜力无限。
最后,Dinky 的发展皆归功于 Apache Flink 等其他优秀的开源项目的指导与成果。
## 发展
[![Stargazers over time](https://starchart.cc/DataLinkDC/dlink.svg)](https://starchart.cc/DataLinkDC/dlink) [![Stargazers over time](https://starchart.cc/DataLinkDC/dlink.svg)](https://starchart.cc/DataLinkDC/dlink)
## 原理 ## 简介
![](https://gitee.com/DataLinkDC/dlink/raw/main/dlink-doc/images/main/dinky_principle.png) 实时即未来,Dlink 为 Apache Flink 而生,让 Flink SQL 纵享丝滑,并致力于实时计算平台建设。
## 功能 Dinky 基于 Apache Flink 实现 Dlink ,增强 Flink 的应用与体验,探索流式数仓。即站在巨人肩膀上创新与实践,Dinky 在未来批流一体的发展趋势下潜力无限。
注意:以下功能均为对应版本已实现的功能,实测可用。 最后,Dinky 的发展皆归功于 Apache Flink 等其他优秀的开源项目的指导与成果。
| 应用 | 方向 | 功能 | 进展 |
|:-------:|:----------:|-------------------------------------------|:-----:|
| 开发中心 | FlinkSQL | 支持 sql-client 所有语法 | 0.4.0 |
| | | 支持 Flink 所有 Configuration | 0.4.0 |
| | | 支持 Flink 所有 Connector | 0.4.0 |
| | | 支持 Flink 批流两种模式 | 0.6.0 |
| | | 支持 SELECT、SHOW、DESC 等查询实时预览 | 0.4.0 |
| | | 支持 INSERT 语句集 | 0.4.0 |
| | | 新增 SQL 片段语法(全局变量) | 0.4.0 |
| | | 新增 AGGTABLE 表值聚合语法及 UDATF 支持 | 0.4.0 |
| | | 新增 CDCSOURCE 多源合并语法支持 | 0.6.0 |
| | | 新增 FlinkSQLEnv 执行环境复用 | 0.5.0 |
| | | 新增 Flink Catalog 交互查询 | 0.4.0 |
| | | 新增 执行环境的共享与私有会话机制 | 0.4.0 |
| | | 新增 多种方言的作业目录管理(FlinkSQL、SQL、Java) | 0.5.0 |
| | | 新增 作业配置与执行配置管理 | 0.4.0 |
| | | 新增 作业生命周期管理 | 0.6.0 |
| | | 新增 基于 Explain 的语法校验与逻辑解析 | 0.4.0 |
| | | 新增 JobPlan 图预览 | 0.5.0 |
| | | 新增 基于 StreamGraph 的字段级血缘分析 | 0.6.0 |
| | | 新增 基于上下文元数据自动提示与补全 | 0.4.0 |
| | | 新增 自定义规则的自动提示与补全 | 0.4.0 |
| | | 新增 关键字高亮与代码缩略图 | 0.4.0 |
| | | 新增 选中片段执行 | 0.4.0 |
| | | 新增 布局拖拽 | 0.4.0 |
| | | 新增 SQL导出 | 0.5.0 |
| | | 新增 快捷键保存、校验、美化 | 0.5.0 |
| | | 支持 local 模式下 FlinkSQL 提交 | 0.4.0 |
| | | 支持 standalone 模式下 FlinkSQL 提交 | 0.4.0 |
| | | 支持 yarn session 模式下 FlinkSQL 提交 | 0.4.0 |
| | | 支持 yarn per-job 模式下 FlinkSQL 提交 | 0.4.0 |
| | | 支持 yarn application 模式下 FlinkSQL 提交 | 0.4.0 |
| | | 支持 kubernetes session 模式下 FlinkSQL 提交 | 0.5.0 |
| | | 支持 kubernetes application 模式下 FlinkSQL 提交 | 0.5.0 |
| | | 支持 UDF Java 方言Local模式在线编写、调试、动态加载 | 0.5.0 |
| | Flink 作业 | 支持 yarn application 模式下 Jar 提交 | 0.4.0 |
| | | 支持 k8s application 模式下 Jar 提交 | 0.5.0 |
| | | 支持 作业 Cancel | 0.4.0 |
| | | 支持 作业 SavePoint 的 Cancel、Stop、Trigger | 0.4.0 |
| | | 新增 作业自动从 SavePoint 恢复机制(包含最近、最早、指定一次) | 0.4.0 |
| | Flink 集群 | 支持 查看已注册集群的作业列表与运维 | 0.4.0 |
| | | 新增 自动注册 Yarn 创建的集群 | 0.4.0 |
| | Flink 版本 | 支持 1.11.0+ | 0.4.0 |
| | | 支持 1.12.0+ | 0.4.0 |
| | | 支持 1.13.0+ | 0.4.0 |
| | | 支持 1.14.0+ | 0.4.0 |
| | SQL | 新增 外部数据源的 SQL 校验 | 0.5.0 |
| | | 新增 外部数据源的 SQL 执行与预览 | 0.5.0 |
| | BI | 新增 折线图的渲染 | 0.5.0 |
| | | 新增 条形图图的渲染 | 0.5.0 |
| | | 新增 饼图的渲染 | 0.5.0 |
| | 元数据 | 新增 查询外部数据源的元数据信息 | 0.4.0 |
| | | 新增 FlinkSQL 和 SQL 的自动生成 | 0.6.0 |
| | | 新增 自动将连接信息注入片段机制 | 0.6.0 |
| | 归档 | 新增 执行与提交历史 | 0.4.0 |
| 运维中心 | 主页 | 新增 任务实例列表 | 0.6.0 |
| | 作业监控 | 新增 作业总览 | 0.6.0 |
| | | 新增 实时监控 Flink Job | 0.6.0 |
| | | 新增 作业实例与历史切换 | 0.6.0 |
| | | 新增 自动告警 | 0.6.0 |
| | | 新增 FlinkWebUI 跳转 | 0.6.0 |
| | | 新增 智能重启(重新上线) | 0.6.0 |
| | | 新增 智能停止(下线) | 0.6.0 |
| | | 新增 SavePoint 多种操作 | 0.6.0 |
| | | 新增 报警推送 | 0.6.0 |
| | | 新增 配置信息 | 0.6.0 |
| | | 新增 集群信息 | dev |
| | | 新增 作业快照 | dev |
| | | 新增 异常信息 | 0.6.0 |
| | | 新增 作业日志 | dev |
| | | 新增 自动调优 | dev |
| | | 新增 FlinkSQL | 0.6.0 |
| | | 新增 数据地图 | 0.6.0 |
| | | 新增 即席查询 | dev |
| | | 新增 历史版本 | dev |
| | | 新增 告警记录 | 0.6.0 |
| 注册中心 | Flink 集群实例 | 新增 外部 Flink 集群实例注册 | 0.4.0 |
| | | 新增 外部 Flink 集群实例心态检测与版本获取 | 0.4.0 |
| | | 新增 外部 Flink 集群手动一键回收 | 0.4.0 |
| | Flink 集群配置 | 新增 Flink On Yarn 集群配置注册及测试 | 0.4.0 |
| | User Jar | 新增 外部 User Jar 注册 | 0.4.0 |
| | 数据源 | 新增 Mysql 数据源注册及测试 | 0.4.0 |
| | | 新增 Oracle 数据源注册及测试 | 0.4.0 |
| | | 新增 PostgreSql 数据源注册及测试 | 0.4.0 |
| | | 新增 ClickHouse 数据源注册及测试 | 0.4.0 |
| | | 新增 Doris 数据源注册及测试 | 0.6.0 |
| | | 新增 Phoenix 数据源注册及测试 | 0.6.0 |
| | | 新增 SqlServer 数据源注册及测试 | 0.6.0 |
| | | 新增 Hive 数据源注册及测试 | 0.6.0 |
| | 报警实例管理 | 新增 钉钉报警 | 0.6.0 |
| | | 新增 微信企业号报警 | 0.6.0 |
| | 报警组管理 | 新增 报警组管理 | 0.6.0 |
| 系统设置 | 用户管理 | 新增 用户基本管理 | 0.5.0 |
| | | 新增 修改密码 | 0.6.0 |
| | Flink 设置 | 新增 Application 的通用模板 Jar 配置 | 0.4.0 |
| | | 新增 是否使用 RestAPI 配置 | 0.4.0 |
| | | 新增 SQL 语句分隔符配置 | 0.4.0 |
| OpenApi | 调度 | 新增 submitTask 调度接口 | 0.5.0 |
| | FlinkSQL | 新增 executeSql 提交接口 | 0.5.0 |
| | | 新增 explainSql 验证接口 | 0.5.0 |
| | | 新增 getJobPlan 计划接口 | 0.5.0 |
| | | 新增 getStreamGraph 计划接口 | 0.5.0 |
| | | 新增 getJobData 数据接口 | 0.5.0 |
| | Flink | 新增 executeJar 提交接口 | 0.5.0 |
| | | 新增 cancel 停止接口 | 0.5.0 |
| | | 新增 savepoint 触发接口 | 0.5.0 |
| 关于 | 关于 Dlink | 版本更新记录 | 0.4.0 |
## 部署
### 版本
抢先体验( main 主支):dlink-0.6.1-SNAPSHOT
稳定版本( 0.6.0 分支):dlink-0.6.0
### 从安装包开始
```
config/ -- 配置文件
|- application.yml
extends/ -- 扩展
|- dlink-client-1.11.jar
|- dlink-client-1.12.jar
|- dlink-client-1.14.jar
html/ -- 前端编译产物,用于Nginx
jar/ -- dlink application模式提交sql用到的jar
lib/ -- 内部组件
|- dlink-client-1.13.jar -- 必需
|- dlink-connector-jdbc.jar
|- dlink-function.jar
|- dlink-metadata-clickhouse.jar
|- dlink-metadata-mysql.jar
|- dlink-metadata-oracle.jar
|- dlink-metadata-postgresql.jar
plugins/
|- flink-connector-jdbc_2.11-1.13.3.jar
|- flink-csv-1.13.3.jar
|- flink-dist_2.11-1.13.3.jar
|- flink-json-1.13.3.jar
|- flink-shaded-hadoop-3-uber-3.1.1.7.2.1.0-327-9.0.jar
|- flink-shaded-zookeeper-3.4.14.jar
|- flink-table-blink_2.11-1.13.3.jar
|- flink-table_2.11-1.13.3.jar
|- mysql-connector-java-8.0.21.jar
sql/
|- dlink.sql -- Mysql初始化脚本(首次部署执行这个)
|- dlink_history.sql -- Mysql各版本及时间点升级脚本
auto.sh --启动停止脚本
dlink-admin.jar --程序包
```
解压后结构如上所示,修改配置文件内容。lib 文件夹下存放 dlink 自身的扩展文件,plugins 文件夹下存放 flink 及 hadoop 的官方扩展文件( 如果plugins下引入了flink-shaded-hadoop-3-uber 或者其他可能冲突的jar,请手动删除内部的 javax.servlet 等冲突内容)。其中 plugins 中的所有 jar 需要根据版本号自行下载并添加,才能体验完整功能,当然也可以放自己修改的 Flink 源码编译包。extends 文件夹只作为扩展插件的备份管理,不会被 dlink 加载。
请检查 plugins 下是否添加了 flink 对应版本的 flink-dist,flink-table,flink-shaded-hadoop-3-uber 等如上所示的依赖!!!
请检查 plugins 下是否添加了 flink 对应版本的 flink-dist,flink-table,flink-shaded-hadoop-3-uber 等如上所示的依赖!!!
请检查 plugins 下是否添加了 flink 对应版本的 flink-dist,flink-table,flink-shaded-hadoop-3-uber 等如上所示的依赖!!!
在Mysql数据库中创建 dlink 数据库并执行初始化脚本 dlink.sql。
执行以下命令管理应用。
```shell
sh auto.sh start
sh auto.sh stop
sh auto.sh restart
sh auto.sh status
```
前端快捷访问:
如果plugins下引入了flink-shaded-hadoop-3-uber 的jar,请手动删除内部的 javax.servlet 后既可以访问默认 8888 端口号(如127.0.0.1:8888),正常打开前端页面。
前后端分离部署—— Nginx 部署(推荐):
Nginx 如何部署请见百度或谷歌。
将 html 文件夹上传至 nginx 的 html 文件夹下或者指定 nginx 配置文件的静态资源绝对路径,修改 nginx 配置文件并重启。
```shell
server {
listen 9999;
server_name localhost;
gzip on;
gzip_min_length 1k;
gzip_comp_level 9;
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_vary on;
gzip_disable "MSIE [1-6]\.";
location / {
root html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ^~ /api {
proxy_pass http://127.0.0.1:8888;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
}
}
```
1. server.listen 填写前端访问端口
2. proxy_pass 填写后端地址如 http://127.0.0.1:8888
3. 将 html 文件夹下打包好的前端资源上传到 nginx 的 html 文件夹中,如果 nginx 已经启动,则执行 nginx -s reload 重载配置,访问即可。
### 从源码编译
#### 项目目录
```java
dlink -- 父项目
|-dlink-admin -- 管理中心
|-dlink-alert -- 报警中心
|-dlink-app -- Application Jar
|-dlink-assembly -- 打包配置
|-dlink-client -- Client 中心
| |-dlink-client-1.11 -- Client-1.11 实现
| |-dlink-client-1.12 -- Client-1.12 实现
| |-dlink-client-1.13 -- Client-1.13 实现
| |-dlink-client-1.14 -- Client-1.14 实现
|-dlink-common -- 通用中心
|-dlink-connectors -- Connectors 中心
|-dlink-core -- 核心模块
|-dlink-daemon -- 守护线程模块
|-dlink-doc -- 文档
| |-bin -- 启动脚本
| |-config -- 配置文件
| |-doc -- 使用文档
| |-extends -- Docker K8S模板
| |-sql -- sql脚本
|-dlink-executor -- 执行中心
|-dlink-extends -- 扩展中心
|-dlink-function -- 函数中心
|-dlink-gateway -- Flink 网关中心
|-dlink-metadata -- 元数据中心
|-dlink-web -- React 前端
```
#### 编译打包 ## 特点
以下环境版本实测编译成功: 一个基于 `Apache Flink` 二次开发且 `易扩展``一站式` 开发运维 `FlinkSQL``SQL` 的实时计算平台。致力于解决 `实时``离线` 数据开发、数仓建设流程中大量复杂的 `数据口径`,使 `实时、准实时、离线一体`的数据开发平台在数据治理流程中`开箱即用`
| 环境 | 版本 | 其主要目标如下:
| :-----: | :-------: |
| npm | 7.19.0 |
| node.js | 14.17.0 |
| jdk | 1.8.0_201 |
| maven | 3.6.0 |
| lombok | 1.18.16 |
| mysql | 5.7+ |
```shell - 可视化交互式 FlinkSQL 和 SQL 的数据开发平台:自动提示补全、语法高亮、调试执行、语法校验、语句美化、全局变量等
mvn clean install -Dmaven.test.skip=true - 支持全面的多版本的 FlinkSQL 作业提交方式:Local、Standalone、Yarn Session、Yarn Per-Job、Kubernetes Session、Kubernetes Application
``` - 支持 Apache Flink 所有的 Connector、UDF、CDC等
- 支持 FlinkSQL 语法增强:兼容 Apache Flink SQL、表值聚合函数、全局变量、CDC多源合并、执行环境、语句合并、共享会话等
- 支持易扩展的 SQL 作业提交方式:ClickHouse、Doris、Hive、Mysql、Oracle、Phoenix、PostgreSql、SqlServer 等
- 支持实时调试预览 Table 和 ChangeLog 数据及图形展示
- 支持语法逻辑检查、作业执行计划、字段级血缘分析等
- 支持 Flink 元数据、数据源元数据查询及管理
- 支持实时任务运维:作业上线下线、作业信息、集群信息、作业快照、异常信息、作业日志、数据地图、即席查询、历史版本、报警记录等
- 支持作为多版本 FlinkSQL Server 的能力以及 OpenApi
- 支持易扩展的实时作业报警及报警组:钉钉、微信企业号等
- 支持完全托管的 SavePoint 启动机制:最近一次、最早一次、指定一次等
- 支持多种资源管理:集群实例、集群配置、Jar、数据源、报警组、报警实例、文档、用户、系统配置等
- 更多隐藏功能等待小伙伴们探索
#### 扩展Connector及UDF ## 原理
将 Flink 集群上已扩展好的 Connector 和 UDF 直接放入 Dlink 的 plugins 下,然后重启即可。定制 Connector 过程同 Flink 官方一样。 ![dinky_principle](https://raw.githubusercontent.com/DataLinkDC/dlink/main/dlink-doc/images/main/dinky_principle.png)
#### 扩展Metadata ## 精彩瞬间
遵循SPI。请参考 dlink-metadata-mysql 的实现。 > FlinkSQL Studio
#### 扩展其他版本的Flink ![flinksqlstudio](https://raw.githubusercontent.com/DataLinkDC/dlink/main/dlink-doc/images/060/flinksqlstudio.png)
Flink 的版本取决于 lib 下的 dlink-client-1.13.jar。当前版本默认为 Flink 1.13.6 API。向其他版本的集群提交任务可能存在问题,已实现 1.11、1.12、1.13, 1.14,切换版本时只需要将对应依赖在lib下进行替换,然后重启即可。 > 实时调试预览
切换版本时需要同时更新 plugins 下的 Flink 依赖。 ![selectpreview](https://raw.githubusercontent.com/DataLinkDC/dlink/main/dlink-doc/images/060/selectpreview.png)
## 使用手册 > 语法和逻辑检查
1.[Flink AggTable 在 Dlink 的实践](https://github.com/DataLinkDC/dlink/blob/main/dlink-doc/doc/FlinkAggTable%E5%9C%A8Dlink%E7%9A%84%E5%BA%94%E7%94%A8.md) ![checksql](https://raw.githubusercontent.com/DataLinkDC/dlink/main/dlink-doc/images/060/checksql.png)
2.[Dlink 概念原理与源码扩展介绍](https://github.com/DataLinkDC/dlink/blob/main/dlink-doc/doc/Dlink%E6%A0%B8%E5%BF%83%E6%A6%82%E5%BF%B5%E4%B8%8E%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86%E8%AF%A6%E8%A7%A3.md) > JobPlan
3.[Dlink-0.3.0重磅来袭](https://github.com/DataLinkDC/dlink/blob/main/dlink-doc/doc/Dlink0.3.0%E9%87%8D%E7%A3%85%E6%9D%A5%E8%A2%AD.md) ![jobplan](https://raw.githubusercontent.com/DataLinkDC/dlink/main/dlink-doc/images/060/jobplan.png)
4.[Dlink 实时计算平台——部署篇](https://github.com/DataLinkDC/dlink/blob/dev/dlink-doc/doc/Dlink%E5%AE%9E%E6%97%B6%E8%AE%A1%E7%AE%97%E5%B9%B3%E5%8F%B0%E2%80%94%E2%80%94%E9%83%A8%E7%BD%B2%E7%AF%87.md) > 字段级血缘分析
5.[Dlink-0.3.2更新说明](https://github.com/DataLinkDC/dlink/blob/main/dlink-doc/doc/Dlink-0.3.2%E6%9B%B4%E6%96%B0%E8%AF%B4%E6%98%8E.md) ![lineage](https://raw.githubusercontent.com/DataLinkDC/dlink/main/dlink-doc/images/060/lineage.png)
6.[Dlink 读写 Hive 的实践](https://github.com/DataLinkDC/dlink/blob/dev/dlink-doc/doc/Dlink%E8%AF%BB%E5%86%99Hive%E7%9A%84%E5%AE%9E%E8%B7%B5.md) > BI 展示
7.[Dlink On Yarn 三种 Flink 执行方式的实践](https://github.com/DataLinkDC/dlink/blob/main/dlink-doc/doc/DlinkOnYarn%E4%B8%89%E7%A7%8DFlink%E6%89%A7%E8%A1%8C%E6%96%B9%E5%BC%8F%E7%9A%84%E5%AE%9E%E8%B7%B5.md) ![charts](https://raw.githubusercontent.com/DataLinkDC/dlink/main/dlink-doc/images/060/charts.png)
8.[Dlink 在 Flink-mysql-cdc 到 Doris 的实践](https://github.com/DataLinkDC/dlink/blob/main/dlink-doc/doc/Dlink%E5%9C%A8Flink-mysql-cdc%E5%88%B0Doris%E7%9A%84%E5%AE%9E%E8%B7%B5.md) > 元数据查询
更多文档请查阅官方网址... ![metadata](https://raw.githubusercontent.com/DataLinkDC/dlink/main/dlink-doc/images/060/metadata.png)
## 技术栈与鸣谢 > 实时任务监控
[Apache Flink](https://github.com/apache/flink) ![monitor](https://raw.githubusercontent.com/DataLinkDC/dlink/main/dlink-doc/images/060/monitor.png)
[Mybatis Plus](https://github.com/baomidou/mybatis-plus) > 实时作业信息
[ant-design-pro](https://github.com/ant-design/ant-design-pro) ![jobinfo](https://raw.githubusercontent.com/DataLinkDC/dlink/main/dlink-doc/images/060/jobinfo.png)
[dolphinscheduler](https://github.com/apache/dolphinscheduler) > 数据地图
[Monaco Editor](https://github.com/Microsoft/monaco-editor) ![datamap](https://raw.githubusercontent.com/DataLinkDC/dlink/main/dlink-doc/images/060/datamap.png)
[SpringBoot]() > 数据源注册
## 致谢 ![datasource](https://raw.githubusercontent.com/DataLinkDC/dlink/main/dlink-doc/images/060/datasource.png)
感谢 [JetBrains](https://www.jetbrains.com/?from=dlink) 提供的免费开源 License 赞助 ## 功能
[![JetBrains](https://gitee.com/DataLinkDC/dlink/raw/main/dlink-doc/images/main/jetbrains.svg)](https://www.jetbrains.com/?from=dlink) 详见 [功能](https://github.com/DataLinkDC/dlink/blob/dev/docs/zh-CN/feature.md)
## 近期计划 ## 近期计划
1.多租户及命名空间 - 多租户及命名空间
2.全局血缘与影响分析
3.统一元数据管理
4.Flink 元数据持久化 - 全局血缘与影响分析
5.多版本 Flink-Client Server - 统一元数据管理
6.整库千表同步 - Flink 元数据持久化
## 交流与贡献 - 多版本 Flink-Client Server
欢迎您加入社区交流分享,也欢迎您为社区贡献自己的力量。 - 整库千表同步
在此非常感谢大家的支持~ ## 参与贡献
QQ社区群:**543709668**,申请备注 “ Dinky ”,不写不批 欢迎您为社区贡献自己的力量,共建共赢,贡献流程请参考: [[参与贡献]()]
微信社区群(推荐):添加微信号 wenmo_ai 邀请进群,申请备注 “ Dinky + 企业名 + 职位”,不写不批 ## 如何部署
公众号(最新消息获取建议关注):[DataLink数据中台](https://mmbiz.qpic.cn/mmbiz_jpg/dyicwnSlTFTp6w4PuJruFaLV6uShCJDkzqwtnbQJrQ90yKDuuIC8tyMU5DK69XZibibx7EPPBRQ3ic81se5UQYs21g/0?wx_fmt=jpeg) 详见 [编译](https://github.com/DataLinkDC/dlink/blob/dev/docs/zh-CN/quick_start/build.md)[安装](https://github.com/DataLinkDC/dlink/blob/dev/docs/zh-CN/quick_start/deploy.md)
## 运行截图 ## 如何升级到最新
> FlinkSQL Studio 执行 sql 目录下的 dlink_history.sql 中的部分升级语句,依据是通过版本号与日期来判断从何处开始执行,请不要直接执行全部 sql。
![](https://gitee.com/DataLinkDC/dlink/raw/main/dlink-doc/images/060/flinksqlstudio.png)
> 实时预览
![](https://gitee.com/DataLinkDC/dlink/raw/main/dlink-doc/images/060/selectpreview.png) ## 感谢
> 语法校验和逻辑检查 站在巨人的肩膀上,Dinky 才得以诞生。对此我们对使用的所有开源软件及其社区表示衷心的感谢!我们也希望自己不仅是开源的受益者,也能成为开源的贡献者,也希望对开源有同样热情和信念的伙伴加入进来,一起为开源献出一份力!致谢列表如下:
![](https://gitee.com/DataLinkDC/dlink/raw/main/dlink-doc/images/060/checksql.png) [Apache Flink](https://github.com/apache/flink)
> JobPlan
![](https://gitee.com/DataLinkDC/dlink/raw/main/dlink-doc/images/060/jobplan.png) [Apache Dolphinscheduler](https://github.com/apache/dolphinscheduler)
> 血缘分析 [Ant-Design-Pro](https://github.com/ant-design/ant-design-pro)
![](https://gitee.com/DataLinkDC/dlink/raw/main/dlink-doc/images/060/lineage.png) [Mybatis Plus](https://github.com/baomidou/mybatis-plus)
> BI 展示 [Monaco Editor](https://github.com/Microsoft/monaco-editor)
![](https://gitee.com/DataLinkDC/dlink/raw/main/dlink-doc/images/060/charts.png) [SpringBoot]()
> 元数据查询 感谢 [JetBrains](https://www.jetbrains.com/?from=dlink) 提供的免费开源 License 赞助。
![](https://gitee.com/DataLinkDC/dlink/raw/main/dlink-doc/images/060/metadata.png) [![JetBrains](https://raw.githubusercontent.com/DataLinkDC/dlink/main/dlink-doc/images/main/jetbrains.svg)](https://www.jetbrains.com/?from=dlink)
> 实时任务监控 ## 获得帮助
![](https://gitee.com/DataLinkDC/dlink/raw/main/dlink-doc/images/060/monitor.png) 1.提交 issue
> 作业信息 2.进入微信用户社区群(推荐,添加微信号 wenmo_ai 邀请进群)和QQ用户社区群(**543709668**)交流,申请备注 “ Dinky + 企业名 + 职位”,不写不批
![](https://gitee.com/DataLinkDC/dlink/raw/main/dlink-doc/images/060/jobinfo.png) 3.关注微信公众号获取相关内容的文章(最新消息获取建议关注):[DataLink数据中台](https://mmbiz.qpic.cn/mmbiz_jpg/dyicwnSlTFTp6w4PuJruFaLV6uShCJDkzqwtnbQJrQ90yKDuuIC8tyMU5DK69XZibibx7EPPBRQ3ic81se5UQYs21g/0?wx_fmt=jpeg)
> 数据地图 4.关注 bilibili UP 主(是文末呀)获取最新视频教学
![](https://gitee.com/DataLinkDC/dlink/raw/main/dlink-doc/images/060/datamap.png) 5.访问 [GithubPages](https://datalinkdc.github.io/dlink/#/)[官网](http://www.dlink.top/#/) 网址,阅读最新文档手册
> 数据源注册 ## 版权
![](https://gitee.com/DataLinkDC/dlink/raw/main/dlink-doc/images/060/datasource.png) 请参考 [LICENSE](https://github.com/DataLinkDC/dlink/blob/main/LICENSE) 文件。
\ No newline at end of file
<font size=7>[English](README.en-US.md)|简体中文</font>
# Dinky # Dinky
Dinky是一个基于Apache Flink封装的一个可视化的、轻量级可交互式的Studio,可以在线开发、补全、校验 、执行、预览 FlinkSQL,支持 Flink 官方所有语法及其增强语法,并且可以同时对多 Flink 集群实例进行提交、停止、SavePoint 等运维操作。
了解更多有关Dinky的信息请查阅:http://www.dlink.top [![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)
[![Total Lines](https://tokei.rs/b1/github/DataLinkDC/dlink?category=lines)](https://github.com/DataLinkDC/dlink)
[![CN doc](https://img.shields.io/badge/文档-中文版-blue.svg)](README_zh_CN.md)
[![EN doc](https://img.shields.io/badge/document-English-blue.svg)](README.md)
## 主要功能 [![Stargazers over time](https://starchart.cc/DataLinkDC/dlink.svg)](https://starchart.cc/DataLinkDC/dlink)
## 编译 ## 简介
详见[编译](https://github.com/DataLinkDC/dlink/blob/dev/docs/zh-CN/quick_start/build.md) 实时即未来,Dlink 为 Apache Flink 而生,让 Flink SQL 纵享丝滑,并致力于实时计算平台建设。
## 安装 Dinky 基于 Apache Flink 实现 Dlink ,增强 Flink 的应用与体验,探索流式数仓。即站在巨人肩膀上创新与实践,Dinky 在未来批流一体的发展趋势下潜力无限。
详见[安装](https://github.com/DataLinkDC/dlink/blob/dev/docs/zh-CN/quick_start/deploy.md) 最后,Dinky 的发展皆归功于 Apache Flink 等其他优秀的开源项目的指导与成果。
## 技术栈 ## 特点
[Apache Flink](https://github.com/apache/flink)
[Mybatis Plus](https://github.com/baomidou/mybatis-plus) 一个基于 `Apache Flink` 二次开发且 `易扩展``一站式` 开发运维 `FlinkSQL``SQL` 的实时计算平台。致力于解决 `实时``离线` 数据开发、数仓建设流程中大量复杂的 `数据口径`,使 `实时、准实时、离线一体`的数据开发平台在数据治理流程中`开箱即用`
[ant-design-pro](https://github.com/ant-design/ant-design-pro) 其主要目标如下:
[Monaco Editor](https://github.com/Microsoft/monaco-editor) - 可视化交互式 FlinkSQL 和 SQL 的数据开发平台:自动提示补全、语法高亮、调试执行、语法校验、语句美化、全局变量等
- 支持全面的多版本的 FlinkSQL 作业提交方式:Local、Standalone、Yarn Session、Yarn Per-Job、Kubernetes Session、Kubernetes Application
- 支持 Apache Flink 所有的 Connector、UDF、CDC等
- 支持 FlinkSQL 语法增强:兼容 Apache Flink SQL、表值聚合函数、全局变量、CDC多源合并、执行环境、语句合并、共享会话等
- 支持易扩展的 SQL 作业提交方式:ClickHouse、Doris、Hive、Mysql、Oracle、Phoenix、PostgreSql、SqlServer 等
- 支持实时调试预览 Table 和 ChangeLog 数据及图形展示
- 支持语法逻辑检查、作业执行计划、字段级血缘分析等
- 支持 Flink 元数据、数据源元数据查询及管理
- 支持实时任务运维:作业上线下线、作业信息、集群信息、作业快照、异常信息、作业日志、数据地图、即席查询、历史版本、报警记录等
- 支持作为多版本 FlinkSQL Server 的能力以及 OpenApi
- 支持易扩展的实时作业报警及报警组:钉钉、微信企业号等
- 支持完全托管的 SavePoint 启动机制:最近一次、最早一次、指定一次等
- 支持多种资源管理:集群实例、集群配置、Jar、数据源、报警组、报警实例、文档、用户、系统配置等
- 更多隐藏功能等待小伙伴们探索
[SpringBoot]() ## 原理
![dinky_principle](https://raw.githubusercontent.com/DataLinkDC/dlink/main/dlink-doc/images/main/dinky_principle.png)
## License ## 精彩瞬间
## 致谢 > FlinkSQL Studio
感谢 [JetBrains](https://www.jetbrains.com/?from=dlink) 提供的免费开源 License 赞助
[![JetBrains](https://gitee.com/DataLinkDC/dlink/raw/main/dlink-doc/images/main/jetbrains.svg)](https://www.jetbrains.com/?from=dlink) ![flinksqlstudio](https://raw.githubusercontent.com/DataLinkDC/dlink/main/dlink-doc/images/060/flinksqlstudio.png)
## 近期计划 > 实时调试预览
1.任务生命周期管理 ![selectpreview](https://raw.githubusercontent.com/DataLinkDC/dlink/main/dlink-doc/images/060/selectpreview.png)
2.作业监控及运维 > 语法和逻辑检查
3.流作业自动恢复 ![checksql](https://raw.githubusercontent.com/DataLinkDC/dlink/main/dlink-doc/images/060/checksql.png)
4.作业日志查看 > JobPlan
5.钉钉报警和推送 ![jobplan](https://raw.githubusercontent.com/DataLinkDC/dlink/main/dlink-doc/images/060/jobplan.png)
## 交流与贡献 > 字段级血缘分析
欢迎您加入社区交流分享,也欢迎您为社区贡献自己的力量。 ![lineage](https://raw.githubusercontent.com/DataLinkDC/dlink/main/dlink-doc/images/060/lineage.png)
在此非常感谢大家的支持~ > BI 展示
QQ社区群:**543709668**,申请备注 “ Dinky ”,不写不批 ![charts](https://raw.githubusercontent.com/DataLinkDC/dlink/main/dlink-doc/images/060/charts.png)
微信社区群(推荐):添加微信号 wenmo_ai 邀请进群,申请备注 “ Dinky + 企业名 + 职位”,不写不批 > 元数据查询
公众号(最新消息获取建议关注):[DataLink数据中台](https://mmbiz.qpic.cn/mmbiz_jpg/dyicwnSlTFTp6w4PuJruFaLV6uShCJDkzqwtnbQJrQ90yKDuuIC8tyMU5DK69XZibibx7EPPBRQ3ic81se5UQYs21g/0?wx_fmt=jpeg) ![metadata](https://raw.githubusercontent.com/DataLinkDC/dlink/main/dlink-doc/images/060/metadata.png)
## 运行截图 > 实时任务监控
> 登录页 ![monitor](https://raw.githubusercontent.com/DataLinkDC/dlink/main/dlink-doc/images/060/monitor.png)
![](https://gitee.com/DataLinkDC/dlink/raw/main/dlink-doc/images/050/050login.png) > 实时作业信息
> 首页 ![jobinfo](https://raw.githubusercontent.com/DataLinkDC/dlink/main/dlink-doc/images/060/jobinfo.png)
![](https://gitee.com/DataLinkDC/dlink/raw/main/dlink-doc/images/050/050home.png) > 数据地图
> FlinkSQL Studio ![datamap](https://raw.githubusercontent.com/DataLinkDC/dlink/main/dlink-doc/images/060/datamap.png)
> 数据源注册
![datasource](https://raw.githubusercontent.com/DataLinkDC/dlink/main/dlink-doc/images/060/datasource.png)
![](https://gitee.com/DataLinkDC/dlink/raw/main/dlink-doc/images/050/050flinksqlstudio.png) ## 功能
> 自动补全 详见 [功能](https://github.com/DataLinkDC/dlink/blob/dev/docs/zh-CN/feature.md)
![](https://gitee.com/DataLinkDC/dlink/raw/main/dlink-doc/images/050/050autocomplete.png) ## 近期计划
- 多租户及命名空间
- 全局血缘与影响分析
- 统一元数据管理
- Flink 元数据持久化
> ChangeLog 预览 - 多版本 Flink-Client Server
![](https://gitee.com/DataLinkDC/dlink/raw/main/dlink-doc/images/050/050changelog.png) - 整库千表同步
> BI 折线图 ## 参与贡献
![](https://gitee.com/DataLinkDC/dlink/raw/main/dlink-doc/images/050/050line.png) 欢迎您为社区贡献自己的力量,共建共赢,贡献流程请参考: [[参与贡献]()]
> Table 预览 ## 如何部署
![](https://gitee.com/DataLinkDC/dlink/raw/main/dlink-doc/images/050/050table.png) 详见 [编译](https://github.com/DataLinkDC/dlink/blob/dev/docs/zh-CN/quick_start/build.md)[安装](https://github.com/DataLinkDC/dlink/blob/dev/docs/zh-CN/quick_start/deploy.md)
> 语法校验和逻辑检查 ## 如何升级到最新
![](https://gitee.com/DataLinkDC/dlink/raw/main/dlink-doc/images/050/050check.png) 执行 sql 目录下的 dlink_history.sql 中的部分升级语句,依据是通过版本号与日期来判断从何处开始执行,请不要直接执行全部 sql。
> JobPlan 预览 ## 感谢
![](https://gitee.com/DataLinkDC/dlink/raw/main/dlink-doc/images/050/050jobplan.png) 站在巨人的肩膀上,Dinky 才得以诞生。对此我们对使用的所有开源软件及其社区表示衷心的感谢!我们也希望自己不仅是开源的受益者,也能成为开源的贡献者,也希望对开源有同样热情和信念的伙伴加入进来,一起为开源献出一份力!致谢列表如下:
> FlinkSQL 导出 [Apache Flink](https://github.com/apache/flink)
![](https://gitee.com/DataLinkDC/dlink/raw/main/dlink-doc/images/050/050export.png) [Apache Dolphinscheduler](https://github.com/apache/dolphinscheduler)
> 血缘分析 [Ant-Design-Pro](https://github.com/ant-design/ant-design-pro)
![](https://gitee.com/DataLinkDC/dlink/raw/main/dlink-doc/images/050/050ca.png) [Mybatis Plus](https://github.com/baomidou/mybatis-plus)
> Savepoint 管理 [Monaco Editor](https://github.com/Microsoft/monaco-editor)
[SpringBoot]()
![](https://gitee.com/DataLinkDC/dlink/raw/main/dlink-doc/images/050/050savepoint.png) 感谢 [JetBrains](https://www.jetbrains.com/?from=dlink) 提供的免费开源 License 赞助。
> 共享会话 [![JetBrains](https://raw.githubusercontent.com/DataLinkDC/dlink/main/dlink-doc/images/main/jetbrains.svg)](https://www.jetbrains.com/?from=dlink)
![](https://gitee.com/DataLinkDC/dlink/raw/main/dlink-doc/images/050/050session.png) ## 获得帮助
> 元数据 1.提交 issue
![](https://gitee.com/DataLinkDC/dlink/raw/main/dlink-doc/images/050/050metadata.png) 2.进入微信用户社区群(推荐,添加微信号 wenmo_ai 邀请进群)和QQ用户社区群(**543709668**)交流,申请备注 “ Dinky + 企业名 + 职位”,不写不批
> 集群实例 3.关注微信公众号获取相关内容的文章(最新消息获取建议关注):[DataLink数据中台](https://mmbiz.qpic.cn/mmbiz_jpg/dyicwnSlTFTp6w4PuJruFaLV6uShCJDkzqwtnbQJrQ90yKDuuIC8tyMU5DK69XZibibx7EPPBRQ3ic81se5UQYs21g/0?wx_fmt=jpeg)
![](https://gitee.com/DataLinkDC/dlink/raw/main/dlink-doc/images/050/050cluster.png) 4.关注 bilibili UP 主(是文末呀)获取最新视频教学
5.访问 [GithubPages](https://datalinkdc.github.io/dlink/#/)[官网](http://www.dlink.top/#/) 网址,阅读最新文档手册
> 集群配置 ## 版权
![](https://gitee.com/DataLinkDC/dlink/raw/main/dlink-doc/images/050/050clusterconf.png) 请参考 [LICENSE](https://github.com/DataLinkDC/dlink/blob/main/LICENSE) 文件。
\ No newline at end of file
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* [master](/zh-CN/introduce.md) * [master](/zh-CN/introduce.md)
* [下载](/zh-CN/quick_start/download.md) * [下载](/zh-CN/quick_start/download.md)
* 开发者 * 开发者
* [如何贡献](/zh-CN/developer-guide/how_contribute.md) * [参与贡献](/zh-CN/developer-guide/how_contribute.md)
* [本地调试](/zh-CN/developer-guide/local_debug.md) * [本地调试](/zh-CN/developer-guide/local_debug.md)
* [远程调试](/zh-CN/developer-guide/remote_debug.md) * [远程调试](/zh-CN/developer-guide/remote_debug.md)
* 用户案例 * 用户案例
......
...@@ -55,7 +55,7 @@ ...@@ -55,7 +55,7 @@
- [DolphinScheduler集成](/zh-CN/extend/dolphinscheduler.md) - [DolphinScheduler集成](/zh-CN/extend/dolphinscheduler.md)
- [DataSphereStudio集成](/zh-CN/extend/dataspherestudio.md) - [DataSphereStudio集成](/zh-CN/extend/dataspherestudio.md)
- 开发者指南 - 开发者指南
- [如何贡献](/zh-CN/developer-guide/how_contribute.md) - [参与贡献](/zh-CN/developer-guide/how_contribute.md)
- [本地调试](/zh-CN/developer-guide/local_debug.md) - [本地调试](/zh-CN/developer-guide/local_debug.md)
- [远程调试](/zh-CN/developer-guide/remote_debug.md) - [远程调试](/zh-CN/developer-guide/remote_debug.md)
- 常见问题 - 常见问题
......
# 如何贡献 ## 如何贡献
​ Dinky0.6基本功能已经全部开发完成,已经达到生产可用级别。为了Dinky社区生态更加完善,社区希望有更多的人参与进来。不管是小白还是大佬,Dinky社区欢迎你的加入,未来共同建设Dinky生态体系。 首先非常感谢大家选择和使用 Dinky & Apache Flink,真诚地欢迎大家加入 Dinky 社区与 Apache Flink 中文社区,融入开源世界,打造新一代实时计算框架与平台,共建共赢!
​ Dinky目前围绕Flink已经初步建设完成,其他数据源也在不断扩展中,当前支持的MySQL,Doris等数据库,更多数据源支持请查阅[扩展数据源](/zh-CN/extend/datasource.md)。后续还会有更多的功能,如数据集成,数据治理等。 我们鼓励任何形式的参与社区,如:
那对于参与进来的伙伴如何贡献呢?那么贡献的方式有如下3种方式: - 将遇到的问题通过 github 上 [issue](https://github.com/DataLinkDC/dlink/issues) 的形式反馈出来
- 回答别人遇到的 [issue](https://github.com/DataLinkDC/dlink/issues) 问题
- 讨论新 Feature 的实现方案
- 帮助完善文档及官网
- 帮助项目增加测试用例
- 为代码添加注释
- 为代码添加国际化
- 提交修复 Bug 或者 Feature 的 PR
- 发表应用案例实践、扩展组件分享或者与 Flink SQL 相关的技术文章
- 帮助推广 Dinky,基于 Dinky 实践参与其他社区文章发表、技术大会或者 meetup 的分享等
- 提供或赞助云服务器资源搭建云 Dinky 学习环境
- 代码贡献; 欢迎加入贡献的队伍,加入开源从提交第一个 PR 开始
- 文档类贡献;
- 问题解答;
为了方便更多人参与进社区,不管你是代码贡献者还是文档贡献者,Dinky社区方便大家开发,准备了文档贡献和代码贡献的开发者指南 - 比如添加代码注释或找到带有 ”easy to fix” 标记或一些非常简单的 issue(拼写错误等)等等,先通过第一个简单的 PR 熟悉提交流程
## 文档贡献 注:贡献不仅仅限于 PR,对促进项目发展的都是贡献
首先要下载[Dinky源码](https://github.com/DataLinkDC/dlink/tree/dev),下载完成后,需要安装nodejs和npm。详细安装步骤可以查阅本地调试。由于Dinky文档是有[docsify](https://docsify.js.org/#/zh-cn/quickstart)维护。因此需要在dinky根目录执行如下命令,在本地方可启动: 相信参与 Dinky,一定会让您从开源中受益匪浅!
``` ## 参与文档贡献
#推荐全局安装 docsify-cli 工具
首先要下载 [Dinky源码](https://github.com/DataLinkDC/dlink/tree/dev) ,下载完成后,需要安装nodejs和npm。详细安装步骤可以查阅本地调试。由于Dinky文档是有 [docsify](https://docsify.js.org/#/zh-cn/quickstart) 维护。因此需要在dinky根目录执行如下命令,在本地方可启动:
```shell
# 推荐全局安装 docsify-cli 工具
npm i docsify-cli -g npm i docsify-cli -g
#运行 docsify serve 启动一个本地服务器 # 运行 docsify serve 启动一个本地服务器
docsify serve docs docsify serve docs
``` ```
可以方便地实时预览效果。默认访问地址 [http://localhost:3000](http://localhost:3000/) 可以方便地实时预览效果。默认访问地址 [http://localhost:3000](http://localhost:3000/)
## 代码贡献 ## 参与代码贡献
调试请查阅 [本地调试](/zh-CN/developer-guide/local_debug.md)[远程调试](/zh-CN/developer-guide/remote_debug.md)
贡献参考[参与贡献 Issue 需知](),[参与贡献 Pull Request 需知](),[参与贡献 CommitMessage 需知]()
## 如何领取 Issue,提交 Pull Request
请查阅[本地调试](/zh-CN/developer-guide/local_debug.md)[远程调试](/zh-CN/developer-guide/remote_debug.md) 如果你想实现某个 Feature 或者修复某个 Bug。请参考以下内容:
## 开发者须知 - 所有的 Bug 与新 Feature 建议使用 Issues Page 进行管理。
- 如果想要开发实现某个 Feature 功能,请先回复该功能所关联的 Issue,表明你当前正在这个 Issue 上工作。 并在回复的时候为自己设置一个最后期限,并添加到回复内容中。
- 你应该新建一个分支来开始你的工作,分支的名字参考[参与贡献 Pull Request 需知]()。比如,你想完成 feature 功能并提交了 Issue demo,那么你的 branch 名字应为 feature-demo。 功能名称可与导师讨论后确定。
- 完成后,发送一个 Pull Request 到 Dinky 的 dev 分支,提交过程具体请参考下面《[提交代码流程]()》。
开发不同的代码需要不同的分支 如果是想提交 Pull Request 完成某一个 Feature 或者修复某个 Bug,这里都建议大家从小处做起,完成一个小功能就提交一次,每次别改动太多文件,改动文件太多也会给 Reviewer 造成很大的心理压力,建议通过多次 Pull Request 的方式完成。
- 如果要基于二进制包进行开发,需要切换到对应的分支代码,如0.5.1; 注意:本文档参考了《 [DolphinScheduler Contribute](https://dolphinscheduler.apache.org/zh-cn/community/development/contribute.html) 》,非常感谢 DolphinScheduler 社区的支持。
- 如果想要开发新代码,切换到dev分支即可;
注意:以下功能均为对应版本已实现的功能,实测可用。 注意:以下功能均为对应版本已实现的功能,实测可用。
| 应用 | 方向 | 功能 | 进展 | | 应用 | 方向 | 功能 | 进展 |
|:-------:|:----------:|-------------------------------------------|:-----:| | :------: | :------------: | ------------------------------------------------------------ | :---: |
| 开发中心 | FlinkSQL | 支持 sql-client 所有语法 | 0.4.0 | | 开发中心 | FlinkSQL | 支持 sql-client 所有语法 | 0.4.0 |
| | | 支持 Flink 所有 Configuration | 0.4.0 | | | | 支持 Flink 所有 Configuration | 0.4.0 |
| | | 支持 Flink 所有 Connector | 0.4.0 | | | | 支持 Flink 所有 Connector | 0.4.0 |
| | | 支持 SELECT、SHOW 等查询实时预览 | 0.4.0 | | | | 支持 Flink 批流两种模式 | 0.6.0 |
| | | 支持 SELECT、SHOW、DESC 等查询实时预览 | 0.4.0 |
| | | 支持 INSERT 语句集 | 0.4.0 | | | | 支持 INSERT 语句集 | 0.4.0 |
| | | 新增 SQL 片段语法 | 0.4.0 | | | | 新增 SQL 片段语法(全局变量) | 0.4.0 |
| | | 新增 AGGTABLE 表值聚合语法及 UDATF 支持 | 0.4.0 | | | | 新增 AGGTABLE 表值聚合语法及 UDATF 支持 | 0.4.0 |
| | | 新增 CDCSOURCE 多源合并语法支持 | 0.6.0 | | | | 新增 CDCSOURCE 多源合并语法支持 | 0.6.0 |
| | | 新增 FlinkSQLEnv 执行环境复用 | 0.5.0 | | | | 新增 FlinkSQLEnv 执行环境复用 | 0.5.0 |
...@@ -15,9 +17,10 @@ ...@@ -15,9 +17,10 @@
| | | 新增 执行环境的共享与私有会话机制 | 0.4.0 | | | | 新增 执行环境的共享与私有会话机制 | 0.4.0 |
| | | 新增 多种方言的作业目录管理(FlinkSQL、SQL、Java) | 0.5.0 | | | | 新增 多种方言的作业目录管理(FlinkSQL、SQL、Java) | 0.5.0 |
| | | 新增 作业配置与执行配置管理 | 0.4.0 | | | | 新增 作业配置与执行配置管理 | 0.4.0 |
| | | 新增 作业生命周期管理 | 0.6.0 |
| | | 新增 基于 Explain 的语法校验与逻辑解析 | 0.4.0 | | | | 新增 基于 Explain 的语法校验与逻辑解析 | 0.4.0 |
| | | 新增 JobPlan 图预览 | 0.5.0 | | | | 新增 JobPlan 图预览 | 0.5.0 |
| | | 新增 基于 StreamGraph 的表级血缘分析 | 0.4.0 | | | | 新增 基于 StreamGraph 的字段级血缘分析 | 0.6.0 |
| | | 新增 基于上下文元数据自动提示与补全 | 0.4.0 | | | | 新增 基于上下文元数据自动提示与补全 | 0.4.0 |
| | | 新增 自定义规则的自动提示与补全 | 0.4.0 | | | | 新增 自定义规则的自动提示与补全 | 0.4.0 |
| | | 新增 关键字高亮与代码缩略图 | 0.4.0 | | | | 新增 关键字高亮与代码缩略图 | 0.4.0 |
...@@ -40,6 +43,10 @@ ...@@ -40,6 +43,10 @@
| | | 新增 作业自动从 SavePoint 恢复机制(包含最近、最早、指定一次) | 0.4.0 | | | | 新增 作业自动从 SavePoint 恢复机制(包含最近、最早、指定一次) | 0.4.0 |
| | Flink 集群 | 支持 查看已注册集群的作业列表与运维 | 0.4.0 | | | Flink 集群 | 支持 查看已注册集群的作业列表与运维 | 0.4.0 |
| | | 新增 自动注册 Yarn 创建的集群 | 0.4.0 | | | | 新增 自动注册 Yarn 创建的集群 | 0.4.0 |
| | Flink 版本 | 支持 1.11.0+ | 0.4.0 |
| | | 支持 1.12.0+ | 0.4.0 |
| | | 支持 1.13.0+ | 0.4.0 |
| | | 支持 1.14.0+ | 0.4.0 |
| | SQL | 新增 外部数据源的 SQL 校验 | 0.5.0 | | | SQL | 新增 外部数据源的 SQL 校验 | 0.5.0 |
| | | 新增 外部数据源的 SQL 执行与预览 | 0.5.0 | | | | 新增 外部数据源的 SQL 执行与预览 | 0.5.0 |
| | BI | 新增 折线图的渲染 | 0.5.0 | | | BI | 新增 折线图的渲染 | 0.5.0 |
...@@ -47,8 +54,29 @@ ...@@ -47,8 +54,29 @@
| | | 新增 饼图的渲染 | 0.5.0 | | | | 新增 饼图的渲染 | 0.5.0 |
| | 元数据 | 新增 查询外部数据源的元数据信息 | 0.4.0 | | | 元数据 | 新增 查询外部数据源的元数据信息 | 0.4.0 |
| | | 新增 FlinkSQL 和 SQL 的自动生成 | 0.6.0 | | | | 新增 FlinkSQL 和 SQL 的自动生成 | 0.6.0 |
| | | 新增 自动将连接信息注入片段机制 | 0.6.0 |
| | 归档 | 新增 执行与提交历史 | 0.4.0 | | | 归档 | 新增 执行与提交历史 | 0.4.0 |
| 运维中心 | 暂无 | 暂无 | 0.4.0 | | 运维中心 | 主页 | 新增 任务实例列表 | 0.6.0 |
| | 作业监控 | 新增 作业总览 | 0.6.0 |
| | | 新增 实时监控 Flink Job | 0.6.0 |
| | | 新增 作业实例与历史切换 | 0.6.0 |
| | | 新增 自动告警 | 0.6.0 |
| | | 新增 FlinkWebUI 跳转 | 0.6.0 |
| | | 新增 智能重启(重新上线) | 0.6.0 |
| | | 新增 智能停止(下线) | 0.6.0 |
| | | 新增 SavePoint 多种操作 | 0.6.0 |
| | | 新增 报警推送 | 0.6.0 |
| | | 新增 配置信息 | 0.6.0 |
| | | 新增 集群信息 | dev |
| | | 新增 作业快照 | dev |
| | | 新增 异常信息 | 0.6.0 |
| | | 新增 作业日志 | dev |
| | | 新增 自动调优 | dev |
| | | 新增 FlinkSQL | 0.6.0 |
| | | 新增 数据地图 | 0.6.0 |
| | | 新增 即席查询 | dev |
| | | 新增 历史版本 | dev |
| | | 新增 告警记录 | 0.6.0 |
| 注册中心 | Flink 集群实例 | 新增 外部 Flink 集群实例注册 | 0.4.0 | | 注册中心 | Flink 集群实例 | 新增 外部 Flink 集群实例注册 | 0.4.0 |
| | | 新增 外部 Flink 集群实例心态检测与版本获取 | 0.4.0 | | | | 新增 外部 Flink 集群实例心态检测与版本获取 | 0.4.0 |
| | | 新增 外部 Flink 集群手动一键回收 | 0.4.0 | | | | 新增 外部 Flink 集群手动一键回收 | 0.4.0 |
...@@ -56,8 +84,20 @@ ...@@ -56,8 +84,20 @@
| | User Jar | 新增 外部 User Jar 注册 | 0.4.0 | | | User Jar | 新增 外部 User Jar 注册 | 0.4.0 |
| | 数据源 | 新增 Mysql 数据源注册及测试 | 0.4.0 | | | 数据源 | 新增 Mysql 数据源注册及测试 | 0.4.0 |
| | | 新增 Oracle 数据源注册及测试 | 0.4.0 | | | | 新增 Oracle 数据源注册及测试 | 0.4.0 |
| | | 新增 postgreSql 数据源注册及测试 | 0.4.0 | | | | 新增 PostgreSql 数据源注册及测试 | 0.4.0 |
| | | 新增 ClickHouse 数据源注册及测试 | 0.4.0 | | | | 新增 ClickHouse 数据源注册及测试 | 0.4.0 |
| | | 新增 Doris 数据源注册及测试 | 0.6.0 |
| | | 新增 Phoenix 数据源注册及测试 | 0.6.0 |
| | | 新增 SqlServer 数据源注册及测试 | 0.6.0 |
| | | 新增 Hive 数据源注册及测试 | 0.6.0 |
| | 报警实例管理 | 新增 钉钉报警 | 0.6.0 |
| | | 新增 微信企业号报警 | 0.6.0 |
| | 报警组管理 | 新增 报警组管理 | 0.6.0 |
| 系统设置 | 用户管理 | 新增 用户基本管理 | 0.5.0 |
| | | 新增 修改密码 | 0.6.0 |
| | Flink 设置 | 新增 Application 的通用模板 Jar 配置 | 0.4.0 |
| | | 新增 是否使用 RestAPI 配置 | 0.4.0 |
| | | 新增 SQL 语句分隔符配置 | 0.4.0 |
| OpenApi | 调度 | 新增 submitTask 调度接口 | 0.5.0 | | OpenApi | 调度 | 新增 submitTask 调度接口 | 0.5.0 |
| | FlinkSQL | 新增 executeSql 提交接口 | 0.5.0 | | | FlinkSQL | 新增 executeSql 提交接口 | 0.5.0 |
| | | 新增 explainSql 验证接口 | 0.5.0 | | | | 新增 explainSql 验证接口 | 0.5.0 |
...@@ -67,4 +107,4 @@ ...@@ -67,4 +107,4 @@
| | Flink | 新增 executeJar 提交接口 | 0.5.0 | | | Flink | 新增 executeJar 提交接口 | 0.5.0 |
| | | 新增 cancel 停止接口 | 0.5.0 | | | | 新增 cancel 停止接口 | 0.5.0 |
| | | 新增 savepoint 触发接口 | 0.5.0 | | | | 新增 savepoint 触发接口 | 0.5.0 |
| 关于 | 关于 Dinky | 版本更新记录 | 关于 | 关于 Dlink | 版本更新记录 | 0.4.0 |
\ No newline at end of file
## Dinky介绍 ## Dinky介绍
实时即未来,Dinky 为 Apache Flink 而生,让 Flink SQL 纵享丝滑,并致力于实时计算平台建设。
Dinky 架构于 Apache Flink,增强 Flink 的应用与体验,探索流式数仓。即站在巨人肩膀上创新与实践,Dinky 在未来批流一体的发展趋势下潜力无限。 实时即未来,Dlink 为 Apache Flink 而生,让 Flink SQL 纵享丝滑,并致力于实时计算平台建设。
Dinky 基于 Apache Flink 实现 Dlink ,增强 Flink 的应用与体验,探索流式数仓。即站在巨人肩膀上创新与实践,Dinky 在未来批流一体的发展趋势下潜力无限。
最后,Dinky 的发展皆归功于 Apache Flink 等其他优秀的开源项目的指导与成果。 最后,Dinky 的发展皆归功于 Apache Flink 等其他优秀的开源项目的指导与成果。
......
...@@ -2,19 +2,20 @@ ...@@ -2,19 +2,20 @@
### 发行说明 ### 发行说明
dinky 版本的[发行说明](/zh-CN/release_notes/dinky-0.5.1.md) dinky 版本的[发行说明](/zh-CN/release_notes/dinky-0.6.0.md)
### 当前稳定版本 0.5.1 ### 当前稳定版本 0.5.1
| 发布版 | 链接 | | | 发布版 | 链接 | |
| ---------- | ------------------------------------------------------------ | ---- | | ---------- |----------------------------------------------------------------------------------------------------------------------| ---- |
| 二进制程序 | [dlink-release-0.5.1.tar.gz](https://github.com/DataLinkDC/dlink/releases/download/0.5.1/dlink-release-0.5.1.tar.gz) | | | 二进制程序 | [dlink-release-0.6.0.tar.gz](https://github.com/DataLinkDC/dlink/releases/download/0.6.0/dlink-release-0.6.0.tar.gz) | |
| source | [Source code (zip)](https://github.com/DataLinkDC/dlink/archive/refs/tags/0.5.1.zip) | | | source | [Source code (zip)](https://github.com/DataLinkDC/dlink/archive/refs/tags/0.6.0.zip) | |
### 旧版本 ### 旧版本
| 发布版 | 二进制程序 | Source | 发行说明 | | 发布版 | 二进制程序 | Source | 发行说明 |
| ------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -------- | |-------|----------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------|---------------------------------------------|
| 0.5.1 | [dlink-release-0.5.1.tar.gz](https://github.com/DataLinkDC/dlink/releases/download/0.5.1/dlink-release-0.5.1.tar.gz) | [Source code (zip)](https://github.com/DataLinkDC/dlink/archive/refs/tags/0.5.1.zip) | [发行说明](/zh-CN/release_notes/dinky-0.5.1.md) |
| 0.5.0 | [dlink-release-0.5.0.tar.gz](https://github.com/DataLinkDC/dlink/releases/download/0.5.0/dlink-release-0.5.0.tar.gz) | [Source code (zip)](https://github.com/DataLinkDC/dlink/archive/refs/tags/0.5.0.zip) | [发行说明](/zh-CN/release_notes/dinky-0.5.0.md) | | 0.5.0 | [dlink-release-0.5.0.tar.gz](https://github.com/DataLinkDC/dlink/releases/download/0.5.0/dlink-release-0.5.0.tar.gz) | [Source code (zip)](https://github.com/DataLinkDC/dlink/archive/refs/tags/0.5.0.zip) | [发行说明](/zh-CN/release_notes/dinky-0.5.0.md) |
| 0.4.0 | [dlink-release-0.4.0.tar.gz](https://github.com/DataLinkDC/dlink/releases/download/0.4.0/dlink-release-0.4.0.tar.gz) | [Source code (zip)](https://github.com/DataLinkDC/dlink/archive/refs/tags/0.4.0.zip) | [发行说明](/zh-CN/release_notes/dinky-0.4.0.md) | | 0.4.0 | [dlink-release-0.4.0.tar.gz](https://github.com/DataLinkDC/dlink/releases/download/0.4.0/dlink-release-0.4.0.tar.gz) | [Source code (zip)](https://github.com/DataLinkDC/dlink/archive/refs/tags/0.4.0.zip) | [发行说明](/zh-CN/release_notes/dinky-0.4.0.md) |
## Dinky发行说明
Dinky 0.6.0 是一个新功能版本,主要包括运维中心。
## 新功能
- 新增作业目录树关键字搜索框
- 新增 F2 全屏开发
- 新增 K8S 集群配置
- 新增 Doris 数据源注册、元数据、查询和执行
- 新增 SqlServer 数据源注册、元数据、查询和执行
- 新增 Oracle 数据源注册、元数据、查询和执行
- 新增 Phoenix 数据源注册、元数据、查询和执行
- 新增 Hive 数据源注册、元数据、查询和执行
- 新增元数据生成 FlinkSQL 和 SQL
- 新增 CDCSOURCE 多源合并任务语法支持
- 新增作业生命周期管理
- 新增 FlinkJar Dialect 的管理
- 新增 Batch 引擎
- 新增数据源的连接信息片段机制自动注入
- 新增用户密码修改
- 新增报警模块(实例和组)
- 新增钉钉报警
- 新增微信企业号报警
- 新增运维中心任务实例功能
- 新增运维中心任务实时监控功能
- 新增运维中心任务监控的 FlinkWebUI、智能停止、SavePoint 等操作
- 新增运维中心任务监控的作业总览
- 新增运维中心任务监控的配置信息
- 新增运维中心任务监控的智能重启和报警推送
- 新增实时自动告警
- 新增 Application 模式自增修正 checkpoint 和 savepoint 存储路径
- 新增作业发布时进行语法校验和逻辑检查
- 新增作业上下线自动提交和停止任务
- 新增作业生命周期与任务实例同步联动
- 新增运维中心的作业实例与历史切换
- 新增运维中心的异常信息实现
- 新增运维中心的 FlinkSQL 实现
- 新增运维中心的报警记录实现
- 新增运维中心血缘分析——字段级
- 新增作业剪切和粘贴
- 新增实时任务监控容错机制
## 修复和优化
- 升级 SpringBoot 至 2.6.3
- 升级 Flink 1.13.5 至 1.13.6
- 优化 sql 美化
- 优化默认启用数据预览等
- 修复前端 state 赋值 bug
- 修复异常预览内容溢出 bug
- 修复数据预览特殊条件下无法获取数据的 bug
- 优化 SQL 编辑器性能
- 修复全屏开发退出后 sql 不同步
- 优化作业配置查看及全屏开发按钮
- 优化异常日志的捕获、反馈与持久化
- 优化元数据数据源的的类型转换和连接管理
- 优化 K8S Application 提交配置
- 优化 PerJob 和 Application 作业的 JID 提交检测
- 修复集群配置参数项为空时无法正常提交 perjob 任务的bug
- 优化语法检测建议的结果提示
- 修复 Oracle 无法正确获取元数据的 bug
- 修复报警组刷新当前页面时无法正常显示下拉报警实例
- 优化当提交作业无法获取 JID 时变为提交失败
- 优化 IDEA 调试时的依赖配置
- 修复用户未登录时后台报错及鉴权问题
- 修复用户逻辑删除 bug
- 修复 kubernetes 集群配置相关显示 bug
- 优化 Studio 血缘分析为字段级
- 修复 Doris 无法获取到列的主键信息
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment