热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Dinky0.6.2已发布,优化Flink应用体验

Dinky0.6.2已发布,优化Flink应用体验前言ApacheFlink作为新一代的实时计算框架已经被应用到各个行业与领域,虽说应用程度不同&#

Dinky 0.6.2 已发布,优化 Flink 应用体验


前言

Apache Flink 作为新一代的实时计算框架已经被应用到各个行业与领域,虽说应用程度不同,但都会遇到一些使用上的痛点,基础的应用痛点比如 FlinkSQL 作业提交不友好、作业无监控报警等。很大程度上说,FlinkSQL 大大加快了 Flink 的应用推广,而本文将简述开源项目 Dinky 如何改善 Flink 的痛点来优化 FlinkSQL 应用体验。


简介

实时即未来,Dlink 为 Apache Flink 而生,让 Flink SQL 纵享丝滑,并致力于实时计算平台建设。

Dinky 基于 Apache Flink 实现 Dlink ,增强 Flink 的应用与体验,探索流式数仓。即站在巨人肩膀上创新与实践,Dinky 在未来批流一体的发展趋势下潜力无限。

最后,Dinky 的发展皆归功于 Apache Flink 等其他优秀的开源项目的指导与成果。


特点

一个 开箱即用易扩展一站式 实时计算平台,以 Apache Flink 为基础,连接 OLAP数据湖 等众多框架,致力于 流批一体湖仓一体 的建设与实践。

其主要目标如下:


  • 可视化交互式 FlinkSQL 和 SQL 的数据开发平台:自动提示补全、语法高亮、调试执行、语法校验、语句美化、全局变量等
  • 支持全面的多版本的 FlinkSQL 作业提交方式:Local、Standalone、Yarn Session、Yarn Per-Job、Yarn Application、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


精彩瞬间


FlinkSQL Studio


flinksqlstudio


实时调试预览


selectpreview


语法和逻辑检查


checksql


JobPlan


jobplan


字段级血缘分析


lineage


BI 展示


charts


元数据查询


metadata


实时任务监控


monitor


实时作业信息


jobinfo


数据地图


datamap


数据源注册


datasource


优化 Flink 体验


沉浸式的 FlinkSQL IDE

Apache Flink 提供了 sql-client,但 sql-client 仅作为一个 beta 的功能,难以被应用到生产中。

Dinky 提供了沉浸式的 FlinkSQL IDE 开发能力,提供了自动提示与补全、语法高亮、语句美化、语法校验和逻辑检查、调试预览结果、字段级血缘分析等专业的功能,使 FlinkSQL 的开发如同 SQL 开发一样舒适与简单。


极易用的任务构建方式

Flink 在构建 FlinkSQL Jar 任务时通常需要考虑依赖及版本的维护、代码的编写、繁琐的编译打包过程等。

Dinky 将 FlinkSQL 任务的构建进行了极简,开发人员只需要专注 FlinkSQL 的口径书写,并且可以实时进行检查与调试,在任务提交的过程则是快速的自动化托管,以实现一个 FlinkSQL 语句可以在所有的执行模式与外部集群上随意切换。

对于 Dinky 来说,主要划分两类用户。一类是平台运维人员,该人员需要根据官网文档及自身的 Flink 知识储备来手动搭建稳定的 Dinky 运作环境,门槛较高;另一类是数据开发任务,即 SQL Boy,boys 只需熟悉 FlinkSQL 的语法与常见的应用场景,即可快速高效地进行 FlinkSQL 的开发与运维,达到易用的任务构建方式。这也是最符合企业生产团队的分工策略,平台和开发分离。


无侵入的部署模式

一些开源项目或自建平台通常需要绑死 Flink 集群或者侵入 Flink 的源码,容易 Flink 功能受限或在搭建和后续扩展时出现问题。

