袋鼠云研发手记 | 数栈·开源:Github上400+Star的硬核分布式同步工具FlinkX

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: 作为一家创新驱动的科技公司,袋鼠云每年研发投入达数千万,公司80%员工都是技术人员,袋鼠云产品家族包括企业级一站式数据中台PaaS数栈、交互式数据可视化大屏开发平台Easy[V]等产品也在迅速迭代。

1

作为一家创新驱动的科技公司,袋鼠云每年研发投入达数千万,公司80%员工都是技术人员,袋鼠云产品家族包括企业级一站式数据中台PaaS数栈、交互式数据可视化大屏开发平台Easy[V]等产品也在迅速迭代。在进行产品研发的过程中,技术小哥哥们能文能武,不断提升产品性能和体验的同时,也把这些提升和优化过程记录下来,现录入“袋鼠云研发手记”专栏中,以和业内童鞋们分享交流。

下为“袋鼠云研发手记”专栏第二期,本期作者为袋鼠云数栈引擎团队。

袋鼠云数栈引擎团队

袋鼠云数栈引擎团队拥有多名专家级别,经验丰富的后端开发工程师,分别支撑公司大数栈产品线的不同子项目的开发需求,从项目中提取并开源了FlinkX(基于Flink的数据同步),Jlogstash(logstash 的java 版本实现),FlinkStreamSQL(扩展原生FlinkSQL,实现流与维表的join)多个项目。

在长期的项目实践与产品迭代过程中,团队成员在 Hadoop技术栈上不断深耕探索,积累了丰富的经验与最佳实践。

**第二期

数栈·开源

Github上400+Star的「硬核」分布式同步工具FlinkX**

2


FlinkX 已经开源在Github上目前已获400+Star,查看地址:https://github.com/DTStack/flinkx

1、袋鼠云为什么要自研数据同步工具?

袋鼠云作为一家数据智能公司,自研开发企业级一站式数据中台PaaS产品——数栈。

关于数栈

数栈具有8大产品模块

  • 离线/实时开发套件

一站式大数据开发平台,帮助企业快速完全数据中台搭建

  • 分析引擎

海量数据秒级查询,极速响应能力,帮助企业自由的数据探索

  • 数据质量

对过程数据和结果数据进行质量校验,帮助企业及时发现数据质量问题

  • 数据地图

可视化的数据资产中心,帮助企业全盘掌控数据资产情况和数据的来源去向

  • 数据模型

使企业数据标准化,模型化,帮助企业实现数据管理规范化

  • 数据API

快速生成数据API、统一管理API服务,帮助企业提高数据开放效率

  • Easy[V]

在线拖拉拽的方式快速搭建交互式数据可视化大屏,让数据价值看得见

  • EasyManager

全自动化,全生命周期的运维管家,提供安全稳定的数栈部署与监控服务

其中,「数据同步」是数栈开发套件中一个非常重要的功能,我们对数据同步工具有3点要求:

一是支持多种部署模式,比如测试单机部署,生产分布式部署。

二要基于yarn,mesos或者k8s做资源调度,提高资源利用率。

三要支持断点续传。因为在大数据量的传输场景下,由于网络出现抖动等原因,可能导致任务失败,那这个时候不可能重跑任务,这样太耗时了,需要从失败的点继续跑;

当时,市面上,并没有满足以上三点要求的数据同步工具。

2、为什么基于Flink?

Flink是新型的计算框架,支持多种部署方式local(单机),standalone模式,也可以基于yarn,mesos或者k8s做资源调度;并且flink提供了比较高级的API,我们能比较方便地扩展现有的API来满足我们自己的特殊需求;而且Flink提供了完整的状态管理体系(checkpoint),断点续传就是基于checkpoint机制来实现的。

3


数据同步工具对比

3、FlinkX 概览

FlinkX是在袋鼠云内部广泛使用的一个基于Flink的异构数据源离线同步工具,用于在多种数据源(MySQL、Oracle、SqlServer、Ftp、Hdfs,HBase、Hive、Elasticsearch等)之间进行高效稳定的数据同步。

