近日,由 TiDB 社区主办,专属于寰球开发者与技术爱好者的顶级挑战赛事——TiDB Hackathon 2020 较量圆满闭幕。往年是 TiDB Hackathon 第四次举办,参赛队伍规模创历届之最,共有 45 支来自寰球各地的队伍报名,首次实现寰球联动。通过 2 天工夫的极限挑战,大赛涌现出不少令人激动的我的项目。为了让更多小伙伴理解这些参赛团队背地的故事,咱们开启了 TiDB Hackathon 2020 优良我的项目分享系列,本篇文章将介绍 CNCF 特别奖森海飞霞团队赛前幕后的精彩故事。
设想一下你有一个 10 台 的 TiKV 集群,有一天 3 块磁盘同时坏了,恰好有一组 Raft Group 就在这 3 块盘上,你不会放心丢数据,因为 10 台机器的集群,同时坏 3 块磁盘的概率太小了。
那么如果这是一个 5000 台的 TiKV 集群呢?
对于一个分布式存储系统,应用多正本机制能够保证数据的安全性。然而,通常状况下,随着集群规模的增长,绝大部分的数据正本数并不会随之增长。长此以往,就会呈现当集群规模成千盈百时,挂掉的机器节点数等于或者大于数据的正本数 (这个数字通常是 3) 的概率也会随之回升。
对于一个 3 正本的集群,当集群产生 3 个节点宕机时,对于不同的调度算法而言,产生失落数据的概率与影响范畴也是不同的。在本次 TiDB Hackathon 较量中,森海飞霞队伍通过 Dynamic Copysets 我的项目,升高了该状况下产生失落数据的概率,并一举夺得本届大赛 CNCF 特地奖项。咱们在赛后采访了森海飞霞团队队员与评委唐刘老师,邀请他们分享本人的 Hackathon 教训。
Q:为什么叫森海飞霞这个队伍名?
队长高松:森海飞霞是我十分喜爱的游戏 Dota 2 里新出的英雄,我玩的第一把就拿了 5 杀,于是决定这就是我的本命英雄。并且这次我是全程 coding,所以我要担当起老大哥的责任~
Q:你们最后为什么会想到要做这样一个我的项目?能分享下你们的灵感是什么吗?
队长高松 :我的项目起源于上海 Office 的一次争执,这次探讨产生在 2020 年 2 月,过后冯立元在群里提出了「假如一个集群机器有限多,Raft Group 有限多的状况下,我轻易挑 3 台 总能找到一个 Raft Group,所以命中 3 台就会丢数据」起初东旭不置信这个论断,直到冯立元甩出论文,看似反直觉的论断居然是通过论证的。这次答辩也为 Hackathon 埋下了种子。 目前最大的 TiKV 单体集群可能只有几百台,但咱们不能等到有上千台集群时才思考这个问题。Copysets 离真正生产环境 GA 的规范还须要十分久的调试和测试,必须在集群规模达到之前做好应答。因为 Dynamic Copysets 自身是一个调度问题,我的工作也与调度相干,因而在 Hackathon 音讯刚颁布时就我默默想好了选题,加上探讨中舌战群儒的冯立元,咱们两人一拍即合组成了队伍。
评委唐刘:Copysets 是我始终关注的畛域,几年前我就写过相干文章,但这个实现难度高并且很难模仿,所以能在 Hackathon 上看到动态的 Copysets,并通过 PD simulator 模仿进去真的很振奋。
Q:知乎上你们的帖子里写到是惟一一个让 TiDB 性能倒退的我的项目,能具体说说为什么吗?
队长高松:对一个调度零碎来说有一个相似 CAP 的老大难问题,无奈既在 partition(数据分布)很平均,又要整体负载合乎业务需要,同时又要解决数据的 localilty 能力问题,这三方面实质上是矛盾的,有点像 CAP 实践,无奈三者兼得,咱们这个我的项目重在 partition 平安优化,必然就会带来 load balancing 的损失,所以可能会让 TiDB 性能倒退。
评委唐刘:我不认为 Dynamic Copysets 会让 TiDB 性能倒退,我的项目欠缺之后对性能的影响能够忽略不计,并且对安全性会有很大晋升。如果真的让性能倒退了,那肯定是他们实现的比拟挫(官网吐槽最为致命)。
Q:在较量过程中你们遇到过比拟大的技术艰难是什么?后续保护的最大的挑战是?
队员冯立元:做调度须要机器资源,测试须要一个超级大的集群,并且较量工夫无限,比拟难在短时间内做出难看的后果。而修复速度是一个很重要的指标,灌数据没有方法提前准备好。
队长高松 :后续咱们会持续把我的项目实现,对 Copysets 自身的验证不是难题,但如何与现有调度零碎联合并保障调度的成果是一个难题。从现有的材料来看也很少有其余业内同行做过分享,咱们只能摸着石头过河。 目前调度组验证十台集群的成果齐全 ok,但之后的千台规模是否还无效,这种思考形式可能须要新的迭代,这也是一个新的挑战。
Q:你们认为 Dynamic Copysets 为什么很少有人做呢?
评委唐刘:这个问题我几年前就关注过,没想到当初业界仍旧没有什么停顿,我也挺吃惊的,我猜想是硬件品质逐步变高了。而且用户当初大规模前移到云,对这块可能没有这么强的需要。还有就是像 Hadoop 这种超大规模 AP 集群坏一点对集群影响不大,但像 TP 的话问题还是比拟大的。
Q:在参赛过程中有什么乏味的事儿能够分享吗?
队长高松:能够分享两件小事,RFC 公开的时候,我看到迪安的我的项目是做回表优化,这个问题我刚好和组员冯立元聊过,并且下定决心要在 2021 年来做,没想到在 Hackathon 被人姗姗来迟了。当我看到 RFC 的时候又诧异又开心,毕竟英雄所见略同:)后续我也会和迪安一起探讨我的项目的落地。
第二件是尽管没有拿到一等奖有些失落,不过 Dynamic copysets 在生产环境的落地不论是业界还是学术界都是空白的状态,很巧的是 Copysets 第一作者的学生也在知乎上分割到我,看看调度上有没有新的钻研方向。做完这个我的项目的话很有可能能够发一篇论文,算是无心插柳吧。
Q:除了本人的我的项目,最喜爱哪个我的项目?
队长高松:我最喜爱 Mods。我最认同的是 mods 对 DBaaS 收益是最大的,不须要客户筹备 GPU,咱们能够间接用云上的 GPU,唯快不破的收益太令人震撼了,当我看到 demo 的时候都看呆了,我之前素来没想过用 GPU 来优化 TiDB,这个我的项目让我有了新的视角。
队员冯立元:我也最喜爱 mods,第二喜爱是平头哥的跨流量调度我的项目,因为这个我的项目能在云上省很多钱~
最初,森海飞霞的队长高松想对队员冯立元表白一下感激~
“To 冯立元:
在 2020 年咱们一起单干了很多我的项目,谢谢你帮忙我成长了很多,心愿今后还能持续单干。
——高松