分佈式存儲系統的最佳實踐:系統發展路徑

分佈式存儲系統從整體架構的角度看大同小異,實現起來卻困難重重。自主研發的 分佈式存儲系統往往需要兩到三年才能逐步成熟起來,其中的難點在於如何把系統做穩定。系統開發過程中涉及架構設計、關鍵算法實現、質量控制、團隊成員成長、線上運維、應用合作等,任何一個環節出現問題都可能導致整個項目失敗。
本文章介紹通用分佈式存儲系統發展路徑。

通用分佈式存儲系統不是設計出來的,而是隨着應用需求不斷發展起來的。它來源於具體業務,又具有一定的通用性,能夠解決一大類問題。通用分佈式存儲平臺的優勢 在於規模效應,等到平臺的規模超過某個平衡點時,成本優勢將會顯現。

通用分佈式存儲平臺主要有兩種成長模式:

  • 公司高層制定戰略大力發展通用平臺。這種模式前期發展會比較順利,但是往往會因爲離業務太遠而在中期暴露大量平臺本身的問題。
  • 來源於具體業務並將業務需求通用化。這種模式會面臨更大的技術挑戰,但是團隊成員反而能夠在這個過程中得到更多的鍛鍊。

第2種發展模式相對更加曲折,大致需要經歷如下幾個階段。

起步:解決特定問題

在起步階段,需要解決業務提出的特殊需求,這些特殊需求是以前的系統無法解決或者解決得不太好的。例如,OceanBase 系統起步時需要解決淘寶收藏夾業務提出的兩張大表左連接問題。起步期的挑戰主要在於技術挑戰,團隊成員能夠在這個階段獲得較大的技術成長。

求生存:應用爲王

爲了證明平臺的通用性,需要接入大量的業務。如果沒有公司戰略支持,這個階段將面臨“雞生蛋還是蛋生雞”的問題,沒有業務就無法完善平臺,平臺不完善就無法吸引更多業務接入。在這個階段,優先級最高的事情是接入合適的應用並把應用服務好,形成良好的口碑。求生存階段還將面臨一個來自團隊內部的挑戰,團隊成員缺乏起步期的新鮮感,部分成員工作熱情會有所降低。這個階段需要明確團隊的願景,耐住寂寞,重視每個細節。

平臺化:提升易用性、可運維性

當應用數量積累到一定程度後,就需要花大力氣提升易用性和可運維性了。易用性的關鍵在於採用標準的使用接口,兼容應用以前的使用方式,從而降低學習成本和應用改造成本,提升可運維性要求將系統內部更多狀態暴露給運維人員並開發方便的部署、監控、運維工具。

成熟期:持續不斷地優化

分佈式存儲系統步入成熟期後,應用推廣將會比較順利。開發團隊在這個階段做的多情主要是持續不斷地優化系統,並根據應用的需求補充一些功能支持。隨着平合規模不斷增長以及優化工作不斷深入,平臺的規模效應將顯現,平臺取得成功。

通用存儲平臺發展過程中困難重重,要求團隊成員有強烈的信念和長遠的理想,能夠耐得住寂寞。另外,系統發展過程中需要保持對技術細節的關注,每個實現細節問題都可能導致用戶抱怨,甚至引起線上故障。

從公司的角度看,是否發展通用分佈式存儲平臺取決於公司的規模。對於小型互聯網公司(員工數小於100人),那麼,應該更多地選擇廣泛使用的存儲技術,例如MySQL開源關係數據庫;對於中型互聯網公司(員工數在100到1000人之間)。那麼,可以組合使用各種SQL或NoSQL存儲技術,改進開源產品或者基於開源產品做二次開發,例如基於MySQL數據庫做二次開發,實現7.1節中的MySQL Sharding架構;對於大型互聯網公司(員工數超過1000人),那麼,往往需要自主研發核心存儲技術,包括分佈式架構、存儲引掌等。通用分佈式存儲系統研發週期很長,系統架構需要經過多次選代,團隊成員也需要通過研發過程來獲得成長,因此,這種事情要麼不做,要做就務必堅持到底。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章