如何評價小米開源資料庫 pegasus?

項目地址:XiaoMi/pegasus

引用:「Pegasus是小米雲存儲團隊開發的一個分散式Key-Value存儲系統,最初的動機是彌補HBase在可用性和性能上的不足。Pegasus系統的Server端完全採用C++語言開發,使用PacificA協議支持強一致性,使用RocksDB作為單機存儲引擎。」


作為Pegasus項目的發起者,我經歷了Pegasus系統從無到有的整個過程。

感興趣的可以看看wiki和ppt,wiki在 XiaoMi/pegasus ,ppt在 docs/ppt 文件夾下。

Pegasus是什麼?

Pegasus是小米雲存儲團隊開發的一個分散式Key-Value存儲系統,它的目標是高可用、高性能、強一致和高擴展。Pegasus系統的Server端完全採用C++語言開發,使用PacificA協議支持強一致性,使用RocksDB作為單機存儲引擎。經過兩年多的開發,Pegasus從無到有,到現在支持了近十個業務,正一步步向著最初定下的目標前進。

Pegasus有什麼特性?

  • 高可用:系統是高可用的,即使在部分伺服器掛掉之後,也能在秒級的極短時間內恢復服務,盡量較少對用戶的影響,服務可用度達到99.99%以上。
  • 高性能:系統能夠提供高性能的讀寫服務,線上99%的讀寫延遲控制在5毫秒以內。
  • 強一致:系統對用戶提供強一致性的語義,使用戶編寫業務邏輯時更輕鬆。
  • 高擴展:系統能夠很容易地增減節點,以應對業務負載的變化,並且運維是自動化的。
  • 易使用:系統給用戶提供簡單易懂的庫和介面,方便用戶使用。

Pegasus有什麼價值?

首先,它可以滿足對延遲要求很高的在線業務的需求,譬如廣告業務。另外,它也可以替代Redis系統的一些使用場景,在滿足一定性能的同時,提供持久化、高可用、自動運維的特性。

為什麼要開源?

一方面,希望把有用的東西分享出去讓更多人使用,提升公司的技術影響力。另一方面,通過開源可以讓外部的力量參與貢獻,一起把系統做得更完善。

~~~~~~~~~~~~~~~~~~~~~~~~

國內開源的氛圍應當說越來越好,我們只是加了一片綠葉。

對Pegasus這個系統本身來說,開源只是一個新的開始。

~~~~~~~~~~~~~~~~~~~~~~~~

10/19更新

今天讓設計師mm幫忙設計了Pegasus的新LOGO,感覺還挺好看的,不是么?:-)

另外今天早上InfoQ將我們寫的一篇Pegasus相關的技術文章推送到了頭條:

小米開源分散式KV存儲系統Pegasus

文章的作者孫偉傑從浙大應屆碩士畢業就直接加入到這個項目,尤記得2015年4月項目之初,團隊就我和他兩個人,一起做調研、看論文,那時系統的名字都還沒想好。兩年多時間過去,Pegasus系統逐漸成型,而偉傑也從項目中獲得了很大的成長,無論分散式理論還是工程實踐上都是一把好手。今年7月,偉傑就在ArchSummit 2017深圳架構師峰會上做了演講,介紹了Pegasus實現背後的故事:全球架構師峰會深圳站2017。這篇文章就是在演講的基礎上整理而來,可以說是乾貨滿滿,感興趣的可以看看,相信能找到一些收穫。

而在此之前,我也曾在ArchSummit 2016北京架構師峰會做過演講,當時偏重於設計:從 Pegasus 看分散式系統的設計。這兩次演講的PPT都放到了GitHub上:https://github.com/XiaoMi/pegasus/tree/master/docs/ppt

這也從側面展現了我們團隊的技術氛圍還是蠻不錯的,能專註地做一些東西,為公司貢獻價值的同時,團隊成員自身也能得到成長。當然這離不開老大們的支持,他們一方面對項目有信心,另一方面也給了很大的空間和耐心。在項目推廣之初,業務方也給予了很多信任和理解,甘當小白鼠,幫我們踩了不少坑。

寫下上面這些文字的時候,我心中有激動有感恩有壓力,當然更多的是壓力。畢竟這才是開始,我清楚地知道系統離完善還有很大距離,後面還有很長的路要走,無論是支持公司內部的業務,還是在開源上的維護和推廣,都具有相當的挑戰。不過路是走出來的,我對自己和團隊都有信心。另外團隊還在招人,希望有更多牛人加入我們,一起來搞點事情。


沒想到還真有人使用微軟開源的rdsn分散式系統原型來做產品,本來要在專欄中寫幾篇關於rdsn的文章。現在看到小米竟然有人基於其做了分散式kv資料庫。值得一看,高可用性和穩定性不好說。

搞分散式系統的可以看下:

Microsoft/rDSN

這個項目是微軟亞研的系統組大牛: 郭振宇 https://imzhenyu.github.io/about/docs/ZhenyuGuo.CV.201608.pdf 帶頭做的一個銜生項目。其人之前是微軟亞研系統組的主任研究員最近聽說跳到螞蟻金服了。整個架構原型值得學習,更有多篇不錯的系統方面論文值得一看和借鑒。


我所在的項目是Pegasus孵化期的小白鼠,拋開細節,簡單說說整體上的主觀感受吧:

  1. HBase級別的容量。但是,不管是從易用性方面,還是性能方面,Pegasus好太多了;這直接導致我們項目組內把所有的HBase場景全部用Pegasus代替了;
  2. 略遜於MySQL的響應速度。絕大部分請求的響應速度都很不錯,監控上即使抽樣到99.99%也只有很少的較高延遲的情況,對我們業務來講夠用了。美中不足,個別的超時現象還是會存在,表現不如MySQL穩定;
  3. Redis級別的讀寫並發度。我們的業務場景QPS大概在1w左右,再綜合一些數據拓展,Pegasus的並發度能到好幾萬,目前Pegasus看起來還是遊刃有餘的樣子。
  4. 可以接受的穩定性,內測期間穩定性因為頻繁的升級可能會稍差一些,不過對於我們的線上服務來講已經夠了,將來應該會越變越好;
  5. 不足的地方,不支持服務端multiKey的查詢,有些場景很頭疼;偶爾的超時問題也很惹人煩;

總體上,這麼長時間使用下來,對Pegasus還是非常看好的。現在終於開源了,希望各界天才程序員能一起完善它,成為有分量的「國貨」(希望將來能有我的一行代碼,哪怕是注釋,哈哈)。

Pegasus,我看好你喲!


看了設計模型,看了部分代碼,值得學習,反正我寫不出來。


沒有看到第三方的benchmark結果之前,

一些開發者來現身說法,對於業內人士而言,宣傳效果不明顯。

耐心等第三方benchmark。


集合了HBase與Radis的優點,我覺得可以有。

不知道有人願意做benchmark嗎?


兄弟,你這是自己人提問題,自己人回答啊。宣傳的節奏啊。


推薦閱讀:

TAG:小米科技 | 分散式存儲 | 分散式系統 | 分散式資料庫 |