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

凌洛發表於2018-10-20

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

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

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

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

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

起步:解決特定問題

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

求生存:應用為王

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

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

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

成熟期:持續不斷地優化

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

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

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


相關文章