摘要:如今,AliSQL已經與阿里雲其他數據庫的研發整合,同時,堅持開源也是阿里雲的既定戰略,無論是在MySQL社區還在AliSQL分支上阿里雲都會持續投入。在不久前舉辦的Percona Live開源數據庫大會上,MySQL社區委員會宣佈將2019年的“MySQL社區個人貢獻獎”頒給來自中國的阿里雲智能數據庫產品事業部高級技術專家翟衛祥(花名:印風)。

過去很長一段時間,業界對中國企業在開源軟件領的印象是下載多而貢獻少,但是以阿里爲代表的中國互聯網企業正在改變這一格局。最近幾年,中國湧現了大批開源技術人員,他們在開源社區非常活躍,尤其是在雲和數據庫等新興技術領域,國內企業的話語權和影響力不斷得到提升,在代碼貢獻量和代碼質量上都有了質的飛躍。中國的軟件開發人員和中國企業在開源社區開始屢獲獎項就是一個有力的例證。在不久前舉辦的Percona Live開源數據庫大會上,MySQL社區委員會宣佈將2019年的“MySQL社區個人貢獻獎”頒給來自中國的阿里雲智能數據庫產品事業部高級技術專家翟衛祥(花名:印風)。Percona Live是由知名的數據庫服務提供商Percona公司主辦的開源數據庫大會,也是MySQL領域規模最大的會議,與會者會一起分享如何使用或者修改MySQL——這一世界上最受歡迎的開源數據庫來適配自己的業務。

在開源的道路上,阿里AliSQL篤定前行

阿里雲智能數據庫產品事業部高級技術專家翟衛祥(右一)及其獎盃

獲獎者印風從2012年起就開始活躍在MySQL社區,到今年獲獎,他累計已經提交了100多個Bug report和優化建議報告,很多還帶有補丁代碼。除了參與MySQL社區工作,印風還在雲棲社區大概有200多篇關於MySQL功能及內核的文章,在MySQL領域算是名人。MySQL社區委員會給出的獲獎理由是其對MySQL社區做出了長期貢獻,可以說是名副其實。

該獎也是繼阿里雲2018年獲得“MySQL社區公司貢獻獎”之後再次得到MySQL社區的認可。多年來阿里雲持續不斷地爲MySQL社區貢獻思想、修補各種Bug,不斷地幫助官方和社區改進和豐富MySQL,截至目前,阿里已經爲MySQL貢獻了300多份Bug Report。特別是,2016年阿里雲將改進優化後的MySQL分支——AliSQL和配套工具對外開源,同時還與MariaDB合作,極大地豐富了MySQL開源生態。可以說,今天的阿里雲已經成爲MySQL生態裏的一支非常重要的技術力量。

逼出來的AliSQL

在阿里巴巴的成長過程中,有一段歷史不得不提,這就是用分佈式架構替代傳統集中式架構。這是一段波瀾壯闊的歷史,阿里走得相當堅決,在這個過程中AliSQL的成功起到了關鍵性的作用。

當時IBM的小型機、Oracle的數據庫、EMC的存儲是企業IT系統的標配,它們代表了穩定、可靠,但是價格昂貴。

那些年,隨着阿里巴巴業務(當時主要有B2B網站、淘寶、支付寶)的快速擴張,每年新採購設備費用和舊系統的維護費越來越大,更爲重要的是,這些設備和系統就像一個個黑盒子,一旦出現故障必須等待廠商的技術人員來解決。阿里在十年前就開始去用開放、性價比更高的通用設備來取代這些封閉、昂貴的專用設備。

而在這一過程中,最難替代的就是傳統數據庫,更換數據庫不僅意味着要面臨數據遷移時損壞和丟失的風險,還意味着上層軟件代碼重寫。2009年,阿里Oracle RAC集羣節點數達到了創記錄的20個,成爲亞洲第一,這樣的數據量換到哪個數據庫能抗得住?

事實上,當時市場上並沒有哪個數據庫能完全滿足阿里的要求,開源數據庫MySQL是阿里最後不得已的選擇。MySQL是使用最廣泛的開源數據庫,還有重要的一點是可以拿到源代碼,這樣阿里可以按照自己的應用場景對代碼進行了修改、優化和完善。

這一過程雖然歷經坎坷和波折,但阿里最終基於MySQL數據庫研發出了AliSQL。到2011年7月,淘寶商品庫完成了從商用數據庫到AliSQL的大遷移, 2012年全淘寶最後一臺小型機宣佈下線,阿里的開放技術路線之路取得初步成功。2013年支付寶最後一臺小型機下線,這也是阿里巴巴全集團最後一臺小型機下線,阿里歷時三年多的技術路線變革之路終於告一段落。

走出阿里,AliSQL開源

當初,爲了實現MySQL替代商用數據庫的目標,阿里的數據庫技術人員不得不埋頭一行行認真研究MySQL的源代碼,爲了滿足業務需求他們不得不重寫、修改以及新增了不少功能,特別是針對電商應用場景的部分,這使得它們對MySQL有着更爲深入的瞭解。工作期間,阿里的數據庫技術人員開始參與到開源社區的工作,提交一些Bug報告、修復代碼。進入2012年,從Oracle向AliSQL的遷移差不多完成。在這個遷移過程中,阿里數據庫技術人員們積累了非常寶貴的經驗,他們開始活躍在MySQL社區,把這些經驗分享到社區。

此次在Percona Live大會上獲得MySQL個人貢獻獎的印風就經歷了這個過程。2011年從武大碩士畢業走出校門的印風拿到了阿里淘寶的Offer,他要負責的正是AliSQL最核心的部分——InnoDB存儲引擎,這讓他有更多機會認真深入研究MySQL數據庫。

