vlambda博客
学习文章列表

袋鼠云批流一体分布式同步引擎ChunJun(原FlinkX)的前世今生(文末好礼)

  前言


ChunJun(原FlinkX)是一个基于Flink提供易用、稳定、高效的批流统一的数据集成工具,是袋鼠云一站式大数据开发平台-数栈DTinsight的核心计算引擎,其技术架构基于实时计算框架Flink,打造出“具有袋鼠特色”的实时计算引擎。 

开源项目地址: 
https://github.com/DTStack/chunjun
https://gitee.com/dtstack_dev_0/chunjun


从FlinkX到ChunJun



ChunJun脱胎于袋鼠云数栈自主研发的批流统一的数据同步工具 FlinkX

2016年,数栈技术团队初步研发完成了一款基于Flink的分布式离线/实时数据同步插件——FlinkX,它可实现多种异构数据源高效的数据同步,支持双向读写和多种异构数据源。有它助力,袋鼠云在批流一体的研究实践以更迅猛的势头往前挺进。

2018年4月,秉承着开源共享理念的数栈技术团队在github上开源了FlinkX,历经4年多的发展,FlinkX从当初的一个小项目,成长为拥有 2900+star1300+fork的开源项目。

从开源的第一天,数栈技术团队从未停下技术探索和社区回馈的脚步,在4年多的时间里先后开源了 flinkx、f linkStreamSQL、jlogstash、easyagent、doraemon、molecule、Taier,袋鼠云数栈开源家族愈发壮大,开源项目系列得到了广泛的发展,相继在各类企业中落地应用。

今年,数栈技术团队决定对开源项目进行整体升级,并推出自主开源计划—— DTstackCon,其中大数据开源项目系列以 “十大名剑”作为概念来源,承载着数栈技术团队对它们能如利剑,为社区数字化进程的发展之路披荆斩棘的向往。

正是怀揣着这样殷切的期望,我们决定正式将FlinkX更名为 ChunJun!

ChunJun命名取自于中国古代十大名剑之一的 纯钧
(ChunJun logo)

纯钧是春秋战国时期铸剑名师欧冶子为越王勾践所铸,其剑身取材珍贵,锋利无比,剑刃就象壁立千丈的断崖崇高而巍峨,剑身更是历经千年而不蚀,代表稳定而强大坚定的意志,正如ChunJun作为袋鼠云数栈的核心计算引擎,承载着实时平台、离线平台、数据资产等多个应用的底层数据同步及计算,其强大的功能保障着客户业务数据的一致性。
袋鼠云批流一体分布式同步引擎ChunJun(原FlinkX)的前世今生(文末好礼)
ChunJun的logo主体的字母C是由许多平行四边形组成的,这个组合有递进、有组合,正是ChunJun的 稳定、聚合体、分布式、集成的开发理念的具象体现。

同时也传达出ChunJun核心观念:提供一个 易用、稳定、高效的数据同步和集成工具。

底层采用六边形蜂巢结构,因为六边形的蜂巢是“最省劳动力、也最省材料的选择”。多个六边形排列在一起之间没有空隙,这种排列也被称为是最稳定的排列方式。稳定,从来是我们开发的第一考虑。

什么是ChunJun


ChunJun是一个基于Flink 提供 易用、稳定、高效的批流统一的数据集成工具,既可以采集静态的数据,比如MySQL,HDFS等,也可以采集实时变化的数据,比如binlog,Kafka等。同时ChunJun也是一个支持原生FlinkSql所有语法和特性的计算框架。目前ChunJun在实际应用过程中已服务了 上百家客户,经过多次迭代与沉淀,积累了大量的客户案例。

ChunJun主要应用于大数据开发平台的数据同步/数据集成模块,通常采用将底层高效的同步插件和界面化的配置方式相结合的方式,使大数据开发人员可简洁、快速的完成数据同步任务开发,实现将业务数据库的数据同步至大数据存储平台,从而进行数据建模开发,以及数据开发完成后,将大数据处理好的结果数据同步至业务的应用数据库,供企业数据业务使用。


袋鼠云批流一体分布式同步引擎ChunJun(原FlinkX)的前世今生(文末好礼)

ChunJun功能特点


ChunJun具有以下几大特色功能点:

1

超丰富

* 丰富的插件种类: ChunJun上下游插件多达40种,如常见的mysql、binlog、logminer等,大部分插件都支持source/reader、sink/writer及维表功能。

