褚霸:不要為了開源而開源

jopen 11年前發布 | 7K 次閱讀 開源

  RDS(Relational Database Service)是一種即開即用、穩定可靠、可彈性伸縮的在線數據庫服務,具有多重安全防護措施和完善的性能監控體系,并提供專業的數據庫備份、恢復及優 化方案,使用戶能專注于應用開發和業務發展。褚霸在 OSC 源創會年終盛典上分享了阿里巴巴如何使用開源軟件構建 RDS 關系型數據庫服務的實踐經驗,會后,InfoQ 專門采訪了褚霸,與他共同探討了阿里云 RDS 背后的技術挑戰并聽他講述了他與開源的故事。

  InfoQ:在分布式系統中,如何保證數據的一致性是很多公司面臨的挑戰。阿里云 RDS 作為云數據庫解決方案,是如何保證數據的一致性的?

  褚霸:我們也是使用的 MySQL 的開源版本,所以在數據性一致性方面和其它公司遇到的問題實際上是一樣的。我們遇到的問題,別人也會遇到。遇到問題不可怕,可怕的是沒有那顆解決問題的心 和解決問題的能力。首先,我們有非常強大的開源團隊,他們對 MySQL 非常熟悉,有能力根據需要定制符合我們需求的數據庫,這可能是最重要的,阿里巴巴在開源和基礎設施方面投入大量的人力和財力,我認為這樣的投入效果還是非 常明顯的。

  其次,當我們的可見性和數據安全性有沖突的時候,我們一定會犧牲可見性去保證數據安全,這是我們的理念。我們必須有這個理念,去保障數據的安 全。在這個理念基礎上,我們會去做各種優化。從最基礎的開始,我們需要能夠檢測出主備不一致,所以我們做了一整套的檢測機制,比如通過主備打快照的方式保 證不影響用戶正常使用。該機制老保證能夠及時發現數據的不一致。接下來就需要解決不一致的問題,目前業界的解決方案也有很多,比如用主庫覆蓋掉備庫,或者 自動重搭備庫一遍。這些方案雖然都能解決問題,我們也有用過,但是都特別慢,我們需要在一致性和性能間做一個平衡。現在我們會單獨把不一致性的數據挑出 來,專門通過增量的方式去解決不一致的這些數據。

  InfoQ:阿里在開源技術的研究和貢獻是非常大的,能否分享一下阿里在數據庫這一塊,使用和參與到開源社區的情況?

  褚霸:我們的產品中大量使用到了開源軟件,比如我們的數據通道就是用 Erlang 系統做的,在 Erlang 使用過程中我們踩過很多坑,當然也都把解決方案回饋給了社區。我們用 Erlang 做過很多的的模塊,這些模塊都和底層業務監控有關,和業務無關,屬于基礎設施,今天我們把這些代碼開源,那社區就可以在我們的基礎上使用,我們踩過的坑, 不要讓其它人再踩了,未來我們也將會開源更多的基礎模塊來回饋社區。

  除了代碼之外,我們更多的會向社區分享我們的開源軟件使用經驗,因為在現在的開源世界里,大部分的代碼貢獻者都是草根,他們的代碼質量不一定符 合工業標準。有些代碼在普通環境跑跑沒有問題,但是在商業環境或者有嚴格性能要求的場景下,它不一定能用。所以我經常和團隊的同學們講,在使用開源軟件 前,一定要把它研究明白,把它當成一個白盒子使用。如果是黑盒子我們絕對不會用,一定要把軟件研究明白,就像這個軟件的代碼是你寫的,想改哪里就該改哪 里,只有做到這一點,才能在產品中使用。因為一旦用到產品里面,實際上是沒有回頭路的,你必須往前走,你不能回撤。所以,我們的同學都鍛煉出來了。我們有 經驗后,肯定需要把相關的經驗、踩過的坑分享給同行者,分享給社區。比如我們每個月都會發布 MySQL 內核月報,報告最新的數據庫趨勢和我們線上的 BUG 如何被發現和修正的。

  InfoQ:您剛才也提到了 Erlang,阿里云在這門語言的使用上應該有豐富的經驗,您能解釋下為什么阿里云會選擇這門語言嗎?

  褚霸: Erlang 是愛立信開源的一門語言動態類型編程語言,最早是設計用來做交換機的。交換機有幾個特點,第一個是軟實時系統,打電話肯定不能有延遲。第二個是兼容性。在 做交換機的時候并不知道要接哪個設備,更不知道設備對應的操作系統,所以在設計之初它就有一個好的兼容特性。第三個是穩定,從一開始 Erlang 就使用完全不同于其它語言的設計理念,在語言中又集成了一個完整的操作系統,它有自己的進程,所有的進程和我們現在講的操作系統的進程一模一樣,只不過 Erlang 的粒度更小。

  Erlang 的操作系統內部有自己的調度系統,它的調度系統比操作系統的還復雜。比如說有大量的內存管理,并且都非常精細。Erlang 非常重要的一個特性就是可以做到調度公平、資源隔離,這個非常符合云計算的特點。因為云計算就是這樣的,大家的資源一起分,這個理念和 Erlang 是一致的,所以用 Erlang 去做這件事就會非常的自然。還有就是 Erlang 支持熱升級,它可以做到在線熱升級。發現問題的時候,通過一個熱升級包,就可以把最新的代碼部署上去,整個進程不需要停止,用戶不受影響,我們非常看中的 Erlang 的這個能力。

  InfoQ:最近亞馬遜推出了全新的數據庫引擎 Aurora,號稱比 MySQL 快 5 倍,您怎么看這件事?

  褚霸:軟件是繞不開硬件的,MySQL 出現的那個年代硬件條件比較差,當時服務器的內存和硬盤容量都比較小,而現在我們線上的服務器內存都比那個時候的硬盤容量還大好多倍,Aurora 就是在這樣的背景下推出的。

  現在 SSD 很廉價,整個圈子對數據的安全性以及數據庫的性能要求也更高了,Aurora 的設計理念其實和 MySQL 的設計理念是不一樣的,它是基于現有的技術而設計的,時代在變,未來肯定也是這樣的一個趨勢(實際上剛剛發布不久的 MySQL 5.7.5 相比于 5.6 也有了大幅提升),所以我覺得這并不驚訝,阿里云也在向這方面努力,我們也在往前走,但是最重要的還是踏踏實實靜下心來做。

  InfoQ:您怎么看國內的開源趨勢?您對開源社區有什么樣的建議?

  褚霸:我很早就開始玩開源,也是看到最近幾年開源在國內的飛速發展。1999 年的時候,在整個社區中,只有你會寫一個 TCP 服務器,再開源出來,那就很牛了。如何再能做下優化,能夠處理超過 1024 個連接,那就更牛了,這是那時候的水平,那個年代學的基本都是國外的科研技術。而今天,我們能夠處理的連接數可能已經翻了 100 倍。我是在中國社區長大的,一路走來也看到國內社區也在茁壯成長,特別是最近幾年,中國人貢獻的項目越來越多,國產開源項目也越來越多,這個從開源中國發 布的數據可以看到。

  開源是大的趨勢,在某些方面開源軟件已經主導創新,開源無處不在。我相信這個觀念深入人心,趨勢一定是不可逆的。我相信,開源會走得越來越快,而且今天任何一家公司,你不可能繞過開源技術而閉門造車。

  國內有很多開源項目,但是項目的質量并不高。我們去招聘的時候,很多人會把自己 GitHub 地址帖上去。我們上去一看,這個項目是兩三年前做的,已經不再維護,并且還只是個簡單的練習項目。所以說,做開源的初衷很重要,你是為了什么去做這個項 目?為了面試?為了吹牛?個人認為開源最大的一個驅動力是解決真實的問題,而不是為了開源而開源。開源項目需要沉淀,需要靜下心來持續跟進,把項目做深、 做精。

  采訪嘉賓

  余鋒(花名褚霸)是阿里巴巴核心系統技術專家,有超過 15 年的網絡和底層系統開發經驗,專注于高性能分布式服務器的研究和實現, 擅長構建大規模集群存儲服務器。2012 年 7 月 23 日,阿里巴巴宣布推淘寶等七大事業群,被馬云稱作“七劍”,組成集團 CBBS 大市場,余鋒是在其中負責 RDS 數據庫的資深專家。

來自: InfoQ
                    <span id="shareA4" class="fl">                  
                        </span>
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!