关于spring:袋鼠云批流一体分布式同步引擎ChunJun原FlinkX的前世今生

8次阅读

共计 3009 个字符,预计需要花费 8 分钟才能阅读完成。


一、前言

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

开源我的项目地址:

https://github.com/DTStack/ch…

https://gitee.com/dtstack_dev…

开源技术交换群:

钉钉群:30537511

二、从 FlinkX 到 ChunJun

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

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

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

从开源的第一天,数栈技术团队从未停下技术摸索和社区回馈的脚步,在 4 年多的工夫里先后开源了 flinkx、flinkStreamSQL、jlogstash、easyagent、doraemon、molecule、Taier,袋鼠云数栈开源家族愈发壮大,开源我的项目系列失去了宽泛的倒退,相继在各类企业中落地利用。

往年,数栈技术团队决定对开源我的项目进行整体降级,并推出自主开源打算——DTstackCon,其中大数据开源我的项目系列以“十大名剑”作为概念起源,承载着数栈技术团队对它们能如利剑,为社区数字化过程的倒退之路乘风破浪的向往。

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

ChunJun 命名取自于中国现代十大名剑之一的纯钧

(ChunJun logo)

纯钧是春秋战国期间铸剑名师欧冶子为越王勾践所铸,其剑身取材宝贵,尖锐无比,剑刃就象壁立千丈的断崖高尚而巍峨,剑身更是历经千年而不蚀,代表稳固而弱小动摇的意志,正如 ChunJun 作为袋鼠云数栈的外围计算引擎,承载着实时平台、离线平台、数据资产等多个利用的底层数据同步及计算,其弱小的性能保障着客户业务数据的一致性。

ChunJun 的 logo 主体的字母 C 是由许多平行四边形组成的,这个组合有递进、有组合,正是 ChunJun 的稳固、聚合体、分布式、集成的开发理念的具象体现。

同时也传播出 ChunJun 外围观点:提供一个易用、稳固、高效的数据同步和集成工具。

底层采纳六边形蜂巢构造,因为六边形的蜂巢是“最省劳动力、也最省资料的抉择”。多个六边形排列在一起之间没有空隙,这种排列也被称为是最稳固的排列形式。稳固,素来是咱们开发的第一思考。

三、什么是 ChunJun

ChunJun 是一个基于 Flink 提供易用、稳固、高效的批流对立的数据集成工具,既能够采集动态的数据,比方 MySQL,HDFS 等,也能够采集实时变动的数据,比方 binlog,Kafka 等。同时 ChunJun 也是一个反对原生 FlinkSql 所有语法和个性的计算框架。目前 ChunJun 在理论利用过程中已服务了上百家客户,通过屡次迭代与积淀,积攒了大量的客户案例。

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

四、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 技术沙龙会
正文完
 0