* 丰富的任务执行模式: 支持本地拆箱即用式-local 模式,Flink 自带 standalone 模式,常用调度 yarn session 和 yarn pre-job 模式,以及与k8s 结合部署的 k8s 模式。

* 丰富的任务类型: ChunJun支持json 同步任务,以及sql 计算任务,用户可以根据自己的需要,考虑是使用配置更加灵活的json同步任务,还是计算更加强大的sql计算任务。

2

超灵活

* 脏数据收集系统插件化: 面对不同的业务场景,可以配置不同的脏数据配置,灵活处理,例如:
是否将脏数据落盘处理;
是否在日志中打印脏数据信息;
脏数据最大条数限制;
脏数据存储到不同类型的数据源等。
 
* 指标系统插件化: 与脏数据插件化类似,指标系统在设计上也采用了插件化设计,用户根据自己的业务场景,灵活配置指标系统。

3

超强大

* 支持增量同步: 对于某些业务库的表,表中的数据基本只有插入操作,随着业务的运行,表中的数据会越来越大。如果每次都整表同步的话,消耗的时间及资源也会越来越多,因此需要一个增量同步的功能,每次只同步增加部分的数据,对于已经同步过的数据则不再进行重复的同步工作。

增量同步是针对于两个及以上数量的同步任务来说的,对于初次执行增量同步的某张表而言,该次同步实质上是整表同步,不同的是在任务执行结束后会记录增量字段的结束值(endLocation)并将其上传至prometheus供后续使用。

在构建下次增量任务时获取该endLocation并作为上述过滤条件的参数值(startLocation)。在任务解析到增量任务配置时,会根据startLocation的有无自动构建过滤条件,并将其拼接至where条件中,最终构建出一条如:select id, name, age from test where id > 100的SQL,从而达到增量读取的目的。

* 支持断点续传:对于某些业务库的表,其数据量可能非常大,同步可能耗时非常久。如果在同步过程中由于某些原因导致任务失败,从头再来的话成本非常大,因此需要一个断点续传的功能从任务失败的地方继续。

断点续传的本质是通过Flink的checkpoint机制实现的,在每次checkpoint时,reader插件会保存当前读取到的字段的值,writer插件则会在保存writer中的指标及其他信息,然后将writer中的事务提交。

* 支持同步DDL数据:在客户真实场景中,对于DDL数据目前无法处理。在袋鼠内部, ChunJun借助外部数据源,支持监听DDL语句,并对DDL手动执行。

ChunJun未来规划


ChunJun能从一个小项目发展到今天离不开社区开发者们的支持,我们将以此为基,秉承初心,继续大力发展ChunJun开源框架。

1

技术发展

* 支持数据湖: ChunJun 团队正在探索湖仓一体的建设
* 数据还原的完善: 支持对DDL自动解析并交由下游数据源自动执行
* 更丰富的插件: 不仅仅是丰富同步插件,也还要丰富脏数据插件,指标插件等
* 更完善的调度: 完善k8s调度,给予用户更完整的k8s方案
* 性能与稳定性: ChunJun 团队持续优化代码结构,提高ChunJun性能与稳定性

2

社区发展

* ChunJun技术融合方案
* ChunJun系列直播公开课
* ChunJun Meetup技术沙龙会

答题有奖活动


为了回馈广大的ChunJun的支持者们,数小栈为大家准备了精美小礼品袋鼠云批流一体分布式同步引擎ChunJun(原FlinkX)的前世今生(文末好礼)袋鼠云批流一体分布式同步引擎ChunJun(原FlinkX)的前世今生(文末好礼)~~


【正文部分一共出现了几次“ChunJun ”】赶快将你的答案写在评论区留言吧!

答对且点赞最高的前三名,将分别获得:


第一名:小米手环6

第二名:星巴克杯子

第三名:星巴克充值卡100元


点赞统计截止时间:即日起至2022年4月29日中午12:00


袋鼠云批流一体分布式同步引擎ChunJun(原FlinkX)的前世今生(文末好礼)

开源项目技术交流

袋鼠云批流一体分布式同步引擎ChunJun(原FlinkX)的前世今生(文末好礼)

ChunJun

https://github.com/DTStack/chunjun

https://gitee.com/dtstack_dev_0/chunjun

Taier

https://github.com/DTStack/Taier

https://gitee.com/dtstack_dev_0/taier

Molecule

https://github.com/DTStack/molecule

https://gitee.com/dtstack_dev_0/molecule

欢迎加入开源框架技术交流群

(钉钉群:30537511)

点击阅读原文,抵达开源社区!