印風告訴筆者,和他很多同事一樣,他非常喜歡研究MySQL的新代碼,並願意在MySQL分享自己的經驗。“做技術的人都知道,獲得別人的認可遠比獲得金錢更不容易。”印風表示。

當時,阿里整個公司也大力倡導技術人員積極參與開源社區的工作,在公司內部技術人員也以在開源社區貢獻代碼爲榮。公司的鼓勵、工作內容相符、再加上技術人員個人興趣,阿里的數據庫技術人員爲MySQL社區提交了不少的新增功能和補丁,在MySQL社區影響力逐漸提升。到2016年,阿里決定把這些功能進行整理,提取了其中有價值的功能,把源代碼對外開放,包括AliSQL及其配套的備份等工具,並宣佈啓動MySQL新分支AliSQL數據庫開源項目。

這個開源的AliSQL基於官方MySQL版本但加入了阿里自己的補丁。除了一些內部接口和需要依賴阿里其他系統實現的部分外,它與阿里內部使用的AliSQL完全一樣。在2010~2016年期間,阿里的技術人員先後對AliSQL進行了100多項優化,包括Bug 修復、功能增強、性能突破和可運維性的增強等。這些修改都體現在開源AliSQL中,在Github上可以下載。今天,在Github上AliSQL項目已經擁有3400多個Star,由此可見對於阿里的AliSQL社區裏認可度非常高。

“AliSQL 的發展凝結了衆多技術人員的心血。我們希望將過去幾年沉澱的技術積累回饋到社區,讓更多的個人和企業共享我們在MySQL上的經驗。”印風說。

爲什麼需要一個MySQL的分支版本而不是直接用官方版本。印風說,這是因爲阿里的應用場景有很大的特殊性,阿里做的是電商服務,每年的“雙11”數據庫會面臨很大壓力,阿里必須加入一些功能和手段讓它更穩定。比如“秒殺”,不多的商品很多人搶購,給數據庫帶來非常大的壓力,還有像金融交易性場景需要更強的數據保護。另一方面,阿里對外提供雲服務,需要爲雲管理提供適配,包括爲了實例的高可用需要加入一些功能。還有,爲了配置文件更安全加入了透明的數據加密,以及對備份軟件的加密等,這些都針對雲環境進行專門設計的。

總體來說,與MySQL官方版本相比,AliSQL中增加更多監控指標,並針對電商秒殺、物聯網大數據壓縮、金融數據安全等場景提供個性化的解決方案。比如,由於針對電商秒殺場景AliSQL進行了專門優化,在通用基準測試場景下,AliSQL版本比MySQL官方版本有着 70% 的性能提升。在秒殺場景下,數據庫性能提升近100倍。

始於社區,回饋社區

阿里技術架構完成了巨大的升級,AliSQL功不可沒。當年的那場技術路線變革的成功,正是以AliSQL的成功爲前提的。此後阿里巴巴集團核心業務都徹底告別了商用數據庫,完全在AliSQL上運行。而在這個過程,爲了更好地滿足業務的需求,阿里技術人員一直在不斷進行優化AliSQL,豐富其功能。

如今,AliSQL已經與阿里雲其他數據庫的研發整合,同時,堅持開源也是阿里雲的既定戰略,無論是在MySQL社區還在AliSQL分支上阿里雲都會持續投入。印風透露,在MySQL社區裏,今年阿里雲將會進一步完善和豐富閃回(Flashback)的功能、推出雙同步(Double-Sync Replicaition)複製、以及基於Raft協議的MySQL複製功能等。

而在AliSQL上,將遵循穩定性、通用性優先的原則逐步合併補丁、新增功能。其中一個重要工作就是與MySQL 8.0保持同步,將AliSQL升級到8.0,包括備份工具也會同步升級。同時,AliSQL 8.0中還會加入更多面向雲的運維工具和RDS相關補丁,以及爲電商場景進行更多優化。據悉,目前阿里雲已經上線的RDS for MySQL 8.0使用的就是完全兼容 MySQL 8.0 的AliSQL 8.0 分支。

而在擁抱開源的過程中,阿里雲也從中收穫了豐富的回報。比如,AliSQL的開源對於阿里雲生態系統起到重要的支撐作用。其次,開源幫助阿里雲獲取了優質的免費代碼貢獻,完善其產品。第三,積極參與開源也大大加速了阿里雲數據庫產品技術的更新。在持續的8年的發展中,由AliSQL衍生和發展出來今天阿里雲一系列相關產品和服務,包括關係型數據庫PolarDB、NoSQL數據庫、分析數據庫及相關工具等,組成了完整的生態矩陣。

AliSQL從MySQL社區來,如今它又被返回到社區,這也是正是對開源精神“人人爲我,我爲人人”的一個最好解讀。實際上,阿里也一直是全球開源社區的積極參與者。比如,阿里是MySQL另一分支MariaDB的白金會員。爲了推廣開源,阿里還推出了數據庫內核月報,幫助數據庫技術人員分享最新的開源技術,每個月10篇文章,都是關於數據庫內核的最新信息(月報地址:http://mysql.taobao.org/monthly/)。另外,阿里雲也是Cloud Foundry基金會的黃金會員,在2017年阿里雲以白金會員身份加入了雲原生計算基金會(CNCF),還以黃金會員身份加入了Linux基金會。

我們可以看到,阿里雲積極參與和豐富MySQL等開源生態,同時,也從開源社區持續收穫了品牌認可度、市場影響力和潛在用戶。互惠互利、共贏纔是長久的合作之道。阿里雲與MySQL等開源社區的這種良好互動關係和成功的合作模式爲中國企業參與開源提供了很好的範例,值得參考和借鑑。

相關文章