Dinky 则是完全无侵入,可部署与各个集群之外,同时连接和监控多个集群。轻易地对接各个版本的 Flink 集群与公司内仓库分支优化过的 Flink 集群,完全兼容 Flink 自身的 connector、udf、cdc 等。


增强式的功能体验

一些开源项目及自建平台一般只专注于 Flink 任务的提交与运维。

Dinky 则不同,为更舒适地使用 Flink 的相关功能进行的功能增强,如表值聚合函数、全局变量、CDC多源合并、执行环境、语句合并、共享会话等,并且还在不断地扩展新的功能增强,以使 Flink 更贴近企业的需求。


实时的监控报警

Dinky 提供实时的监控报警能力,实时守护已上线的流或批任务,在任务触发异常停止和成功完成时都会实时报警通知,并且记录了外部集群实时的任务信息,摆脱 History Server 的限制,弥补 deploy 的集群作业失败后信息难查询的不足,用户随时随地都可追溯历史作业的执行信息与异常。


一站式的开发运维

Dinky 提供了一站式的开发运维能力,从 FlinkSQL 开发调试到作业上线下线的运维监控,再到数据源的 OLAP 及普通查询能力等,使得数仓建设或数据治理过程中所有的工作均可以在 Dinky 上完成。


易扩展的代码实现

Dinky 非常注重代码的扩展能力,在源码中大量使用了 SPI 机制来支持用户低成本地自定义扩展新功能,比如数据源、报警方式、自定义语法等扩展。

Dinky 的功能体验也十分注重扩展能力,在功能设计上尽可能地开放了最大的配置能力,如自定义提示与补全语法、自定义数据源的Flink 配置与生成规则、自定义全局变量、自定义Flink执行环境、自定义集群配置的各种配置项等等。

Dinky 的外部对接也很注重扩展能力,基于 SpringBoot 的代码的高内聚和低耦合以及提供多种规范的 OpenAPI 使其可以很方便地扩展第三方生态、微服务或者平台,例如海豚调度等。


小而美的产品形态

常规的大数据平台或者开源项目一般是十分庞大的,维护成本较高。

正如 Dinky 本名所释,小巧而精美,一直是开源项目建设的首要目标。小巧具体指易搭建、不绑定任何外部中间件或文件系统、代码简洁易维护;精美则指沉浸式的页面、经过打磨的各种功能等。


近期计划


多租户及命名空间

Dinky 目前需要一个多租户的能力来分离业务数据及资源队列,需要命名空间来增强和规范代码业务逻辑的实现与扩展。


全局血缘与影响分析

Dinky 目前需要将所有的字段级血缘进行存储,以构建全局的血缘和影响分析,方便用户更容易地追溯数据问题。


统一元数据管理

Dinky 目前需要统一的元数据中心来管理外部数据源元数据,使其可以自动同步数据库物理模型与平台逻辑模型之间的结构,增强平台一站式的开发能力。


Flink 元数据持久化

Dinky 目前需要持久化 Flink Catalog,使作业开发时不再需要编写 CREATE TABLE 等语句,转变为可视化的元数据管理功能。


多版本 Flink-Client Server

Dinky 目前的 Flink 多版本支持需要启动多个不同版本的实例来支持。未来需要实现客户端与服务端分离,单独实现多版本的 Server。


整库千表同步

数据库的整库同步是一个常见的场景,Dinky 未来将提供一个简短的 FlinkSQL 实现整库同步任务构建的能力。


感谢

站在巨人的肩膀上,Dinky 才得以诞生。对此我们对使用的所有开源软件及其社区表示衷心的感谢!我们也希望自己不仅是开源的受益者,也能成为开源的贡献者,也希望对开源有同样热情和信念的伙伴加入进来,一起为开源献出一份力!致谢列表如下:

Apache Flink

Apache Dolphinscheduler

Ant-Design-Pro

Mybatis Plus

Monaco Editor

SpringBoot


用户评语


用户一