FlinkX简化了数据同步任务的开发过程,用户只需提供一份数据同步任务的配置,FlinkX会将配置转化为Flink任务,并自动提交到Flink集群上执行。

作为一个面向分布式数据流处理和批量数据处理的开源计算平台,Flink具有分布式、低延迟、高吞吐和高可靠的特性。

4


FlinkX实现了多种异构数据源之间高效的数据迁移

4、FlinkX的设计思路

2.1 插件式架构

FlinkX采用了一种插件式的架构:

不同的源数据库被抽象成不同的Reader插件;

不同的目标数据库被抽象成不同的Writer插件;

整个数据同步任务共有的处理逻辑被抽象在Template模块中,该模块根据数据同步任务配置加载对应的Reader和Writer插件,组装Flink任务,并提交到Flink集群执行;

5


FlinkX支持任意数据源类型的数据同步工作

FlinkX框架可以支持任意数据源类型的数据同步工作。作为一个开放式系统,用户可以根据需要开发新的插件,以接入新的数据库类型。

2.2 Flink任务的自动组装

Template模块根据同步任务的配置信息加载源数据库和目的数据库对应的Reader插件和Writer插件;

Reader插件实现了InputFormat接口,从源数据库中获取DataStream对象;

Writer插件实现了OutputFormat接口,将目的数据库与DataStream对象相关联;

Template模块通过DataStream对象将Reader和Writer串接在一起,组装成一个Flink任务,并提交到Flink集群上执行。

6


Flink任务的自动组装

5、FlinkX的优势

一、便于使用

用户只需要提供一份数据同步配置信息,无需编写程序,FlinkX会配置信息自动转换为Flink任务并提交到Flink集群执行。

二、性能优越

FlinkX会将数据同步任务提交到Flink集群中的执行,使得FlinkX天然具有Flink的性能优势,主要表现为分布式、低延迟、高吞吐和高可靠。

三、多运行模式

同普通的Flink任务一样,FlinkX支持local、standalone和yarn三种运行模式。

「local模式」就是在本地开启一个mini的Flink集群执行Flink任务,这种运行模式的好处是使用方便,不需要预先启动分布式集群,适用于测试和实验环境;缺点是由于单点执行,可靠性差,当数据量大时吞吐量受限;

「standalone模式」是指以独立部署的方式启动一个Flink集群,然后将提交Flink任务到该集群上执行;

「yarn模式」是指在yarn集群中部署Flink集群,然后将Flink任务提交到部署在yarn集群中的Flink集群上执行;standalone模式和yarn模式都是分布式地执行FlinkX,而yarn模式可以利用yarn的资源管理功能,因而成为部署FlinkX应用时的首选。

四、开放式可扩展

只要你愿意,你可以给任何类型的数据源开发Reader和Writer插件。

五、错误控制和脏数据管理

错误控制可以在数据同步配置信息中设置错误记录阈值、错误占比阈值,使得数据同步任务在出错时及时停止,避免系统资源的浪费。

脏数据管理可以将错误记录、错误原因、错误类型输出到Hive表中,便于日后的排查工作。

6、FlinkX在数栈产品中的应用

使用数栈的数据开发套件,用户可以通过界面向导可视化的创建一个数据同步任务,而FlinkX正是数据同步的底层执行引擎。

7


