雲原生時代需要什麼樣的存儲系統

{"type":"doc","content":[{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"本文介紹了目前雲原生環境下,支持有狀態應用的幾種典型存儲方案的特點,並對市場主流的雲原生存儲產品實際測試性能進行對比。"}]}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"現狀"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"當前,雲原生已經成爲應用開發者在選擇架構設計時的首選。雲原生讓應用開發者可以將所有精力都集中在開發業務邏輯本身,這極大降低了應用開發者的負擔。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"而應用系統的敏捷性、擴展性、可靠性、高可用等,則由基礎設施軟件和運維團隊共同承擔。一方面,運維團隊需要利用基礎設施軟件,快速響應業務系統提出的部署、擴容、遷移等需求,另一方面,也要時刻保持業務系統和基礎設施軟件的穩定運行。這爲基礎設施軟件和運維團隊都帶來了更大的挑戰。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"如何正確的爲基礎架構軟件進行設計和選型,就成爲了運維主管們最具挑戰的任務之一。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"雲原生場景下的存儲系統"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"存儲系統一直以來都是基礎設施軟件中的核心之一。無論業務採用什麼樣的運行環境和架構,都離不開存儲系統的支撐。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在過去的 30 年中,業務系統的運行環境經歷了巨大的變化,從單獨部署的物理機,小規模部署的虛擬化環境,大規模部署的雲環境,以及目前的 "},{"type":"link","attrs":{"href":"https:\/\/kubernetes.io\/zh\/","title":"xxx","type":null},"content":[{"type":"text","text":"K8s"}]},{"type":"text","text":" 平臺。在這個變革的過程中,業務系統對平臺敏捷性的要求越來越高。在物理機時代,運維人員需要手動配置存儲系統和部署業務系統,業務上線以周爲單位。而在雲原生時代,每分鐘都可能發佈新的應用版本,每天都可能有大量的業務要上線。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這意味着,雲原生時代的存儲系統,除了要滿足性能、穩定性、可靠性的要求以外,還要滿足業務系統對敏捷性的要求,能夠通過統一的編排系統配合業務上線,並且可以實現快速擴容。同時,爲了減輕運維管理員的工作負擔,存儲系統自身的自動化運維能力,也成爲運維團隊關注的核心焦點。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"雲原生的存儲方案"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/wechat\/images\/c2\/c21acd71a087163df17c7b7b6fc94849.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"圖 1. 使用 \/ 部署容器的主要挑戰(圖片來源於 "},{"type":"link","attrs":{"href":"https:\/\/www.cncf.io\/","title":"xxx","type":null},"content":[{"type":"text","text":"CNCF"}]},{"type":"text","text":" 報告)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"從 CNCF 的調查可以看出,目前存儲系統依然是雲原生場景使用和部署中面臨的最主要障礙之一。接下來我們來介紹一下雲原生場景下不同存儲方案的優劣點。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"本地磁盤"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"本地磁盤是最容易想到的方式,也是從物理機時代就一直在使用的方式。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在服務器的硬盤槽上插上硬盤,並利用 HBA 卡或軟件的方式製作 RAID,劃分邏輯卷,格式化成某種文件系統後,掛載到容器中。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"由於磁盤和應用系統中間的 IO 路徑最短,本地磁盤可以提供最佳的性能。同時 RAID 提供了一定程度的可靠性的保證,可以避免因單個磁盤故障而導致的數據丟失。因此,目前有大量用戶採用這種方式爲有狀態的應用提供存儲服務。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"然而本地磁盤方案也存在着巨大的缺陷。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"首先,本地磁盤無法提供節點級別的高可用,當物理節點發生故障時,由於數據都存儲在故障節點上,所以應用無法被恢復到其他節點。如果業務系統有節點級高可用的要求,則必須由業務系統自己實現數據層面的高可用,這極大的增加了業務系統的複雜度。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"其次,本地磁盤在敏捷性上也無法滿足業務需求,業務使用的存儲空間受限於本地磁盤的大小,如果達到磁盤空間的上限後難以擴容。部署 RAID 也是相當耗時的操作,難以實現在短時間內部署大量的應用系統。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"此外,該方案無論是部署還是故障後的修復,都需要大量人力的參與,這使得本地存儲方案的運維成本非常高。同時由於節點間的存儲空間無法共享,也很容易造成存儲空間的浪費。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"總的來說,本地磁盤的方案只適合在業務容器化的初期階段進行小規模試用,難以在大規模場景下被廣泛使用。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"集中式存儲"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"集中式存儲提供了可遠程訪問共享存儲的能力。和本地磁盤的方案相比,集中式存儲解決了應用系統高可用的問題,當業務系統所在的服務器發生故障時,由於數據不再存儲在服務器本地,而是存儲在遠端的共享存儲中,所以可以在其他節點上把應用拉起來,以實現業務系統的高可用。此外,由於數據集中存儲,也一定程度解決了本地存儲對磁盤空間浪費的問題。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"很多商用存儲都採用集中式存儲架構,除了基本的數據讀寫能力外,還提供了很多高級功能,包括快照、克隆、容災等等,進一步提升業務數據的可靠性。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"然而集中式存儲的架構決定了它不適合雲原生的場景。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"集中式存儲採用存儲控制器加盤櫃的形式,控制器負責提供性能和存儲功能,盤櫃提供可擴展的存儲容量。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"儘管集中式存儲可以爲單個業務系統提供較高的性能保證,但是當面臨大量業務併發訪問時,存儲控制器則成爲了性能瓶頸。如果想要滿足大量業務對性能需求,需要採用多套集中式存儲系統,存儲系統的管理成本也會急劇上升。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"此外,由於集中式存儲誕生在幾十年前,在設計上就沒有把敏捷性和運維便利性考慮進去,無法應對短時間內大量 Volume 的併發創建和銷燬操作,無法滿足業務系統對敏捷性的要求。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"分佈式存儲"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"分佈式存儲的誕生就是爲了解決集中式存儲無法解決的問題。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"分佈式存儲天然具有橫向擴展能力,在性能和高可用方面遠優於集中式存儲,非常適合應對大規模虛擬化場景。與此同時,分佈式存儲也逐漸具備了企業級存儲的能力,包括快照、克隆等等。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"不過,儘管分佈式存儲在架構上具備衆多優點,但在實現難度上具備非常大的挑戰,並不是所有的分佈式存儲都能夠充分發揮出分佈式架構的優勢。在實際的使用過程中,大部分分佈式存儲的性能和穩定性都難以達到生產級別的標準,這使得很多運維團隊不敢輕易地部署分佈式存儲產品。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"總結"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/wechat\/images\/2b\/2be59501ed090d28387aaa1b9351f5c3.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"不同存儲方案對比"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"雲原生有狀態應用對存儲系統的需求"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"談存儲技術無法脫離應用場景。在雲原生架構下,大部分業務系統不會處理數據存儲的邏輯,而是儘可能將數據存儲和處理能力交給數據庫來完成。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"目前越來越多的數據庫也在採用雲原生架構,數據庫迎來了雲原生時代。雲原生數據庫將實例運行在容器中,具備了快速部署,快速擴容的能力。同時,雲原生數據庫也採用了“存算分離”的架構,將數據庫計算邏輯和存儲邏輯進一步進行分離,存儲能力交給更專業的存儲系統完成,數據庫只專注在數據庫的業務邏輯處理。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在某種程度上講,我們可以說雲原生時代的有狀態應用,大部分指的就是“雲原生數據庫”。接下來,我們分兩種典型的數據庫類型進行介紹。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"交易型數據庫(OLTP)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"常見的 OLTP 數據庫有 "},{"type":"link","attrs":{"href":"https:\/\/www.mysql.com\/cn\/","title":"xxx","type":null},"content":[{"type":"text","text":"MySQL"}]},{"type":"text","text":"、"},{"type":"link","attrs":{"href":"https:\/\/www.postgresql.org\/","title":"xxx","type":null},"content":[{"type":"text","text":"PostgreSQL"}]},{"type":"text","text":" 等,通常承載的都是核心交易類業務,對存儲系統的數據可靠性、性能要求極高。交易類業務本身對延遲非常敏感,所以存儲系統的性能直接決定了 OLTP 系統能提供的能力。存儲系統的帶寬越高、延遲越低,OLTP 能提供的 TPS 越高。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"每一套業務系統通常都會有 N 套獨立的 OLTP 數據庫作爲業務支撐。由於業務系統會頻繁的進行部署以及擴容,所以支撐 OLTP 的存儲系統必須具備很高的敏捷性,可以快速提供數據庫對存儲空間的需求,同時也要方便的進行擴容等操作。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"大部分 OLTP 數據庫採用塊存儲系統作爲數據存儲系統,因爲塊存儲通常可以提供最佳的性能。此外,商業塊存儲還提供了快照、克隆等技術,可以很好地保證數據庫業務的延續性。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"分析型數據庫(OLAP)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"OLAP 數據庫主要用在數據分析場景,對存儲系統的可靠性以及延遲的要求都不像 OLTP 數據庫那麼高,且因爲數據量巨大,所以對存儲成本也非常敏感。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"爲了支撐 OLAP 對存儲成本的要求,存儲系統通常採用 EC 技術,以降低數據存儲的成本。而考慮到文件接口難以支撐百億級別的文件數量,所以 OLAP 使用的存儲系統通常採用對象接口,例如 S3 接口。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"OLAP 系統對敏捷性沒有特殊的需求,一旦部署好後,最常見的運維操作是擴容,並不會對數據庫頻繁的進行重新部署和銷燬操作。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"基於以上因素,分析型數據庫通常採用支持 EC 的對象存儲作爲數據存儲服務,通過 S3 接口訪問數據。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"總結"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/wechat\/images\/dc\/dc87f6ca627bce533dec078b153e4e37.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"圖 3. OLTP 和 OLAP 對存儲系統的不同要求"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"多雲環境對存儲系統帶來的新挑戰"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"隨着雲技術越來越成熟,越來越多的企業面臨多雲的需求:部分對數據安全不敏感且具有大量網絡流量的業務需要使用公有云服務,而對數據安全性和服務穩定性要求較高的業務需要使用私有云服務。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"公有云和私有云在產品設計理念上完全不同,產品的使用方式、運維方式、服務質量、產品參數也完全不同。即使同樣是公有云或者私有云,不同的服務提供商之間也存在着巨大差異。多雲的環境,對企業的運維團隊提出了巨大的挑戰。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"而云原生架構的誕生,就是爲了應對多雲的挑戰:開發者在設計雲原生應用時,只需要關注應用被如何創建和部署,無需關注在哪裏運行。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"然而儘管目前有相當多的開發者採用了雲原生的架構設計應用系統,但是對於基礎架構軟件來說,目前還是由不同的雲廠商來提供。基礎架構的運維人員需要爲不同服務商提供的存儲系統,準備不同的運維方式,這極大的增加了運維人員的負擔。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"由此也誕生一個新的存儲系統類別:雲原生存儲系統。雲原生存儲系統可以良好的運行在各種不同服務商提供的公有云環境或私有云環境,並且爲運維人員提供相同接口和運維方式。雲原生存儲系統可以極大的降低運維團隊的負擔。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"雲原生存儲有什麼不同"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"此處我們以 "},{"type":"link","attrs":{"href":"https:\/\/www.iomesh.com","title":"xxx","type":null},"content":[{"type":"text","text":"IOMesh"}]},{"type":"text","text":" 的架構圖作爲示例,說明雲原生存儲的特點。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/wechat\/images\/da\/da1dd8fe67081ab89f2b1f5bd00ffda8.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"圖 4. "},{"type":"link","attrs":{"href":"https:\/\/www.iomesh.com","title":"xxx","type":null},"content":[{"type":"text","text":"IOMesh"}]},{"type":"text","text":" 產品架構圖"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"雲原生存儲不僅僅可以做到支持在公有云和私有云運行,而且提供了容器化部署、自動運維、聲明式接口等特徵,讓用戶可以採用和運維其他雲原生應用一樣的方式對存儲系統進行部署、運維和管理。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"除此之外,雲原生存儲還需要能夠很好地和其他雲原生基礎設施配合,例如雲原生數據庫,使得雲原生數據庫可以真正的在公有云和私有云都能夠得到一致的用戶體驗。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"如何選擇雲原生存儲"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"雲原生存儲也是存儲系統,所以存儲系統所必備的可靠性,性能,高可用等等特點都是必不可少的。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"除此之外,“雲原生”對存儲系統提出了更高的要求。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"儘量減少環境依賴:雲原生存儲系統應儘量不對軟硬件環境存在任何依賴,例如對內核的依賴,對特定的網絡設備和磁盤型號的依賴等等。只有儘量少的依賴,才能夠做到最大的適配性。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"避免資源過度消耗:雲原生存儲系統以容器的形式和業務系統混合部署在容器平臺上。如果存儲系統佔用過多的計算資源(CPU、內存),則會導致整體投入成本太高。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"聲明式運維方式:存儲系統應支持通過聲明式的接口進行運維管理,同時支持一定程度的自動化運維,包括在線擴容、升級等等。當發生硬件故障時,存儲服務可以自動恢復,以保證業務系統不受影響。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"雲原生生態:雲原生存儲系統應該可以很好地和雲原生的運維生態系統結合,包括監控、報警、日誌處理等待。"}]}]}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"雲原生存儲系統的性能對比"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"性能是評判存儲系統是否能夠支撐核心業務的關鍵指標。本文將對 4 個常見的雲原生存儲系統,"},{"type":"link","attrs":{"href":"https:\/\/www.iomesh.com","title":"xxx","type":null},"content":[{"type":"text","text":"IOMesh"}]},{"type":"text","text":"、"},{"type":"link","attrs":{"href":"https:\/\/longhorn.io\/","title":"xxx","type":null},"content":[{"type":"text","text":"Longhorn"}]},{"type":"text","text":"、"},{"type":"link","attrs":{"href":"https:\/\/portworx.com\/","title":"xxx","type":null},"content":[{"type":"text","text":"Portworx"}]},{"type":"text","text":"、"},{"type":"link","attrs":{"href":"https:\/\/openebs.io\/","title":"xxx","type":null},"content":[{"type":"text","text":"OpenEBS"}]},{"type":"text","text":" 的性能測試結果進行對比。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們準備了三個 Worker 節點作爲運行應用和雲原生存儲的節點,每個節點配備了兩塊 SATA SSD,四塊 SATA HDD,以及萬兆網卡。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在測試中,我們採用最常見的 MySQL 數據庫作爲有狀態應用,並使用 "},{"type":"link","attrs":{"href":"https:\/\/www.percona.com\/blog\/2018\/03\/05\/tpcc-like-workload-sysbench-1-0\/","title":"xxx","type":null},"content":[{"type":"text","text":"sysbench-tpcc"}]},{"type":"text","text":" 模擬業務負載。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"下表提供了四個雲原生存儲系統在 TPC-C MySQL 測試中的 TPS、QPS 以及 P95 延遲數據。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/wechat\/images\/0f\/0f16a004c78d7a6fac40dec2dca57d53.jpeg","alt":null,"title":null,"style":null,"href":null,"fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"圖 5. TPC-C MySQL 綜合性能測試"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"下圖對比了四個雲原生存儲系統的性能測試結果。在座標軸中,橫軸代表時間,縱軸分別代表:TPS、QPS、以及 P95 延遲。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/wechat\/images\/da\/da2360b123b89bbe8dacbfe1454f3e15.jpeg","alt":null,"title":null,"style":null,"href":null,"fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"圖 6. TPC-C MySQL 性能穩定性測試"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"從以上數據與對比可以明顯地看出,"},{"type":"link","attrs":{"href":"https:\/\/www.iomesh.com","title":"xxx","type":null},"content":[{"type":"text","text":"IOMesh"}]},{"type":"text","text":" 在絕對性能,以及穩定性上,都遙遙領先於其他的雲原生存儲系統,具備爲核心生產系統提供存儲支撐的能力。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"總結"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"隨着雲原生時代的到來,越來越多的業務系統會採用雲原生架構。存儲系統作爲承載業務穩定運行的核心組件,在雲原生的架構下,也面臨着新的挑戰。與此同時,數據庫以及存儲系統自身也受到了雲原生架構的影響,逐漸發展出雲原生數據庫和雲原生存儲系統。未來可以看到越來越多的雲原生數據庫和雲原生存儲出現在數據中心中,成爲被廣泛使用的技術。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章