鬥魚首個開源項目來了。
2020年6月1日,鬥魚將基於Go語言的微服務框架Jupiter正式開源,這也奠定了鬥魚在國內GO語言開發領域的技術領先地位。
事實上,作為國內領先的遊戲直播平臺,鬥魚從2014年成立至今,始終致力於從技術上提升用戶的體驗,完成了平臺自研播放器的開發,優化了直播流的加載速度,針對高並發量、海量數據的處理進行了技術優化,徹底杜絕了當海量用戶瞬間湧入平臺時無法響應的情況。
據悉,Jupiter脫胎於鬥魚內部的Golang微服務框架,歷經多機房建設、雲化、容器化等多次基礎架構演進,基本涵蓋了內部框架的主要功能。
經過了三年打磨,超過30名鬥魚技術人員的不斷優化下,Jupiter已經完成了10個大版本和99個小版本的迭代。而在超過500個業務場景的實際驗證後,鬥魚最終決定將這套微服務框架正式開源。
引入新語言,根本上解決高並發難題
Go語言是由谷歌於2009年推出的一門相對比較新的程式語言,因其原生支持高並發的特性,被譽為雲原生時代的容器語言。
從直播角度上來講,若在某個時間點,直播平臺能夠承載大量的線上觀看人數而不影響播放品質,說明該平臺在出現高並發情況時,優化的比較到位。反之,如果平臺未能良好處理大量用戶同時湧入的問題,那就會導致伺服器宕機。
為了能夠給觀眾們帶來優質且穩定的觀看體驗,鬥魚在2016年開始嘗試使用GO語言重新編寫後臺代碼。
引入新技術的效果非常顯著。鬥魚技術專家askuy表示,以前,研發團隊時常會擔心超人氣主播入駐平臺會不會引起「炸魚」,但在使用了GO語言後,平臺已經完全可以承受千萬甚至過億級別的並發量。
不過,由於Go在國內的起步較晚,相關的生態和工具在國內都不完善,這是行業面臨的普遍問題。為了提高Go應用的開發效率,鬥魚研發團隊決定開發微服務框架Jupiter。
「我們希望把自己的經驗總結起來,形成一套有利的業務型框架。這樣一來,其他團隊或公司在建立框架的時候,就可以減少基於業務功能的開發,達到節省時間、提高效率的效果。」askuy解釋道。
2018年,經過多年內部打磨的Jupiter框架初步成型,鬥魚武漢技術團隊帶著這套框架在北京研發分部複製,維護成本低、效率高等優點很快讓Jupiter在公司內部得到普及,並且受到了廣泛好評。
建立行業標準
儘管Jupiter不是最完美的框架,但卻是鬥魚基於多年的實際業務經驗積累起來的。至少在公司內部而言,Jupiter已經成為最適合鬥魚的微服務架構,但鬥魚研發團隊的目標顯然不止於此。
2019年9月21日,鬥魚和GopherChina在武漢聯合舉辦了Gopher Meetup武漢站,吸引了湖北省內大量Go語言的研發人員進行了技術交流會。
會議上,鬥魚發現從業者在Go語言的使用上依舊存在大量痛點難以解決,而行業內也缺乏相關的成熟框架,於是決定面向所有大眾開源Jupiter,以此來解決行業普遍存在的微服務生態不完善、維護成本高等問題。
經過了近1年的優化調整,鬥魚最終在6月1日正式開源了微服務框架Jupiter,僅用1個半月就收穫了超過1800個關注度,並且連續多日霸佔了Github網站的golang熱門開源項目排行榜榜首。
很快,鬥魚在國內Go語言開發領域的技術影響力迅速升溫,Jupiter建立的框架規範也得到了許多老牌產品的認可,諸多Beego等老牌成熟框架都開始適配這套規範。
通過開源Jupiter,鬥魚技術團隊全面的梳理了基礎框架的架構設計,總結了服務治理的經驗。同時,開源社區的積極反饋也給鬥魚的團隊帶來了很多有價值的意見和建議。
「目前,Jupiter現在還處於用戶體驗產品的發展階段。我們希望藉助廣大研發人員的力量,不斷完善這套框架。」鬥魚方面表示,「但未來,我們希望這能夠成為一套成熟的行業規範標準。」