3

不提升性能也拿奖?Dynamic Copysets 降低数据丢失概率 | TiDB Hackathon 2020 优秀项...

 3 years ago
source link: https://zhuanlan.zhihu.com/p/352914296
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

不提升性能也拿奖?Dynamic Copysets 降低数据丢失概率 | TiDB Hackathon 2020 优秀项目分享

开源分布式数据库 TiDB

近日,由 TiDB 社区主办,专属于全球开发者与技术爱好者的顶级挑战赛事——TiDB Hackathon 2020 比赛圆满落幕。今年是 TiDB Hackathon 第四次举办,参赛队伍规模创历届之最,共有 45 支来自全球各地的队伍报名,首次实现全球联动。经过 2 天时间的极限挑战, 大赛涌现出不少令人激动的项目。为了让更多小伙伴了解这些参赛团队背后的故事, 我们开启了 TiDB Hackathon 2020 优秀项目分享系列,本篇文章将介绍 CNCF 特别奖森海飞霞团队赛前幕后的精彩故事。

v2-1bd7fcd14d067dcae9b2a0de9a2ce404_720w.jpg

想象一下你有一个 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 年我们一起合作了很多项目,谢谢你帮助我成长了很多,希望今后还能继续合作。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK