数据湖是大数据畛域近年来十分炽热的技术,传统数仓无奈实现增量数据的实时更新,也无奈反对灵便的元数据格式,数据湖技术便在这一背景下诞生了。数据库的增量变更是数据湖中增量数据的次要起源,但目前 TiDB 的入湖门路还比拟割裂,全量变更用 Dumpling 组件,增量变更用 TiCDC 组件。两者处于割裂的链路,TiDB 也无奈通过实时物化视图实现数据入湖的实时荡涤和加工。
在 TiDB Hackathon 2021 赛事中,TiLaker 团队的我的项目解决了 TiDB 数据入湖的问题。通过 TiLaker 能够帮忙用户简化 TiDB 数据到数据湖的流程,充沛消化应用 TiDB 上存储的数据。TiLaker 团队也凭借这一我的项目一举斩获了“二等奖”、“华创资本特地资助最佳市场潜力奖”、“最佳人气奖”三项大奖。
“去年 Hackathon 其实有不少跟 Flink 整合的我的项目,往年决赛就看到一个,我还是有点小悲观的。但往年 TiLaker 做的还是挺齐备的,有 Flink committer 的参加,给 Flink 实现了一个 CDC Connector,这样能让 Flink 间接读取 TiDB 的增量数据,同步到上游。借助 Flink 的能力,让 TiDB 更好地与上游生态进行买通,前面也心愿有更多的利用案例能进去。”
——评委唐刘
在过来的一年中,TiDB 非常重视生态建设,在生态中最重要的就是 TiDB 作为一个分布式数据库和大数据生态之间的交融互操作。TiLaker 通过 Flink CDC 建设了一个疾速、高效、简化的通道,解决了高效入湖的问题,将两个生态进行了更好地交融。本篇文章就将通过对 TiLaker 团队与华创资本合伙人谢佳的对话,揭秘 TiLaker 赛前幕后的精彩故事,也心愿给开发者和用户们如何将数据入湖带来一些启发。
TiLaker 团队的由来:缘起社区
TiLaker 团队成员由四位来自 TiDB 社区和 Flink 社区的资深贡献者和开源软件爱好者组成,上面先来意识下他们:
吴雪莲:TiDB 同学可能对我比拟熟,我始终在 TiDB 做内核,也是 TiDB Committer & TiKV Committer。有个喜好就是喜爱去撩 Flink 的同学,我爱人就在 Flink 团队做数据湖,这次也因为这个渊源与 Flink 的小伙伴走到了一起。
徐榜江(雪尽):我之前在阿里网络团队始终做实时监控零碎,起初感觉实时计算是一个很好的方向,就跑来 Flink 社区,大略做了两三年工夫。前两年专一在 Flink SQL 上,前面缓缓在数据集成方向发现了一些很大的空间。很多时候 Flink 被人们拿来当成一个数据管道,但数据管道是十分薄的一层,不像数据库、数据湖有着数据的强依赖性。所以咱们就有了 Flink CDC 这个我的项目,它相当于给 Flink 这个管道减少了一个集成能力,能够反对更多的数据源、更多的上下游。我最近这大半年都在做 Flink CDC,当初也是 Flink CDC Maintainer & Apache Flink Committer。
蒋晓峰(子懿):我叫蒋晓峰,阿里的花名叫子懿,和雪尽都来自 Flink 团队。我是 Apache ShardingSphere & Apache RocketMQ Commttier,当初次要负责 Apache Flink AI 相干的工作。算上本次较量一共加入了三届 TiDB Hackathon。
蒋泳波:我目前是在 TiDB 调度团队做研发,和雪莲是同一个组的共事。我其实是最近才退出 TiDB 的,之前在阿里网络部门做数据开发,和雪尽老师都在一个网络大团队。不过我退出阿里的时候,雪尽如同曾经来到了过后的团队,我保护的一些 SQL 就是雪尽留下来的。
从集体介绍不难看出,TiLaker 的四位成员之间其实十分有渊源,TiLaker 的故事也缘起于此:
工夫回到 Hackathon 开启报名时——
有一天吴雪莲回家,她爱人对她说:我有个共事想找你组队。
蒋泳波:这个人就是我,过后我在参赛群里看见了雪尽,尽管以前和他并没有间接交换过,但还是去私聊了下,问要不要一起组队玩?之后雪尽又分割了子懿,我又分割了雪莲。
就这样,TiLaker 团队正式组成了。
两个社区的交叉学科
较量中,TiLaker 团队给投资人评委华创资本合伙人谢佳留下了粗浅的印象,他始终对这类 Infra 的我的项目十分感兴趣。
谢佳:在这次整个参赛的选手和我的项目中,TiLaker 的我的项目是十分具备代表性的。两个十分受开发者青睐的顶级社区之间,互相放大彼此的生态,进行互联互通。数据入湖来自于产业界十分宽泛、理论的需要,对于 Flink 的同学来说,可能这个事件他们或早或迟都会去做,本次 Hackathon 流动恰好减速了 Flink 和 TiDB 社区的迭代。从团队方面来说,大家都是开源社区中的各种好手,都能独当一面。这几方面合在一起,就是十分能吸引我的点。
雪尽:两个社区的人做一个集成类的我的项目,相当于一个交叉学科,咱们的团队领有 Flink 与 TiDB 两个社区的同学,对于做这样的集成类我的项目或生态类我的项目是很有帮忙的。比方,有一些 TiDB 技术的细节,我能够很快地问一下雪莲老师、泳波老师,他们能够疾速地给我答案,我就不必去 GitHub 下来看代码和文档了。
我和子懿对 TP 类型的数据库其实是没有多少教训的,我对 MySQL、PG、Oracle 有肯定理解,但对 TiKV 底层的更新机制、集群其实不是很理解,这些都是通过这次 Hackathon 理解的。所以刚开始咱们对 TiDB 的一些逻辑不是很分明,刷了两次夜才解决。起初在雪莲和泳波进来后,有一些代码看不懂的时候,咱们就会在群里间接交换,节俭了很多工夫和精力。
我的项目的灵感起源
吴雪莲:我的项目的名字是才华横溢的子懿老师起的,包含咱们的战队宣言,还有问难 PPT,以及团队介绍视频都是他想的。我的项目的实现机制次要由雪尽老师提出,他平时就始终在做 Flink CDC 的工作,上游接了很多数据库,有很多 TiDB 用户就找过去问能不能反对一下 TiDB。恰好这时,咱们看到 TiDB Hackathon 2021 开启报名,于是就决定带着这个我的项目参赛了。
雪尽:Flink CDC 在数据源方面,其实支流的 DB 都反对了,即便没有反对,社区的 PR 也都开进去了,只是我这边没有精力来得及给大家 review。像 MySQL、Oracle、PG、MongoDB、TiDB 的 PR 都在整顿中,阿里的 PolarDB 和 OceanBase 的同学看到咱们来 TiDB Hackathon 较量也过去开了 PR,最近也在催着 review。
其实 Flink 这个管道有着很强的集成能力,它能够连贯到很多上游。当数据到了肯定规模时,数据库的存储始终要比便宜的数据湖存储更贵。很多历史数据并不需要那么贵的存储,也不须要去剖析。让它间接往数据湖里导入,做历史存储就够了。而且数据湖也有更新的能力,Flink 联合数据湖甚至可能做到分钟级的更新。数据库接 Flink 再接数据湖,就是看中了数据湖既便宜又能够更新这两大外围劣势。
这次 Hackathon 上实现了哪些内容?
TiLaker 基于 TiCDC 组件开发了面向 TiDB 的 Flink CDC Connector,TiDB CDC Connector 提供全量读取历史数据和实时读取增量数据的能力,在全量和增量数据切换时,保障一条不丢,一条不多的 eactly-once 语义;同时,TiLaker 提供了 SQL API,用户只须要几行 Flink SQL 就能捕捉 TiDB 中全量的历史数据和增量数据。得益于 Flink SQL 的 c hangelog 机制,Flink SQL 能够和数据库的变更数据无缝连接,通过 Flink SQL 定义的 tidb-cdc 表就是 TiDB 中对应表的实时物化视图,每次数据库中的变更都会让 tidb-cdc 表自动更新;
Flink CDC 我的项目还提供了 MySQL、MariaDB、Postgres、Oracle、Mongo 等数据库的反对,这意味着在反对 TiDB 后,用户能够实现异构数据源的交融,比方局部表在 MySQL 中,局部表在 TiDB 中,能够做实时的 Join、Union 等 Streaming 加工;此外,作为一个优良的计算引擎,Flink 能够提供弱小的计算能力和优良的 pipeline 能力,反对业界多种数据湖产品(Hudi,Iceberg),并且提供 SQL API 反对。这让 TiDB 的用户只须要应用 SQL 就能够不便地将数据实时写入数据湖,轻松实现数据湖的构建。
正如评委唐刘评估所言,TiLaker 团队在 Hackathon 中实现的我的项目曾经十分齐备,对于较量他们曾经实现了一大半,接下来摆在大家背后的难题,就是如何在较量中让评委对我的项目的亮点更有体感?
吴雪莲:主代码和 Flink CDC 次要是雪尽老师和子懿老师在弄,我跟泳波是打酱油的,次要精力放在做 demo 上。过后始终在想怎么能力突出这个我的项目的亮点呢?咱们过后就想到了网约车实时智能调度零碎。它基本上模仿了网约车是怎么调度的。实时的数据写 TP 的时候都会写到 TiDB,然而像一些举荐的数据,比方说一个乘客要打车,最简略可能就是举荐一下他左近的车辆。在这个大数据的状况下,TiDB 可能就不太够用。咱们借助 Flink CDC 将数据导入到 Flink 来计算,实现实时举荐业务。另外在数据入湖后,还做了一个报表,就是那个车跑来跑去的报表,这些数据都是咱们从湖外面拿过去的,相当于一个离线的剖析。
蒋泳波:过后想做这个 demo 次要就是感觉网约车是一个比拟典型的互联网架构,它会有一些订单交易的外围零碎,这个零碎须要数据,这肯定是要跑在 TP 数据库下面的。而后它也会有一些实时计算的要求,然而个别 TP 零碎是很难去做流式计算的,同时对经营同学来说也会有一些实时大屏的需要,须要不便他们去做一些业务剖析。
对 TiLaker 将来有何期待?
雪尽:从我的教训来看,一个我的项目真的要上生产的话,还有蛮多事件要做的。特地是在测试方面要花很大的精力,以我最近对各个数据库的理解,不同版本之间各种兼容性的坑其实是特地多的,如果要为银行这样的客户提供服务,还有蛮多的路要走。
蒋晓峰:在实时机器学习场景里,咱们这一套 TiLaker 计划对用户来说是十分敌对的。当初机器学习更加实时化了,它会带来很多实时特色的存储。当初大部分公司的实时特色存储都用的是 KV,比方 Redis,它就要把每个工夫点的特色都存下来。但如果用了 TiDB + TiLaker 这一套解决方案,客户就能够缩小特色存储老本。我平时次要是负责实时风控和实时举荐解决方案的,也会对接很多客户,如喜马拉雅,他们都会有这方面需要,而且需要很大。这个我的项目如果能够落地,是能够作为一个商业化解决方案的。
评委谢佳从投资人的角度也给出了本人的认识:“坦白讲,其实这类产品在商业化方面会有一些挑战。这类产品会比拟偏差于解决两头某个环节的问题,凡是做中间层都会面临一个商业上的悖论和挑战——你解决的的确是大家广泛遇到的问题,但还不是一个残缺的商业问题。它会带来肯定水平上的效率晋升,然而对于商业的价值晋升不是很间接。如果你能从中间环节往整个业务角度看的话,它的价值链上下游就可能延展得更多。客户拿到这个产品,就是一个残缺产品,他用这个残缺产品能够解决更多的问题。从商业化的角度来说,就更容易发明更多的客户价值。另外,很多企业都会有一些特定需要、非标化的场景,你很难用一个产品来满足全副需要。但将来如果大家都上云了,更加标准化了,就会排除很多商业化的阻碍。”
加入 TiDB Hackathon 的播种与期待
吴雪莲:我之前当过导师,也当过围观家属,但往年的确是真正意义上第一次加入 TiDB Hackathon。我其实始终挺想对 Flink 与 TiDB 生态接触的货色理解一下,就趁这个机会去了。通过 TiLaker 这个我的项目,我对 Flink 以及 Flink 上游的一些生态更加理解了,这对我在 TiDB 的工作有很大帮忙。另外,通过加入 Hackathon,我在杭州现场和很多搞开源的同学都交换了一下,还是挺开心的。
雪尽:我也是第一次加入 TiDB Hackathon。尽管 Flink 社区之前也有举办过,但其实跟 TiDB 晚期举办的 Hackathon 应该差不多,就是两天的极限编程。这次组委会给咱们留了比拟充分的工夫,也是咱们最终能把这个我的项目的完成度做得比拟好的一个起因。
本届 Hackathon 真的就是高手如云,我感觉很多参赛选手的 idea 和实际效果都十分厉害。咱们原本都没期待可能拿二等奖,感觉最多就是三等奖。我记得有一个做性能加强的团队,他们的 Benchmark 测进去最低晋升 18%,最高 40%,那种我的项目确实很有技术含量。另外,在杭州这边还有一个最佳创意奖,和游戏做联合的,给我的印象也很粗浅。加入 TiDB Hackathon,可能意识社区的各个同学,我感觉这个播种更大。
蒋晓峰:我曾经想好了下一界 Hackathon 较量的 idea。Flink Forward Asia 2021 提出了 Streamhouse 概念,其中引入了 Dynamic Table Storage。我想用 TiFlash 作为 Dynamic Table Storage 底层的实现,这样能够更增强 Flink 生态和 TiDB 生态之间的整合。这不仅仅是在数据集成方面做对接单干,也能够在其余模块下面做一些翻新。对于 Hackathon 我期待之后的 Hackathon 能在线 PK 写代码。这次能够看到很多参赛我的项目的工作量不仅仅只有两天能做完,其实从 Hackathon 较量的意义来说就不那么符合要求。
谢佳:我是第二次加入 TiDB Hackathon 了。第一次加入的时候大家总会说 PingCAP 是一家 Hackathon 驱动的公司,我过后没有特地强烈的感触,但这次我感觉这种感触还蛮强的。在国内做根底软件的企业中,PingCAP 应该是第一家拥抱开源,同时把商业化也做得不错的。很多人平时可能偶尔会产生一些 idea,但因为工作例行安顿平时做不了,通过 Hackathon 就能把这些 idea 释放出来,变成另外一种 driven。