Hi,我是ChunJun,一个有趣好用的开源项目
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”所有。
Hi,我是ChunJun,一个有趣好用的开源项目的更多相关文章
- 打造一个高逼格的android开源项目——小白全攻略 (转)
转自:打造一个高逼格的android开源项目 小引子 在平时的开发过程中,我们经常会查阅很多的资料,最常参考的是 github 的开源项目.通常在项目的主页面能看到项目的简介和基本使用,并且时不时能看 ...
- 我的第一个 60 k+ Star Java开源项目
JavaGuide([Java学习+面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识):https://github.com/Snailclimb/JavaGuide. 人生总有各种各样的 ...
- 分享一个基于 netty 的 java 开源项目
1.简介 中微子代理(neutrino-proxy)是一个基于 netty 的.开源的 java 内网穿透项目.遵循 MIT 许可,因此您可以对它进行复制.修改.传播并用于任何个人或商业行为. 2.项 ...
- 制作一个有趣的涂鸦物联网小项目(涂鸦模组SDK开发 CBU BK7231N WiFi+蓝牙模组 HSV彩色控制)
实现的功能: l APP控制月球灯 l 本地月球灯控制 l APP控制"大白"颜色,实现各种颜色变身 l 门状态传感器状态APP显示 l 网络状态指示灯,连接服务器长亮, ...
- 我发起了一个 .Net 平台上的 开源项目 知识图谱 Babana Map 和 文本文件搜索引擎 Babana Search
起因 也是 前几天 有 网友 在 群 里发了 知识图谱 相关的文章, 还有 有 网友 问起 NLog -> LogStash -> Elastic Search 的 问题, ...
- 有趣的开源项目集结完毕,HelloGitHub 月刊第 63 期发布啦!
兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 分享 GitHub 上有趣.入门级的开源项目. 这里有实战项目.入门教程.黑科技.开源书籍.大厂开源项目等,涵盖多种编程语言 Pyt ...
- 一个toolkit或者一个开源项目如何学习它并使用它
一个toolkit或者一个开源项目如何学习它并使用它 一般一个流行的toolkit和开源项目,一般都会被广泛地被应用: 那么,我们如何学习它,如何应用它在自己的业务场景中呢? 答案就是:学习源码并借鉴 ...
- 【小贴士】关于transitionEnd/animate的一个有趣故事
前言 在很久之前,我们项目有一个动画功能,功能本身很简单,便是典型的右进左出,并且带动画功能 以当时来说,虽然很简单,但是受限于框架本身的难度,就直接使用了CSS3的方式完成了功能 当时主要使用tra ...
- 一个有趣的SQL Server 层级汇总数据问题
看SQL Server大V宋大侠的博客文章,发现了一个有趣的sql server层级汇总数据问题. 具体的问题如下: parent_id emp_id emp_nam ...
- 一个有趣的模拟光照的shader
一个有趣的模拟光照的shader(类似法线贴图) http://www.cnblogs.com/flytrace/p/3395911.html ----- 可否用于需UI中需要加灯的模型.
随机推荐
- nginx同时使用(http)80和(https)443端口详解
server { listen 443 ssl; #监听https 443时需加ssl server_name ; #你的域名 ssl on; ssl_certificate ; #证书路径 ssl_ ...
- Win7共享账号切换程序
服务器共享目录需要多账号登录时,需要重启电脑才可切换不同账号登 为了不重启电脑就可立即切换不同账号登,特意写了此款软件, 下载: 链接:https://pan.baidu.com/s/1g_4SCXl ...
- MySQL 事务隔离级别:社交恐惧症的四个阶段
MySQL 事务隔离级别:社交恐惧症的四个阶段 在数据库的世界里,数据们也有社交问题!事务隔离级别就是控制它们互相看到对方的程度... 什么是事务隔离? 想象一下,数据库是一个繁忙的餐厅,每个事务都是 ...
- 【JVM之内存与垃圾回收篇】垃圾回收概述
垃圾回收概述 概念 这次我们主要关注的是黄色部分,内存的分配与回收 垃圾收集 垃圾收集,不是 Java 语言的伴生产物.早在 1960 年,第一门开始使用内存动态分配和垃圾收集技术的 Lisp 语言诞 ...
- 什么是 Gork ?
Grok 是埃隆·马斯克旗下的人工智能公司 xAI 的开发的一系列大型语言模型 (LLMs)产品,包括Grok 1.Grok 2和即将发布的Grok 3. 受<银河系漫游指南>的启发,Gr ...
- FreeRTOS消息队列传递数组
1.使用消息队列的发送和接收前,需要先创建消息队列 2.消息队列的深度和大小 深度 就是数组的元素个数 大小 就是整个数组占用的空间大小 消息队列的创建 static void AppObjC ...
- 《数组》--DAY2--快慢指针法
1.什么是双指针? 双指针,指的是在遍历对象的过程中,不是普通的使用单个指针进行访问,而是使用两个相同方向(快慢指针)或者相反方向(对撞指针)的指针进行扫描,从而达到相应的目的. 2.快慢指针 2.1 ...
- zk源码—6.Leader选举的实现原理
大纲 1.zk是如何实现数据一致性的 (1)数据一致性分析 (2)实现数据一致性的广播模式 (3)实现数据一致性的恢复模式 2.zk是如何进行Leader选举的 (1)服务器启动时的Leader选举 ...
- 题解:CF1433D Districts Connection
一道简单构造题,一次性 AC. 一种想法是将所有值一样的点全部连到同一个不同值的点上,这样就是所有同一种值的点都有同一个父亲,即可避免连在一起的问题,无解的情况就是只有一种值. 时间复杂度 O(n2) ...
- 【记录】Python3|Selenium 下载 PDF 不预览不弹窗(2024年)
版本: Chrome 124 Python 3.12 Selenium 4.19.0 版本与我有差异不要紧,只要别差异太大比如 Chrome 用 57 之前的版本了,就可以看本文. 如果你从前完全没使 ...