随着大数据实时领域的快速发展且逐渐向 SQL 化转移 &#xff0c;作为新一代的 FlinkSQL Studio Dinky 应运而生 &#xff0c;Dinky 作为一款 FlinkSQL 的交互式开发平台&#xff0c; 真正解决了目前 FinkSQL 的痛点 &#xff0c;降低了开发运维的门槛&#xff0c;从 Dinky-0.1 到目前的 Dinky-0.6&#xff0c;我也见证了 Dinky 的成长 &#xff0c;并基于 0.6 版本扩展了 Hive 元数据管理功能&#xff0c;这里还是要得力于 Dinky 的作者对整体平台的架构的设计&#xff0c;轻松上手即可扩展相关功能&#xff0c;经过不断地迭代更新&#xff0c; Dinky 也已逐渐完善企业级应用场景 : 包括 <元数据管理> &#xff0c; <表/字段级血缘关系>&#xff0c; <运维中心> &#xff0c;<告警中心> 等等 &#xff0c; 以上特性/功能为我们建设企业级实时平台节省了很大成本&#xff0c;且真正具备企业级能力特点的实时开发平台。
同时感谢社区的认可&#xff0c;让我正式成为了社区中的一员 &#xff0c;作为 Dinky 的使用者&#xff0c; 我将及时反馈在使用过程中遇到的问题&#xff0c; 作为贡献者: 我将和 Dinky 一起共同进步 &#xff0c; 积极回馈 &#xff0c;拥抱开源 热爱开源。
在此也祝愿 Dinky 越来越强 &#xff0c;社区越来越强大&#xff0c;希望更多的大佬加入进来&#xff0c;和我们一起共建 Dinky 社区&#xff0c;让 Dinky 在开源社区越走越远&#xff0c;越飞越高 。


用户二

Dinky 作为基于 flink 二次开发的一款交互式开发平台&#xff0c;提供 web 方式的 FlinkSQL 开发编辑器、自动补全&#xff0c;任务启停、数据地图、运行日志信息查看、支持 yarn 和 k8s 集群部署等功能。部署方面实现轻量化&#xff0c;开箱即用&#xff0c;降低与原始数据集群耦合度&#xff0c;便于适配原有数据集群版本&#xff1b;开发方面&#xff0c;降低开发人员使用 flink 难度及运维复杂度。

个人曾想过开发类似 Dinky 这样小而精的数据平台&#xff0c;限于现实场景、技术理解深度&#xff0c;没能实现。Dinky 开源后&#xff0c;从部署到阅读源码进行探索&#xff0c;从中学习不少轻量、容易扩展实现方案的优秀思想&#xff0c;未来将尽个人能力为社区做一些力所能及的事。最后&#xff0c;感谢 Dinky 贡献者&#xff0c;秉承自由开源&#xff0c;共建共赢理念&#xff0c;将源码开源&#xff0c;让更多开发人员学习使用&#xff0c;在实际场景中产生价值。


用户三

接触 flink 以来&#xff0c;一直诟病自身带的 web 平台&#xff0c;一点不好用&#xff01;偶然看到 dinky&#xff0c;试用了下&#xff0c;真的挺好用&#xff01;

dinky 作为一款 flink 的交互式开发平台&#xff0c;可以帮助开发者更好&#xff0c;更快的开发出自己的 flink 作业&#xff0c;解决了用户的痛点。随着作者从 0.1 到 0.6 不断的完善

和升级&#xff0c;支持的功能也越来越多&#xff0c;例如: sql 语法高亮、自动补全、sql 逻辑校验、血缘分析、任务启停、元数据查看、状态监控、flink on k8s 支持等等&#xff0c;这些功能大大的提高了开发者的效率。其中支持 flink on k8s&#xff0c;更是我接触后发现的一大亮点。目前平台已被我司作为生产使用。

最后&#xff0c;感谢 Dinky 开发者和建设者&#xff0c;祝福 dinky 社区发展越来越好&#xff0c;致敬&#xff01;


更多用户

