專訪|開源之夏最佳質量獎 Apache RocketMQ Committer 黃章衡
隨著開源之夏2022年度優秀學生名單出爐,其中Apache RocketMQ Committer 黃章衡同學獲得開源之夏最佳質量獎。今天,我們也帶來黃章衡同學的人物專訪。
https://summer-ospp.ac.cn/#/finaltermdata/outstandinglist
1 自我介紹
黃章衡:我來自福州大學 19 級計算機系,平常喜歡研究分散式系統和資料庫。我的興趣是參與開源專案,做開源貢獻,我活躍參與了多個開源專案,包括 Apache RocketMQ,SOFAJRaft 等等。
OSPP:你是從什麼階段開始參與開源的?可以跟我們分享一下最喜歡的開源專案嗎?
黃章衡:我是從大二下學期 (2021.5) 開始參與開源的,最喜歡的開源專案是 RocketMQ。
OSPP:你的專業是計算機相關專業,大學期間有豐富的實踐經驗,也獲獎頗多,有什麼珍貴的經驗可以跟大家分享嗎?
黃章衡:參加一些競賽可以幫助我們提高自己的團隊協作能力。此外,參加競賽最重要的是要找到合適的隊友, 團隊裡每個隊員都要各司其職。
OSPP:在專業學習的同時,你認為提高程式碼質量有什麼學習方法和技巧嗎?
黃章衡:我覺得提高程式碼質量的途徑有很多,一方面可以通過學習開源專案的核心原始碼來提高程式碼質量,另一方面就是通過實踐來提高,我們往開源社群提交程式碼的同時,會有很多前輩幫我們 review 程式碼,這是提高程式碼質量最快的途徑。
OSPP:近年來開源概念越來越熱,你認為參與開源對於計算機專業的大學生來說是必要的嗎?
黃章衡:顯然是非常必要的,這是一個內卷的時代,非常多的同學往 '後端' 這個方向卷,此時如果有比較多的開源貢獻,會讓個人的簡歷非常有競爭力。
2 我與開源之夏
OSPP:這已經不是你第一次參加開源之夏了,去年還獲得了的突出貢獻獎。當時選擇參加活動的原因是什麼?連續兩年的參與有什麼不一樣的收穫嗎?
黃章衡:當時選擇參與的原因是那時候剛好學習了 SOFAJRaft 的原始碼,又剛好有開源之夏的這個活動,又剛好對 '重構日誌儲存系統' 這個專案有比較明確的思路,這些'剛好'讓我選擇了參與開源之夏。如果說去年的開源活動是我的 '引路人',讓我踏上了開源這條路,今年就是我個人'蓬勃發展'的時間,我參與了許多開源社群,例如 RocketMQ,Tiflash 等等,可以說我徹底愛上了開源。
https://summer-ospp.ac.cn/2021/#/org/prodetail/210170433
OSPP:請介紹一下你在 RocketMQ 社群做的專案
黃章衡:在 RocketMQ 4.5.0 版本之後,RocketMQ 提出了 DLedger 模式(Raft 模式)的部署架構,在 DLedger 模式下,利用 Raft Commitlog 代替了原來的 Commitlog 了,使得 Commmitlog 具備了選舉的能力,當 Master Broker 故障後,通過內部協商,從其他的 Slave Broker 中選出新的 Master,完成主備切換,同時 Raft 的演算法也保證了 Commitlog 的一致性。但是由於 Raft 能力在複製鏈路上也導致這樣的部署架構存在一些缺點。
我們希望能將 DLedger(Raft)能力進行上移,將其作為一個選主元件 DLedger Controller,它是一個可選的、鬆耦合的元件,當部署 DLedger Controller 元件後,原本 Master-Slave 部署模式下 Broker 組就擁有 Failover 能力。DLedger Controller 可以選擇內嵌在 NameServer 中(Nameserver 本身能力仍然是無狀態的,若掛掉多數派只是無法提供選舉能力),也可以獨立部署。
https://summer-ospp.ac.cn/#/org/prodetail/228ad0052
OSPP:今年的開源之夏專案開發已過半,在專案進行中遇到的印象最深刻的困難是什麼?如何解決的?有什麼收穫嗎?
黃章衡:RocketMQ 社群的這個專案目前已經開發完畢了,並且合入了主分支,我也依靠這個專案成為了 Committer。我們一開始的時候設計了一份非常完善的專案方案書, 所以後續在開發的過程中並沒有花費很多時間。遇到最大的問題應該是在最後的測試階段,在網路分割槽的場景下遇到了比較多的 Bug,但還是一一解決了。
OSPP:通過參加開源之夏,你對開源和開源社群有新的認識嗎?
黃章衡:大力發展開源社群是一個非常有意義的事情:
個人方面: 這讓我們這些 '平凡' 的學生有機會接觸企業級的專案,有機會能夠和眾多優秀的前輩交流溝通,有機會提高簡歷的競爭力,有機會提高個人的技術。
企業方面: 開源社群其實是提高一個專案影響力和知名度最快的途徑,例如阿里雲開源的 RocketMQ,PolarDB,PingCAP 開源的 TiDB 等等,現如今都是 '家喻戶曉'。此外,開源社群還能可以吸引眾多優秀的開發者一同參與專案的研發和改進。
3 我與Apache RocketMQ社群
OSPP:簡單介紹一下目前所在的Apache RocketMQ社群
黃章衡:引用官方的原話:
Apache RocketMQ is a distributed messaging and streaming platform with low latency,high performance and reliability,trillion-level capacity and flexible scalability.
OSPP:是什麼原因讓你選擇投身開源社群?你目前的專注的技術領域是什麼?後續規劃是什麼?
黃章衡:為了提高個人的技術能力。我目前專注的領域是訊息佇列,後續會想往訊息佇列和資料庫方向發展。
OSPP:你認為在開源社群和企業公司進行開發工作有什麼不一樣的地方?
黃章衡:在開源社群做開發是 '細水流長' 的,不會有 ddl,不會有 push,我們可以在個人的空餘時間進行研發。此外,做開源貢獻是一個非常有成就感的事情,因為我們做的專案整個社群的人都看得見~
4 收穫與寄語
OSPP:你認為參與開源之夏、社群貢獻對於在校生的學習專業提升和就業選擇有哪些幫助?
黃章衡:幫助是非常大的,我個人覺得,簡歷上有一段好的開源經歷抵得上一段大廠的實習經歷。現在基本每個大廠都有基礎架構部門,我在求職的過程中也發現,這些基礎架構部門非常喜歡招有開源經歷的學生。就我個人而言,學歷背景沒有很出眾,但是也能憑藉著開源經歷拿到一些大廠的 offer。此外,開源社群是一個認識優秀的前輩,擴充套件自己人脈的最佳機會。在這個過程中,會遇到很多賞識自己的前輩的。
OSPP:之後會繼續參與開源嗎?計劃如何更深入地參與開源?
黃章衡:我會繼續參與開源社群的。今年在 RocketMQ 社群學到了很多,特別是如何深入的參與社群。參與社群並不只是提交一些程式碼就可以了,更重要的是花時間去 Review 其他同學提交的程式碼,這可以幫助我學習掌握 RocketMQ 中的不同模組,其他社群也同理。
OSPP:你想對 RocketMQ 社群的前輩說些什麼呢?
黃章衡:首先是非常感謝社群前輩 給了我這次機會,讓我有機會能參與 RocketMQ 這個知名專案的研發,同時也非常感謝帶我做專案的金融通前輩(我的 mentor),在他的帶領下,我只用了很短的時間就研發完了這個專案。此外,感謝所有幫我 review 程式碼的前輩。最後,希望在我們共同建設下,RocketMQ 社群的技術競爭力和影響力能夠更上一層樓!
OSPP:為參與開源之夏的學弟學妹提供一些經驗與建議吧
黃章衡:我覺得最重要的是敢於邁出第一步吧,身邊有一些同學確實有參與開源的想法, 但是總會因為懷疑自己的能力導致最後不敢參與。我覺得,只要敢邁出第一步, 並且堅持不懈,在社群前輩的帶領下,完成一個專案並不是什麼難事的。