不提升性能也拿獎?Dynamic Copysets 降低數據丟失概率 | TiDB Hackathon 2020 優秀項目分享

近日,由 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 年我們一起合作了很多項目,謝謝你幫助我成長了很多,希望今後還能繼續合作。

——高松

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章