整合了FlinkSQL API的开发。

功能很强大&#xff0c;尤其 SQL 提交到远程功能&#xff0c;缩短了开发jar的时间。

操作简单&#xff0c;运维方便&#xff0c;可以脱离 flinkwebui 实时管控JOB的运行情况、异常及时报警。

功能规划清晰&#xff0c;快速迭代。

灵活部署&#xff0c;与原有集群解耦合。

各种功能比较丰富&#xff0c;界面设计接近阿里实时计算平台。

页面设计简洁、代码架构合理、兼容性强。

页面提交sql&#xff0c;方便的集成各种flink集群和数据库。

简化实时开发步骤&#xff0c;提高实时开发效率。

易用功能全面&#xff0c;问题反馈及解决及时。

开箱即用&#xff0c;支持多数据源&#xff0c;有一站式开发的核心能力。


推荐阅读
  • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
    在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • Presto:高效即席查询引擎的深度解析与应用
    本文深入解析了Presto这一高效的即席查询引擎,详细探讨了其架构设计及其优缺点。Presto通过内存到内存的数据处理方式,显著提升了查询性能,相比传统的MapReduce查询,不仅减少了数据传输的延迟,还提高了查询的准确性和效率。然而,Presto在大规模数据处理和容错机制方面仍存在一定的局限性。本文还介绍了Presto在实际应用中的多种场景,展示了其在大数据分析领域的强大潜力。 ... [详细]
  • 本文详细介绍了如何在Linux系统(以CentOS为例)上彻底卸载Zimbra邮件系统,包括停止服务、删除文件和用户等步骤。 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 本文介绍了如何利用HTTP隧道技术在受限网络环境中绕过IDS和防火墙等安全设备,实现RDP端口的暴力破解攻击。文章详细描述了部署过程、攻击实施及流量分析,旨在提升网络安全意识。 ... [详细]
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
  • Amoeba 通过优化 MySQL 的读写分离功能显著提升了数据库性能。作为一款基于 MySQL 协议的代理工具,Amoeba 能够高效地处理应用程序的请求,并根据预设的规则将 SQL 请求智能地分配到不同的数据库实例,从而实现负载均衡和高可用性。该方案不仅提高了系统的并发处理能力,还有效减少了主数据库的负担,确保了数据的一致性和可靠性。 ... [详细]
  • 在本地环境中部署了两个不同版本的 Flink 集群,分别为 1.9.1 和 1.9.2。近期在尝试启动 1.9.1 版本的 Flink 任务时,遇到了 TaskExecutor 启动失败的问题。尽管 TaskManager 日志显示正常,但任务仍无法成功启动。经过详细分析,发现该问题是由 Kafka 版本不兼容引起的。通过调整 Kafka 客户端配置并升级相关依赖,最终成功解决了这一故障。 ... [详细]
  • 针对MySQL Undo空间满载及Oracle Undo表空间溢出的问题,本文详细探讨了其原因与解决策略。首先,通过启动SQL*Plus并以SYS用户身份登录数据库,查询当前数据库的UNDO表空间名称,确认当前状态。接着,分析导致Undo空间满载的常见原因,如长时间运行的事务、频繁的更新操作等,并提出相应的解决方案,包括调整Undo表空间大小、优化事务管理、定期清理历史数据等。最后,结合实际案例,提供具体的实施步骤和注意事项,帮助DBA有效应对这些问题。 ... [详细]
  • 本文详细介绍了使用 Python 进行 MySQL 和 Redis 数据库操作的实战技巧。首先,针对 MySQL 数据库,通过 `pymysql` 模块展示了如何连接和操作数据库,包括建立连接、执行查询和更新等常见操作。接着,文章深入探讨了 Redis 的基本命令和高级功能,如键值存储、列表操作和事务处理。此外,还提供了多个实际案例,帮助读者更好地理解和应用这些技术。 ... [详细]
author-avatar
常叽叽_655
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有