FlinkX在袋鼠云数栈产品中的应用

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
目录
相关文章
|
20天前
|
运维 Kubernetes Java
Koupleless 助力「人力家」实现分布式研发集中式部署,又快又省!
本文由仁励家网络科技(杭州)有限公司架构师赵云兴、葛志刚撰写,探讨了公司在优化HR SaaS解决方案时遇到的系统资源浪费和运维成本高的问题。通过引入Koupleless框架,成功将模块体积从500M缩减至5M以下,部署时间从6分钟缩短至3分钟,并大幅节省服务器资源。文章详细介绍了Koupleless的部署方案及优化措施,感谢Koupleless团队的专业支持,使人力家实现了多应用合并部署,降低了运维成本。
Koupleless 助力「人力家」实现分布式研发集中式部署,又快又省!
|
21天前
|
运维 Kubernetes Java
Koupleless 助力「人力家」实现分布式研发集中式部署,又快又省!
通过引入Koupleless框架,解决了多应用部署中资源浪费和运维成本高的问题,实现了模块瘦身、快速部署及流量控制优化,大幅降低了服务器资源占用和发布耗时,提升了系统稳定性和运维效率。最终,人力家成功实现了多应用的轻量集中部署,显著减少了运维成本。
 Koupleless 助力「人力家」实现分布式研发集中式部署,又快又省!
|
15天前
|
运维 安全 开发工具
GitHub 热门开源运维工具 Websoft9:如何实现服务器管理效率翻倍?
Websoft9 提供 200+ 开源应用一键部署,支持容器化隔离、GitOps 自动化和企业级安全防护,助力服务器管理效率提升 80%。
53 1
|
25天前
|
人工智能 监控 开发者
阿里云PAI发布DeepRec Extension,打造稳定高效的分布式训练,并宣布开源!
阿里云PAI发布DeepRec Extension,打造稳定高效的分布式训练,并宣布开源!
|
1月前
|
运维 数据可视化 开发者
Dpanel:Star2k,短短时间就被大家称为GitHub开源神器!轻量化Docker面板,还在等什么
如今的软件开发和运维领域,Docker容器技术已经成为一种主流的解决方案,它允许开发者和系统管理员以更高效、更灵活的方式部署和管理应用程序。然而,Docker的命令行界面虽然强大,但对于某些用户来说可能不够直观。今天,我们要介绍的开源项目——dpanel,就是一个轻量化的Docker可视化管理面板,它以其简洁、高效的特点,为用户提供了一个易于操作的界面来管理Docker容器和镜像。
|
4月前
|
消息中间件 监控 数据可视化
Apache Airflow 开源最顶级的分布式工作流平台
Apache Airflow 是一个用于创作、调度和监控工作流的平台,通过将工作流定义为代码,实现更好的可维护性和协作性。Airflow 使用有向无环图(DAG)定义任务,支持动态生成、扩展和优雅的管道设计。其丰富的命令行工具和用户界面使得任务管理和监控更加便捷。适用于静态和缓慢变化的工作流,常用于数据处理。
Apache Airflow 开源最顶级的分布式工作流平台
|
4月前
|
数据可视化 数据挖掘 项目管理
远程团队的高效选择!必备协作工具助力分布式办公
随着远程办公的普及,团队协作面临沟通不畅、任务跟踪困难、协同效率低和反馈滞后等挑战。本文推荐几款高效协作工具,如板栗看板、Trello、Asana和Slack,帮助团队应对分布式协作中的痛点,提升项目管理透明度和沟通效率。
93 1
|
4月前
|
存储 Linux 数据安全/隐私保护
一键部署 200+ 开源Github 2k+ 星星的软件
Websoft9面板是一款基于Web的PaaS/Linux面板,支持在个人服务器上一键部署200多种热门开源应用,适用于个人开发者、中小企业、创业团队、教育机构和技术爱好者。它集成了丰富的开源软件,提供便捷的部署方式、高效的资源利用、良好的可扩展性及低技术门槛,帮助用户快速搭建和管理各类应用。
|
5月前
|
编解码 人工智能 自然语言处理
MaskGCT:登上GitHub趋势榜榜首的TTS开源大模型
近日,香港中文大学(深圳)联手趣丸科技推出了新一代大规模声音克隆TTS模型——MaskGCT。一起看看该模型的一些表现吧!
|
1月前
|
开发工具 git C++
【够用就好002】外行第一次发布github项目仓库
#deepseek#自学 记录外行学习代码的历程 今天是上传自己的工具代码到github仓库,一直以来是伸手党克隆别人的项目,今天在deepseek的辅导下上传自己的内容。

热门文章

最新文章