故事背景
中大型企業、高校、政府部門等組織中,由于人數眾多,歷史悠久,流動量大等原因,會產生海量的文件資料,逐漸達到數百TB甚至千TB級別。由于大量數據不容丟失,要歸檔存儲、要備份,數據量將逐年增加,只增不減。
通過單機服務器管理和維護百TB以上的文件,為數千人提供穩定可靠的文件訪問服務是難以實現的,普遍存在以下問題:
單點故障 一旦服務器因各種原因宕機,系統的所有服務都不可用。
擴容難 擴容難分兩部分:性能擴容和存儲擴容。 存儲擴容難:單機服務器存儲海量數據一般使用磁盤陣列,擴容時必須停止服務,且磁盤陣列對每個硬盤的容量一致性有要求。一旦陣列損壞,所有數據都會丟失。 性能擴容難:單機服務器只能增加CPU核心/內存或者更換性能更好的服務器,每次擴容需要停止服務。
并發訪問性能差 由于單機服務器下,流量出口只有一個,由于帶寬有限,并發訪問很容易出現流量瓶頸,導致用戶上傳下載文件速度慢。
海量數據備份難 例如:以100TB數據,50MB/秒的傳輸速度,全部備份一次需要23天。
單臺服務器訪問圖例:
如何解決?
通過使用多臺服務器,進行集群化部署,利用負載均衡機制分散處理原單臺服務器的訪問壓力,集群化服務器訪問圖例:
解決單點故障問題
當悅庫集群中"服務器A"宕機后,負載均衡會立即檢測到,并將故障節點剔除,這是毫秒級的。當節點恢復正常后,會自動重新將節點加入服務器集群。
解決擴展難問題
當服務端性能不足時,只需要向服務端添加一臺服務器,過程中不影響悅庫集群的正常服務。
悅庫集群使用分布式對象存儲系統。如需對空間進行擴容,可以直接在任意服務器上增加硬盤,過程中不影響悅庫集群正常服務。
解決并發訪問性能差問題
通過在不同網絡位置部署多臺服務器,可以分散上傳/下載流量,避免服務器單點流量瓶頸。
解決海量數據備份難問題
悅庫集群實現了數據的熱備份,因此無需執行備份所有數據的操作。
文件數據上傳后,在服務端會自動進行冗余存儲(冗余數可配置),單個/多個硬盤損壞不影響整體數據,但硬盤損壞數不能大于指定配置。例如當前集群共有9個硬盤,最多允許同時3個硬盤損壞,更換新硬盤,存儲系統自動將數據還原。
悅庫集群部署架構
悅庫部署架構,自上而下由三個層面組成,分別為訪問層、應用層、數據層。
訪問層
用于實現負載均衡。把客戶端請求根據需求調度到服務器節點。并檢測各服務存活狀態,當服務節點故障時,實現虛擬IP漂移至健康節點。
應用層
用于提供悅庫網盤的基礎業務功能支撐。其中悅庫網盤服務是直接面向用戶提供文件管理業務功能的,其他服務作為后臺服務為文件管理功能提供附加能力。
數據層
用于保存悅庫網盤系統所有結構化和非結構化數據。悅庫系統不會在數據層以外存儲用戶數據,因此其他服務的故障不會對用戶數據有任何影響。