Hi,我是ChunJun,一个有趣好用的开源项目。
今天我们正式开通了自己的公众号!欢迎大家关注~
数字经济时代,各行各业数字化转型大趋势下,数据要素成为关键。海量多源异构数据汇聚,使得数据同步面临同步速率受限、稳定性差、维护成本高等挑战。
批流一体的数据集成框架ChunJun,沉淀了团队六年来在数据同步和集成方面的实践经验,秉承易用、稳定、高效的目标,满足更多用户对新型数据集成管理需求的响应。
ChunJun是什么
ChunJun是易用、稳定、高效的批流一体的数据集成框架。
主要应用于大数据开发平台的数据同步/数据集成模块,通常采用将底层高效的同步插件和界面化的配置方式相结合的方式,使大数据开发人员可简洁、快速的完成数据同步任务开发,实现将业务数据库的数据同步至大数据存储平台,从而进行数据建模开发,以及数据开发完成后,将大数据处理好的结果,数据同步至业务的应用数据库,供企业数据业务使用。
核心特性
• 基于json、sql构建任务
• 支持多种异构数据源之间数据传输
• 支持断点续传、增量同步
• 支持任务脏数据存储管理
• 支持Schema同步
• 支持RDBS数据源实时采集
开源地址
https://github.com/DTStack/chunjun
https://gitee.com/dtstack_dev_0/chunjun
ChunJun的故事
项目最早启动的初衷是为袋鼠云的核心业务一站式大数据开发治理平台-数栈DTinsight,打造一款具有“袋鼠特色“的核心计算引擎,承载实时平台、离线平台、数据资产平台等多个应用的底层数据同步及计算任务。
2016年,数栈技术团队初步研发完成了这款基于Flink的分布式离线/实时数据同步插件——FlinkX,它可以实现多种异构数据源高效的数据同步,支持双向读写和多种异构数据源。有它助力,袋鼠云在批流一体的研究实践以更迅猛的势头往前挺进。
此后,FlinkX在业务场景中投入实际应用,得到了超过预期的效果,团队持续投入研发力量,在脏数据、分布式、整库同步、连接数控制等方面逐渐完善。成为支持数栈实现异构数据源之间高速稳定数据同步的核心计算引擎。
2018年4月,秉承着开源共享理念的数栈技术团队在github上开源了FlinkX,吸引了大量的开发者们一起技术交流和合作共建,FlinkX得到了更好的发展。
2022年4月,在FlinkX进行初版开源的整整四年后,FlinkX已经从当初的一个小项目,成长为拥有3200+star,1400+fork的开源项目。技术团队决定对FlinkX进行整体升级,并更名为ChunJun,希望为大家真正提供一个稳定、高效、易用的批流一体的数据集成框架。
ChunJun的技术
ChunJun既可以采集静态的数据,比如MySQL,HDFS等,也可以采集实时变化的数据,比如binlog,Kafka等。同时ChunJun也是一个支持原生FlinkSql所有语法和特性的计算框架。
主要架构
ChunJun基于Flink并采用插件式架构,将源数据库抽象成Reader插件,将目的数据库抽象成Writer插件。
核心能力
● 多源异构数据汇聚
作为一个开放式系统,用户可以根据需要,开发新的插件,接入新的数据库类型,也可以使用内置的数据库插件。目前兼容30+异构数据源的数据读写与SQL计算。
● 断点续传
针对网络波动等异常情况,导致数据同步失败的任务,在下一次任务时自动从上一次失败的数据点进行数据同步,避免全部重跑。
● 数据还原
除了DML操作以外,一些源端数据库的DDL操作也能做到同步,最大程度保证源端数据库和目标端数据库的数据统一和结构统一,做到数据还原。
● 脏数据管理
数据传输过程中,因数据质量或主键约束等其他因素导致数据无法同步到目标数据库,针对这些脏数据进行统计和管理,便于后续进行脏数据分析。
● 速率控制
数据同步过程中,数据传输效率是关键,ChunJun针对各种场景,有的放矢地控制速率,最大程度保证数据同步的正常进行。
ChunJun的优势
简单易用
● 实现“开箱即用”
支持Docker 一键部署,支持多种任务运行模式。
- 本地 local模式,适用于调研、测试阶段使用;
- Flink 集群 standalone模式;
- Yarn 调度 session 模式及 per-job模式,常用于生产环境;
- K8S 环境 application 模式及 session 模式。
● 丰富任务类型
支持json 同步任务,以及sql 计算任务,用户可以根据自己的需要,考虑是使用配置更加灵活的json同步任务,还是计算更加强大的sql计算任务。
● 多种插件种类
ChunJun上下游插件多达40种,如常见的mysql、binlog、logminer等,大部分插件都支持source/reader、sink/writer及维表功能。
开放兼容
● 信创兼容
实现国产信创环境全面适配,包括服务器、芯片、系统、数据库等,并且支持在海豚调度、太阿调度、dlinky等常用平台上使用。
● 成熟稳定
开源开放,基于gitHub社群不断进行优化迭代,在上百家客户生产环境上稳定运行,并且有专门的团队维护。
功能强大
● 支持增量同步
对于某些业务库的表,表中的数据基本只有插入操作,随着业务的运行,表中的数据会越来越大。如果每次都整表同步的话,消耗的时间及资源也会越来越多,因此需要一个增量同步的功能,每次只同步增加部分的数据,对于已经同步过的数据则不再进行重复的同步工作。
增量同步是针对于两个及以上数量的同步任务来说的,对于初次执行增量同步的某张表而言,该次同步实质上是整表同步,不同的是在任务执行结束后会记录增量字段的结束值(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变更数据,根据任务配置,对下游采用手动变更或自动变更。
● 支持脏数据收集系统插件化
面对不同的业务场景,可以配置不同的脏数据配置,灵活处理,例如:是否将脏数据落盘处理;是否在日志中打印脏数据信息;脏数据最大条数限制;脏数据存储到不同类型的数据源等。
● 支持指标系统插件化
与脏数据插件化类似,指标系统在设计上也采用了插件化设计,用户根据自己的业务场景,可灵活配置指标系统。
ChunJun的未来规划
后续我们将定期对ChunJun进行迭代,发布最新版本。近期的规划如下:
• 完善项目E2E测试及插件单测,为项目提供强有力的稳定性保证;
• 加强数据还原,联同数据湖打造批流一体数仓全链路;
• 增加服务能力,打造最全面的数据集成框架;
• 框架整体优化,为用户提供最快、最丝滑的体验。
写在最后
为了满足各类业务需求,如何选择正确的数据集成工具,从而对各类数据加以归纳,是许多企业面临的问题。ChunJun相继在各类型企业中进行落地应用,经过在丰富核心业务场景中的实践和打磨,能够支持不同类型的数据集成和同步任务,其强大的功能保障着客户业务数据的一致性。
ChunJun项目技术团队非常期待得到每一个人的反馈,能够和其他优秀开发者共同合作,进一步推动数据集成/同步的技术发展。
最后,如果您对ChunJun或数据集成等领域有兴趣,都可以参与到我们的建设中来,一起交流,一起进步,为ChunJun变得更好贡献一点你的代码和意见,这将是我们,同时也是ChunJun莫大的荣幸。
ChunJun粉丝福利
为了庆祝ChunJun公众号的开通,我们准备了一些小礼物回馈给一直支持我们的社区同学们。
参与方式:
关注公众号“ChunJun”,回复“抽奖”,点击抽奖链接,答对问题的同学即可参与活动。
开奖时间:
2022年8月19日12:00
活动奖品:
小米牙刷*10
注意事项:
1.每位用户(同一地址或手机号)只能参与一次; 2.奖品将于3个工作日内发出,请耐心等待,注意查收,因快递邮寄原因,本次活动仅限中国大陆用户参与; 3.活动解释权归“ChunJun”所有。
袋鼠云开源框架钉钉技术交流群(30537511),欢迎对大数据开源项目有兴趣的同学加入交流最新技术信息,开源项目库地址:https://github.com/DTStack