日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

云原生存储系列文章(一):云原生应用的基石

發(fā)布時(shí)間:2025/3/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 云原生存储系列文章(一):云原生应用的基石 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

作者| 郡寶 阿里云技術(shù)專家

參與文末留言互動(dòng),即有機(jī)會(huì)獲得贈(zèng)書(shū)福利!

導(dǎo)讀:存儲(chǔ)服務(wù)支撐了應(yīng)用的狀態(tài)、數(shù)據(jù)的持久化,是計(jì)算機(jī)系統(tǒng)中的重要組成部分,也是所有應(yīng)用得以運(yùn)行的基礎(chǔ),其重要性不言而喻。在存儲(chǔ)服務(wù)演進(jìn)過(guò)程中,每一種業(yè)務(wù)類型、新技術(shù)方向都會(huì)對(duì)存儲(chǔ)的架構(gòu)、性能、可用性、穩(wěn)定性等提出新的要求,而在當(dāng)今技術(shù)浪潮走到云原生技術(shù)普及的時(shí)代,存儲(chǔ)服務(wù)需要哪些特性來(lái)支持應(yīng)用呢?

從本文開(kāi)始,我們將用一個(gè)系列文章對(duì)云原生存儲(chǔ)進(jìn)行方方面面的探析,該系列文章將從云原生存儲(chǔ)服務(wù)的概念、特點(diǎn)、需求、原理、使用、案例等方面,和大家一起探討云原生存儲(chǔ)技術(shù)新的機(jī)遇與挑戰(zhàn),歡迎大家討論:

"There is no such thing as a 'stateless' architecture" - Jonas Boner

云原生存儲(chǔ)系列文章(一):云原生應(yīng)用的基石
云原生存儲(chǔ)系列文章(二):容器存儲(chǔ)與K8S存儲(chǔ)卷
云原生存儲(chǔ)系列文章(三):Kubernetes存儲(chǔ)架構(gòu)
云原生存儲(chǔ)系列文章(四):K8S存儲(chǔ)實(shí)踐-Flexvolume
云原生存儲(chǔ)系列文章(五):K8S存儲(chǔ)實(shí)踐-CSI
云原生存儲(chǔ)系列文章(六):存儲(chǔ)卷高可用方案
云原生存儲(chǔ)系列文章(七):存儲(chǔ)調(diào)度與容量感知
云原生存儲(chǔ)系列文章(八):數(shù)據(jù)卷擴(kuò)縮容能力
云原生存儲(chǔ)系列文章(九):云原生存儲(chǔ)安全
云原生存儲(chǔ)系列文章(十):高性能計(jì)算場(chǎng)景的存儲(chǔ)優(yōu)化

本節(jié)會(huì)介紹云原生存儲(chǔ)的基本概念和常用的存儲(chǔ)方案。

云原生存儲(chǔ)

1.概念

要理解云原生存儲(chǔ),我們首先要了解云原生技術(shù)的概念,CNCF 對(duì)云原生定義如下:

云原生技術(shù)有利于各組織在公有云、私有云和混合云等新型動(dòng)態(tài)環(huán)境中,構(gòu)建和運(yùn)行可彈性擴(kuò)展的應(yīng)用。云原生的代表技術(shù)包括容器、服務(wù)網(wǎng)格、微服務(wù)、不可變基礎(chǔ)設(shè)施和聲明式 API。
這些技術(shù)能夠構(gòu)建容錯(cuò)性好、易于管理和便于觀察的松耦合系統(tǒng)。結(jié)合可靠的自動(dòng)化手段,云原生技術(shù)使工程師能夠輕松地對(duì)系統(tǒng)作出頻繁和可預(yù)測(cè)的重大變更。

簡(jiǎn)言之:云原生應(yīng)用和傳統(tǒng)應(yīng)用并沒(méi)有一個(gè)標(biāo)準(zhǔn)的劃分界限,其描述的是一種技術(shù)傾向,即越符合以下特征的應(yīng)用越云原生:

  • 應(yīng)用容器化
  • 服務(wù)網(wǎng)格化
  • 聲明式 API
  • 運(yùn)行可彈性擴(kuò)展
  • 自動(dòng)化的 DevOps
  • 故障容忍和自愈
  • 平臺(tái)無(wú)關(guān),可移植的

云原生應(yīng)用是一簇應(yīng)用特征能力的集合,而實(shí)現(xiàn)了這些能力的應(yīng)用在可用性、穩(wěn)定性、擴(kuò)展性、性能等核心能力都會(huì)有大幅的優(yōu)化。優(yōu)異的能力代表了技術(shù)的方向,云原生應(yīng)用正在引領(lǐng)各個(gè)應(yīng)用領(lǐng)域?qū)崿F(xiàn)云原生化,同時(shí)也在深刻改變著應(yīng)用服務(wù)的方方面面。存儲(chǔ)作為應(yīng)用運(yùn)行的基石,也在服務(wù)云原生化過(guò)程中提出了更多的需求。

云原生存儲(chǔ)的概念來(lái)源于云原生應(yīng)用,顧名思義:一個(gè)應(yīng)用為了滿足云原生特性的要求,其對(duì)存儲(chǔ)所要求的特性是云原生存儲(chǔ)的特性,而滿足這些特性的存儲(chǔ)方案,可以稱其為傾向云原生的存儲(chǔ)。

2.云原生存儲(chǔ)特征

1)可用性

存儲(chǔ)系統(tǒng)的可用性定義了在系統(tǒng)故障情況下訪問(wèn)數(shù)據(jù)的能力,故障可以是由存儲(chǔ)介質(zhì)、傳輸、控制器或系統(tǒng)中的其他組件造成的。可用性定義系統(tǒng)故障時(shí)如何繼續(xù)訪問(wèn)數(shù)據(jù),以及在部分節(jié)點(diǎn)不可用時(shí)如何將對(duì)數(shù)據(jù)的訪問(wèn)重新路由到其他的可訪問(wèn)節(jié)點(diǎn)。

可用性定義了故障的恢復(fù)時(shí)間目標(biāo)(RTO),即故障發(fā)生與服務(wù)恢復(fù)之間的時(shí)長(zhǎng)。可用性通常計(jì)算為應(yīng)用運(yùn)行時(shí)間中的可用時(shí)間的百分比(例如 99.9%),以及以時(shí)間單位度量的 MTTF(平均故障時(shí)間)或 MTTR(平均修復(fù)時(shí)間)來(lái)度量。

2)可擴(kuò)展性

存儲(chǔ)的可擴(kuò)展性主要衡量以下參數(shù)指標(biāo):

  • 擴(kuò)展可以訪問(wèn)存儲(chǔ)系統(tǒng)的客戶端數(shù)量的能力,例如:一個(gè) NAS 存儲(chǔ)卷同時(shí)支持多少客戶端掛載使用;
  • 擴(kuò)展單個(gè)接口的吞吐量和 IO 性能;
  • 擴(kuò)展存儲(chǔ)服務(wù)單實(shí)例的容量能力,例如:云盤(pán)的擴(kuò)容能力。

3)性能

衡量存儲(chǔ)的性能通常有兩個(gè)標(biāo)準(zhǔn):

  • 每秒支持的最大存儲(chǔ)操作數(shù) - IOPS;
  • 每秒支持的最大存儲(chǔ)讀寫(xiě)量 - 吞吐量;

云原生應(yīng)用在大數(shù)據(jù)分析、AI 等場(chǎng)景得到廣泛應(yīng)用,在這些重吞吐 / IO 場(chǎng)景中對(duì)存儲(chǔ)的需求也非常高,同時(shí)云原生應(yīng)用的快速擴(kuò)容、極致伸縮等特性也會(huì)考驗(yàn)存儲(chǔ)服務(wù)在短時(shí)間內(nèi)迎接峰值流量的能力。

4)一致性

存儲(chǔ)服務(wù)的一致性是指在提交新數(shù)據(jù)或更新數(shù)據(jù)后,訪問(wèn)這些新數(shù)據(jù)的能力;根據(jù)數(shù)據(jù)一致性的延遲效果,可以將存儲(chǔ)分為:“最終一致”和“強(qiáng)一致”存儲(chǔ)。

不同的服務(wù)對(duì)存儲(chǔ)一致性的敏感度是不一樣的,像數(shù)據(jù)庫(kù)這類對(duì)底層數(shù)據(jù)準(zhǔn)確性和時(shí)效性要求非常高的應(yīng)用,對(duì)存儲(chǔ)的要求是具有強(qiáng)一致性的能力。

5)持久性

多個(gè)因素應(yīng)用數(shù)據(jù)的持久性:

  • 系統(tǒng)冗余等級(jí);
  • 存儲(chǔ)介質(zhì)的耐久性(如:SSD 或 HDD);
  • 檢測(cè)數(shù)據(jù)損壞的能力,以及使用數(shù)據(jù)保護(hù)功能重建或恢復(fù)損壞數(shù)據(jù)的能力。

3.數(shù)據(jù)訪問(wèn)接口

在云原生應(yīng)用系統(tǒng)中,應(yīng)用訪問(wèn)存儲(chǔ)服務(wù)有多種方式。從訪問(wèn)接口類型上可以分為:數(shù)據(jù)卷方式、API 方式。

數(shù)據(jù)卷:將存儲(chǔ)服務(wù)映射為塊或文件系統(tǒng)方式共應(yīng)用直接訪問(wèn),使用方式類似于應(yīng)用在操作系統(tǒng)中直接讀寫(xiě)本地目錄文件。例如:可以將塊存儲(chǔ)、文件存儲(chǔ)掛載到本地,應(yīng)用可以像訪問(wèn)本地文件一樣對(duì)數(shù)據(jù)卷進(jìn)行訪問(wèn);
API:有些存儲(chǔ)類型并不能使用掛載數(shù)據(jù)卷的方式進(jìn)行訪問(wèn),而需要通過(guò)調(diào)用 API 的方式進(jìn)行。例如:數(shù)據(jù)庫(kù)存儲(chǔ)、KV 存儲(chǔ)、對(duì)象存儲(chǔ),都是通過(guò) API 的方式進(jìn)行數(shù)據(jù)的讀寫(xiě)。

需要說(shuō)明的是對(duì)象存儲(chǔ)類型,其標(biāo)準(zhǔn)使用方式是通過(guò) Restful API 對(duì)外提供了文件的讀寫(xiě)能力,但也可以使用用戶態(tài)文件系統(tǒng)的方式進(jìn)行存儲(chǔ)掛載,使用方式模擬了塊、文件存儲(chǔ)數(shù)據(jù)卷掛載的方式。

下面表格列舉了各種存儲(chǔ)接口的優(yōu)缺點(diǎn):

4.云原生存儲(chǔ)分層

1)編排和操作系統(tǒng)層

這一層定義了存儲(chǔ)數(shù)據(jù)的對(duì)外訪問(wèn)接口,即應(yīng)用訪問(wèn)數(shù)據(jù)時(shí)存儲(chǔ)所表現(xiàn)的形式。同上節(jié)所述,可以分為數(shù)據(jù)卷方式和 API 訪問(wèn)方式。這一層是容器服務(wù)存儲(chǔ)編排團(tuán)隊(duì)關(guān)注的重點(diǎn),云原生存儲(chǔ)對(duì)敏捷性、可操作性、擴(kuò)展性等方面的需求都在這一層集成、實(shí)現(xiàn)。

2)存儲(chǔ)拓?fù)鋵?/h3>

這一層定義了存儲(chǔ)系統(tǒng)的拓?fù)浣Y(jié)構(gòu)和架構(gòu)設(shè)計(jì),定義了系統(tǒng)不同部分是如何相互關(guān)聯(lián)和連接的(如存儲(chǔ)設(shè)備、計(jì)算節(jié)點(diǎn)和數(shù)據(jù))。拓?fù)浣Y(jié)構(gòu)在構(gòu)建時(shí)影響存儲(chǔ)系統(tǒng)的許多屬性,因此必須加以考慮。

存儲(chǔ)拓?fù)淇梢允羌惺降摹⒎植际降摹⒒虺诤系摹?/p>

3)數(shù)據(jù)保護(hù)層

定義如何通過(guò)冗余的方式對(duì)數(shù)據(jù)進(jìn)行保護(hù)。在存儲(chǔ)系統(tǒng)出現(xiàn)故障時(shí),如何通過(guò)數(shù)據(jù)冗余對(duì)數(shù)據(jù)進(jìn)行保護(hù)、恢復(fù)非常重要。通常有以下幾種數(shù)據(jù)保護(hù)方案:

  • RAID(獨(dú)立磁盤(pán)冗余陣列):用于在多個(gè)磁盤(pán)之間的分發(fā)數(shù)據(jù)技術(shù),同時(shí)考慮到冗余;
  • 擦除編碼:數(shù)據(jù)被分成多個(gè)片段,這些片段被編碼,并與多個(gè)冗余集合一起存儲(chǔ),保證數(shù)據(jù)可恢復(fù);
  • 副本:將數(shù)據(jù)分布在多個(gè)服務(wù)器上,實(shí)現(xiàn)數(shù)據(jù)集的多個(gè)完整副本。

4)數(shù)據(jù)服務(wù)

數(shù)據(jù)服務(wù)補(bǔ)充了核心存儲(chǔ)功能以外的存儲(chǔ)能力,例如可以提供存儲(chǔ)快照、數(shù)據(jù)恢復(fù)、數(shù)據(jù)加密等服務(wù)。
數(shù)據(jù)服務(wù)所提供的補(bǔ)充能力也正是云原生存儲(chǔ)所需要的,云原生存儲(chǔ)正是通過(guò)集成豐富數(shù)據(jù)服務(wù)來(lái)實(shí)現(xiàn)其敏捷、穩(wěn)定、可擴(kuò)展等能力。

5)物理層

這一層定義了存儲(chǔ)數(shù)據(jù)的實(shí)際物理硬件。物理硬件的選擇影響系統(tǒng)的整體性能和存儲(chǔ)數(shù)據(jù)的持續(xù)性。

5.存儲(chǔ)編排

云原生意味著容器化,而容器服務(wù)場(chǎng)景中通常需要某種管理系統(tǒng)或者應(yīng)用編排系統(tǒng)。這些編排系統(tǒng)與存儲(chǔ)系統(tǒng)的交互可以實(shí)現(xiàn)工作負(fù)載與存儲(chǔ)數(shù)據(jù)的關(guān)聯(lián)。

如上圖所示:

  • 負(fù)載:表示應(yīng)用實(shí)例,會(huì)消費(fèi)底層存儲(chǔ)資源;
  • 編排系統(tǒng):類似于 K8s 一樣的容器編排系統(tǒng),負(fù)責(zé)應(yīng)用的管理和調(diào)度;
  • 控制平面接口:指編排系統(tǒng)調(diào)度、運(yùn)維底層存儲(chǔ)資源的標(biāo)準(zhǔn)接口,例如 K8s 里面的 Flexvolume,已經(jīng)容器存儲(chǔ)通用的 CSI 接口;
  • 工具集:指控制平面接口運(yùn)維存儲(chǔ)資源時(shí)所依賴的三方工具、框架;
  • 存儲(chǔ)系統(tǒng):分為控制平臺(tái)數(shù)據(jù)數(shù)據(jù)平面。控制臺(tái)平面對(duì)外暴露接口,提供存儲(chǔ)資源的接入、接出能力。數(shù)據(jù)平面提供數(shù)據(jù)存儲(chǔ)服務(wù)。

當(dāng)應(yīng)用負(fù)載定義了存儲(chǔ)資源需求時(shí),編排系統(tǒng)會(huì)為應(yīng)用負(fù)載去準(zhǔn)備這些存儲(chǔ)資源。編排系統(tǒng)通過(guò)調(diào)用控制平面接口,進(jìn)而實(shí)現(xiàn)對(duì)存儲(chǔ)系統(tǒng)控制平面的調(diào)用,這樣就實(shí)現(xiàn)了應(yīng)用負(fù)載對(duì)存儲(chǔ)服務(wù)的接入、接出操作。當(dāng)實(shí)現(xiàn)了存儲(chǔ)系統(tǒng)接入后,應(yīng)用負(fù)載可以直接訪問(wèn)存儲(chǔ)系統(tǒng)的數(shù)據(jù)平面,即可以直接訪問(wèn)數(shù)據(jù)。

常見(jiàn)的云原生存儲(chǔ)方案

1.公有云存儲(chǔ)

每個(gè)公有云服務(wù)提供商都會(huì)提供各種云資源,其中也包含了各種云存儲(chǔ)服務(wù)。以阿里云為例,其幾乎提供了能夠滿足所有業(yè)務(wù)需要的存儲(chǔ)類型,包括:對(duì)象存儲(chǔ)、塊存儲(chǔ)、文件存儲(chǔ)、數(shù)據(jù)庫(kù)等等。公有云存儲(chǔ)的優(yōu)勢(shì)是規(guī)模效應(yīng),足夠大的體量實(shí)現(xiàn)了巨大研發(fā)、運(yùn)維投入的同時(shí),提供低廉的價(jià)格優(yōu)勢(shì)。而且公有云存儲(chǔ)在穩(wěn)定性、性能、擴(kuò)展性方面都能輕松滿足您的業(yè)務(wù)需求。

隨著云原生技術(shù)的發(fā)展,各個(gè)公有云廠商都開(kāi)始對(duì)其云服務(wù)進(jìn)行云原生化改造或適配,提供更加敏捷、高效的服務(wù)來(lái)適應(yīng)云原生應(yīng)用的需求。阿里云存儲(chǔ)服務(wù)也在云原生應(yīng)用適配做了很多優(yōu)化,阿里云容器服務(wù)團(tuán)隊(duì)實(shí)現(xiàn)的 CSI 存儲(chǔ)驅(qū)動(dòng)無(wú)縫的銜接了云原生應(yīng)用和存儲(chǔ)服務(wù)之間的數(shù)據(jù)接口。實(shí)現(xiàn)了用戶使用存儲(chǔ)資源時(shí)對(duì)底層存儲(chǔ)無(wú)感知,而專注于自己的業(yè)務(wù)開(kāi)發(fā)。

優(yōu)點(diǎn)如下所示:

  • 高可靠性:多數(shù)云廠商都可以提供服務(wù)穩(wěn)定性、數(shù)據(jù)可考慮下都非常優(yōu)異的服務(wù),例如:阿里云ebs提供了9個(gè)9的可靠性服務(wù),為您的數(shù)據(jù)安全提供了強(qiáng)有力的基礎(chǔ)保障能力;

  • 高性能:公有云對(duì)不同的服務(wù)提供了不同等級(jí)的存儲(chǔ)性能適配,幾乎可以滿足所有應(yīng)用類型對(duì)存儲(chǔ)性能的需求。阿里云 EBS 可以提供百萬(wàn)級(jí)別的 IOPS 能力,接近本地盤(pán)的訪問(wèn)性能。NAS 服務(wù)最大提供每秒數(shù)十 G 的吞吐能力,在數(shù)據(jù)共享的應(yīng)用場(chǎng)景滿足您的高性能需求。而 CPFS 高性能并發(fā)文件系統(tǒng)最高可以提供近 TB 級(jí)別的吞吐能力,更是可以滿足一些極端高性能計(jì)算對(duì)存儲(chǔ)的需求;

  • 擴(kuò)展性好:公有云存儲(chǔ)服務(wù)一般都提供了容量擴(kuò)容能力,讓您在應(yīng)用對(duì)存儲(chǔ)的需求增加的時(shí)候可以動(dòng)態(tài)的實(shí)現(xiàn)容量伸縮,且實(shí)現(xiàn)應(yīng)用的無(wú)感知;

  • 安全性高:不同的云存儲(chǔ)服務(wù)都提供了數(shù)據(jù)安全的保護(hù)機(jī)制,通過(guò) KMS、AES 等加密技術(shù)實(shí)現(xiàn)數(shù)據(jù)的加密存儲(chǔ),同時(shí)也實(shí)現(xiàn)了客戶端到服務(wù)的鏈路加密方案,讓數(shù)據(jù)傳輸過(guò)程中也得到加密保護(hù);

  • 成熟的云原生存儲(chǔ)接口:提供了兼容所有存儲(chǔ)類型的云原生存儲(chǔ)接口,讓您的應(yīng)用無(wú)縫的接入不同存儲(chǔ)服務(wù)。阿里云容器服務(wù)提供的 CSI 接口驅(qū)動(dòng)已經(jīng)支持了:云盤(pán)、OSS、NAS、本地盤(pán)、內(nèi)存、LVM等多種存儲(chǔ)類型,可以讓?xiě)?yīng)用無(wú)感知的訪問(wèn)任何的存儲(chǔ)服務(wù)類型;

  • 免運(yùn)維:相對(duì)于自建存儲(chǔ)服務(wù)來(lái)說(shuō),公有云存儲(chǔ)方案省去了運(yùn)維的難度

缺點(diǎn)如下所示:

  • 定制化能力差:由于公有云存儲(chǔ)方案需要服務(wù)所有用戶場(chǎng)景,其能力主要集中在一些通用需求,而對(duì)某些用戶個(gè)性化需求很難滿足。

2.商業(yè)化云存儲(chǔ)

在很多私有云環(huán)境中,業(yè)務(wù)方為了實(shí)現(xiàn)數(shù)據(jù)的高可靠性通常會(huì)購(gòu)買(mǎi)商業(yè)化的存儲(chǔ)服務(wù)。這種方案為用戶提供了高可用、高效、便捷的存儲(chǔ)服務(wù),且運(yùn)維服務(wù)、后期保障等也都有保證。私有云存儲(chǔ)提供商也意識(shí)到云原生應(yīng)用的普及,也會(huì)為用戶提供完善的、成熟的云原生存儲(chǔ)接口實(shí)現(xiàn)方案。

優(yōu)點(diǎn)如下所示:

  • 安全性好:私有云部署,可以從物理上實(shí)現(xiàn)數(shù)據(jù)的安全隔離;
  • 高可靠、高性能:很多云存儲(chǔ)提供商都是在存儲(chǔ)技術(shù)上深耕多年,具有優(yōu)異的技術(shù)能力和運(yùn)維能力,其商業(yè)化存儲(chǔ)服務(wù)可以滿足多數(shù)應(yīng)用的性能、可靠性的需求;
  • 云原生存儲(chǔ)接口:從多家存儲(chǔ)服務(wù)提供商開(kāi)源的項(xiàng)目可以看出,其對(duì)云原生應(yīng)用的支持已經(jīng)實(shí)現(xiàn)或者展開(kāi)。

缺點(diǎn)如下所示:

  • :商業(yè)化的存儲(chǔ)服務(wù)加個(gè)多數(shù)都很昂貴;
  • 云原生存儲(chǔ)接口兼容性:商業(yè)化的云原生存儲(chǔ)接口都是針對(duì)其一家的存儲(chǔ)類型。多數(shù)用戶會(huì)使用不同的存儲(chǔ)類型,而使用了不同家的存儲(chǔ)服務(wù),很難實(shí)現(xiàn)統(tǒng)一的存儲(chǔ)接入能力。

3.自建存儲(chǔ)服務(wù)

對(duì)于一些 SLA 要是不是很高的業(yè)務(wù)數(shù)據(jù),很多公司都會(huì)選擇使用自建的方式提供存儲(chǔ)服務(wù)。業(yè)務(wù)方需要通過(guò)當(dāng)前的開(kāi)源的存儲(chǔ)方案,并結(jié)合自建的業(yè)務(wù)需求進(jìn)行方案選擇。

  • 文件存儲(chǔ):考慮 CephFS、GlusterFS、NFS 等方案。其中 CephFS,GlusterFS 在技術(shù)的成熟度上還需要進(jìn)一步驗(yàn)證,且在高可靠、高性能場(chǎng)景上也存在不足。而 NFS 雖然已經(jīng)成熟,但是自建集群在性能上很難達(dá)到高性能應(yīng)用的需求。

  • 塊存儲(chǔ):例如 RBD、SAN 等是常見(jiàn)的塊存儲(chǔ)方案,技術(shù)也相對(duì)比較成熟,已經(jīng)有較多的公司將其應(yīng)用在自己的業(yè)務(wù)上。但其復(fù)雜度也相對(duì)很高,需要有專業(yè)的團(tuán)隊(duì)來(lái)運(yùn)維支持。

優(yōu)點(diǎn)如下所示:

  • 業(yè)務(wù)匹配度高、靈活性好:可以在眾多開(kāi)源方案中選擇最適合自己業(yè)務(wù)的方案,且可以在原生代碼的基礎(chǔ)上進(jìn)行二次開(kāi)發(fā)來(lái)優(yōu)化業(yè)務(wù)場(chǎng)景;
  • 安全性好:如果搭建在公司內(nèi)部使用,則具有物理隔離的安全性;
  • 云原生存儲(chǔ)接口:常用的開(kāi)源存儲(chǔ)方案都可以在社區(qū)找到云原生存儲(chǔ)接口的實(shí)現(xiàn),且可以在其基礎(chǔ)上進(jìn)行開(kāi)發(fā)、優(yōu)化。

缺點(diǎn)如下所示:

  • 性能欠佳:多數(shù)開(kāi)源的存儲(chǔ)方案其原生的性能表現(xiàn)并不是很好。當(dāng)然您可以通過(guò)架構(gòu)設(shè)計(jì)、物理硬件升級(jí)、二次開(kāi)發(fā)等方案進(jìn)行優(yōu)化;
  • 可靠性差:開(kāi)源存儲(chǔ)方案在可靠性方面無(wú)法和商業(yè)化的存儲(chǔ)比較,所以更多場(chǎng)景是應(yīng)用在 SLA 低的數(shù)據(jù)存儲(chǔ)場(chǎng)景;
  • 云原生存儲(chǔ)插件魚(yú)龍混雜:目前網(wǎng)上開(kāi)源的云原生存儲(chǔ)驅(qū)動(dòng)版本眾多,且質(zhì)量參差不齊,有些項(xiàng)目存在 bug,且長(zhǎng)期無(wú)人維護(hù),所以使用時(shí)需要更多的甄別和調(diào)測(cè)工作;
  • 專業(yè)的團(tuán)隊(duì)支撐:自己搭建的服務(wù)需要自己負(fù)責(zé),面對(duì)并不是十分成熟的開(kāi)源方案,需要組建一個(gè)具有較強(qiáng)技術(shù)能力的專業(yè)團(tuán)隊(duì)來(lái)運(yùn)維、開(kāi)發(fā)存儲(chǔ)系統(tǒng)。

4.本地存儲(chǔ)

一些業(yè)務(wù)類型不需要高可用分布式存儲(chǔ)服務(wù),而會(huì)選擇使用性能表現(xiàn)更優(yōu)的本地存儲(chǔ)方案。

數(shù)據(jù)庫(kù)類服務(wù):對(duì)存儲(chǔ)的 IO 性能、訪問(wèn)時(shí)延有很多的要求,一般的塊存儲(chǔ)服務(wù)并不能很好的滿足這方面的需求。且其應(yīng)用本身已經(jīng)實(shí)現(xiàn)了數(shù)據(jù)的高可用設(shè)計(jì),不再需要底層實(shí)現(xiàn)多副本的能力,即分布式存儲(chǔ)的多副本設(shè)計(jì)對(duì)這類應(yīng)用是一種浪費(fèi)。

存儲(chǔ)作為緩存:部分應(yīng)用期望保存一些不重要的數(shù)據(jù),數(shù)據(jù)在程序執(zhí)行完成即可以丟掉,且對(duì)存儲(chǔ)的性能要求較高,其本質(zhì)是將存儲(chǔ)作為緩存使用。云盤(pán)的高可用能力對(duì)這樣的業(yè)務(wù)并沒(méi)有太大的意義,且云盤(pán)在 IO 性能、價(jià)格方面的表現(xiàn)(相對(duì)本地盤(pán))也沒(méi)有優(yōu)勢(shì)。

所以本地盤(pán)存儲(chǔ)在很多關(guān)鍵能力上要比分布式塊存儲(chǔ)弱很多,但在特定場(chǎng)景下仍然有其使用的優(yōu)勢(shì)。阿里云存儲(chǔ)服務(wù)提供了基于 NVMe 的本地盤(pán)存儲(chǔ)方案,以更好的性能表現(xiàn)和更低的價(jià)格優(yōu)勢(shì),在特定的應(yīng)用場(chǎng)景得到了用戶的青睞。

阿里云 CSI 驅(qū)動(dòng)供了云原生應(yīng)用使用本地存儲(chǔ)的接入實(shí)現(xiàn),支持:lvm 卷、本地盤(pán)裸設(shè)備、本地目錄映射等多種接入形式,實(shí)現(xiàn)數(shù)據(jù)的高性能訪問(wèn)、quota、iops 配置等眾多適配能力。

優(yōu)點(diǎn)如下所示:

  • 性能高:提供相對(duì)分布式存儲(chǔ)更優(yōu)的 IOPS、吞吐能力;
  • 低價(jià):通過(guò)物理裸設(shè)備直接提供本地盤(pán),在價(jià)格上相對(duì)于多副本的分布式存儲(chǔ)具有優(yōu)勢(shì)。

缺點(diǎn)如下所示:

  • 數(shù)據(jù)可靠性差:本地盤(pán)保存的數(shù)據(jù)丟失后不能找回,需要從應(yīng)用層實(shí)現(xiàn)數(shù)據(jù)的高可用設(shè)計(jì);
  • 靈活性差:不能像云盤(pán)一樣實(shí)現(xiàn)數(shù)據(jù)遷移到其他節(jié)點(diǎn)使用。

5.開(kāi)源容器存儲(chǔ)

隨著云原生技術(shù)的發(fā)展,社區(qū)提供了一些開(kāi)源的云原生存儲(chǔ)方案。

1)Rook

Rook 作為第一個(gè) CNCF 存儲(chǔ)項(xiàng)目,是一個(gè)集成了 Ceph、Minio 等分布式存儲(chǔ)系統(tǒng)的云原生存儲(chǔ)方案,意圖實(shí)現(xiàn)一鍵式部署、管理方案,且和容器服務(wù)生態(tài)深度融合,提供適配云原生應(yīng)用的各種能力。從實(shí)現(xiàn)上,可以認(rèn)為 Rook 是一個(gè)提供了 Ceph 集群管理能力的 Operator。其使用 CRD 方式來(lái)對(duì) Ceph、Minio 等存儲(chǔ)資源進(jìn)行部署和管理。

Rook 組件:

  • Operator:實(shí)現(xiàn)自動(dòng)啟動(dòng)存儲(chǔ)集群,并監(jiān)控存儲(chǔ)守護(hù)進(jìn)程,并確保存儲(chǔ)集群的健康;
  • Agent:在每個(gè)存儲(chǔ)節(jié)點(diǎn)上運(yùn)行,并部署一個(gè) CSI / FlexVolume 插件,和 Kubernetes 的存儲(chǔ)卷控制框架進(jìn)行集成。Agent 處理所有的存儲(chǔ)操作,例如掛載存儲(chǔ)設(shè)備、加載存儲(chǔ)卷以及格式化文件系統(tǒng)等;
  • Discovers:檢測(cè)掛接到存儲(chǔ)節(jié)點(diǎn)上的存儲(chǔ)設(shè)備。

Rook 將 Ceph 存儲(chǔ)服務(wù)作為 Kubernetes 的一個(gè)服務(wù)進(jìn)行部署,MON、OSD、MGR 守護(hù)進(jìn)程會(huì)以 pod 的形式在 Kubernetes 進(jìn)行部署,而 rook 核心組件對(duì) ceph 集群進(jìn)行運(yùn)維管理操作。

Rook 通過(guò) ceph 可以對(duì)外提供完備的存儲(chǔ)能力,支持對(duì)象、塊、文件存儲(chǔ)服務(wù),讓你通過(guò)一套系統(tǒng)實(shí)現(xiàn)對(duì)多種存儲(chǔ)服務(wù)的需求。同時(shí) rook 默認(rèn)部署云原生存儲(chǔ)接口的實(shí)現(xiàn),通過(guò) CSI / Flexvolume 驅(qū)動(dòng)將應(yīng)用服務(wù)與底層存儲(chǔ)進(jìn)行銜接,其設(shè)計(jì)之初即為 Kubernetes 生態(tài)所服務(wù),對(duì)容器化應(yīng)用的適配非常友好。

Rook 官方文檔參考:https://rook.io/

2)OpenEBS

OpenEBS 是一種模擬了 AWS 的 EBS、阿里云的云盤(pán)等塊存儲(chǔ)實(shí)現(xiàn)的開(kāi)源版本。OpenEBS 是一種基于 CAS 理念的容器解決方案,其核心理念是存儲(chǔ)和應(yīng)用一樣采用微服務(wù)架構(gòu),并通過(guò) Kubernetes 來(lái)做資源編排。其架構(gòu)實(shí)現(xiàn)上,每個(gè)卷的 Controller 都是一個(gè)單獨(dú)的 Pod,且與應(yīng)用 Pod 在同一個(gè) Node,卷的數(shù)據(jù)使用多個(gè) Pod 進(jìn)行管理。

架構(gòu)上可以分為數(shù)據(jù)平面(Data Plane)和控制平面(Control Plane)兩部分:

  • 數(shù)據(jù)平面:為應(yīng)用程序提供數(shù)據(jù)存儲(chǔ);
  • 控制平面:管理 OpenEBS 卷容器,通常會(huì)用到容器編排軟件的功能;

數(shù)據(jù)平面

OpenEBS 持久化存儲(chǔ)卷通過(guò) Kubernetes 的 PV 來(lái)創(chuàng)建,使用 iSCSI 來(lái)實(shí)現(xiàn),數(shù)據(jù)保存在 node 節(jié)點(diǎn)上或者云存儲(chǔ)中。OpenEBS 的卷完全獨(dú)立于用戶的應(yīng)用的生命周期來(lái)管理,和 Kuberentes 中 PV 的思路一致。
OpenEBS 卷為容器提供持久化存儲(chǔ),具有針對(duì)系統(tǒng)故障的彈性,更快地訪問(wèn)存儲(chǔ),快照和備份功能。同時(shí)還提供了監(jiān)控使用情況和執(zhí)行 QoS 策略的機(jī)制。

控制平面

OpenEBS 控制平面 maya 實(shí)現(xiàn)了創(chuàng)建超融合的 OpenEBS,并將其掛載到如 Kubernetes 調(diào)度引擎上,用來(lái)擴(kuò)展特定的容器編排系統(tǒng)提供的存儲(chǔ)功能;
OpenEBS 的控制平面也是基于微服務(wù)的,通過(guò)不同的組件實(shí)現(xiàn)存儲(chǔ)管理功能、監(jiān)控、容器編排插件等功能。

更多關(guān)于 OpenEBS 的介紹可以參考:https://openebs.io/

3)Heketi

類似于 Rook 是 Ceph 開(kāi)源存儲(chǔ)系統(tǒng)在云原生編排平臺(tái)(Kubernetes)的一個(gè)落地方案,Glusterfs 同樣也有一個(gè)云原生實(shí)踐方案。Heketi 提供了一個(gè) Restful 管理接口,可用于管理 Gluster 存儲(chǔ)卷的生命周期。使用 Heketi,Kubernetes 可以動(dòng)態(tài)地為 Gluster 存儲(chǔ)卷提供任何支持的持久性類型。Heketi 將自動(dòng)確定集群中 brick 的位置,確保在不同的故障域中放置 brick 及其副本。Heketi 還支持任意數(shù)量的 Gluster 存儲(chǔ)集群,為云服務(wù)提供網(wǎng)絡(luò)文件存儲(chǔ)。

使用 Heketi,管理員不再管理或配置塊、磁盤(pán)或存儲(chǔ)池。Heketi 服務(wù)將為系統(tǒng)管理所有硬件,使其能夠按需分配存儲(chǔ)。任何在 Heketi 注冊(cè)的物理存儲(chǔ)必須以裸設(shè)備方式提供,然后 Heketi 在提供的磁盤(pán)上使用 LVM 進(jìn)行管理。

更多詳解參考:https://github.com/heketi/heketi)

6. 優(yōu)勢(shì)

  • 上述幾種云原生存儲(chǔ)方案其設(shè)計(jì)之初既充分考慮了存儲(chǔ)與云原生編排系統(tǒng)的融合,具有很好的容器數(shù)據(jù)卷接入能力;
  • 在 Quota 配置、QoS 限速、ACL 控制、快照、備份等方面有較好的云原生集成實(shí)現(xiàn),云原生應(yīng)用使用存儲(chǔ)資源時(shí)更加靈活、便利;
  • 開(kāi)源方案,社區(qū)較為活躍,網(wǎng)絡(luò)資源、使用方案豐富,讓您更容易入手。

7. 劣勢(shì)

  • 成熟度較低,目前上述方案多在公司內(nèi)部測(cè)試環(huán)境或者 SLA 較低的應(yīng)用中使用,很少存儲(chǔ)關(guān)鍵應(yīng)用數(shù)據(jù);
  • 性能差:和公有云存儲(chǔ)、商業(yè)化存儲(chǔ)相比,上述云原生存儲(chǔ)方案在 IO 性能、吞吐、時(shí)延等方面都表現(xiàn)欠佳,很難應(yīng)用在高性能服務(wù)場(chǎng)景;
  • 后期維護(hù)成本高:雖然上面方案部署、入門(mén)都很簡(jiǎn)單,但一旦運(yùn)行中出現(xiàn)問(wèn)題解決起來(lái)非常棘手。上述項(xiàng)目屬于初期階段,并不具備生產(chǎn)級(jí)別的服務(wù)能力,如果使用此方案需要有強(qiáng)有力的技術(shù)團(tuán)結(jié)加以保障。

現(xiàn)狀和挑戰(zhàn)

1.敏捷化需求

云原生應(yīng)用場(chǎng)景對(duì)服務(wù)的敏捷度、靈活性要求非常高,很多場(chǎng)景期望容器的快速啟動(dòng)、靈活的調(diào)度,這樣即需要存儲(chǔ)卷也能敏捷的根據(jù) Pod 的變化而調(diào)整。

需求表現(xiàn)在:

  • 云盤(pán)掛載、卸載效率提高:可以靈活的將塊設(shè)備在不同節(jié)點(diǎn)進(jìn)行快速的掛載切換;
  • 存儲(chǔ)設(shè)備問(wèn)題自愈能力增強(qiáng):提供存儲(chǔ)服務(wù)的問(wèn)題自動(dòng)修復(fù)能力,減少人為干預(yù);
  • 提供更加靈活的卷大小配置能力。

2.監(jiān)控能力需求

多數(shù)存儲(chǔ)服務(wù)在底層文件系統(tǒng)級(jí)別已經(jīng)提供了監(jiān)控能力,然后從云原生數(shù)據(jù)卷角度的監(jiān)控能力仍需要加強(qiáng),目前提供的PV監(jiān)控?cái)?shù)據(jù)維度較少、監(jiān)控力度較低;

具體需求:

提供更細(xì)力度(目錄)的監(jiān)控能力;
提供更多維度的監(jiān)控指標(biāo):讀寫(xiě)時(shí)延、讀寫(xiě)頻率、IO 分布等指標(biāo);

3.性能要求

在大數(shù)據(jù)計(jì)算場(chǎng)景同時(shí)大量應(yīng)用訪問(wèn)存儲(chǔ)的需求很高,這樣對(duì)存儲(chǔ)服務(wù)帶來(lái)的性能需求成為應(yīng)用運(yùn)行效率的關(guān)鍵瓶頸。

具體需求:

  • 底層存儲(chǔ)服務(wù)提供更加優(yōu)異的存儲(chǔ)性能服務(wù),優(yōu)化 CPFS、GPFS 等高性能存儲(chǔ)服務(wù)滿足業(yè)務(wù)需求;
  • 容器編排層面:優(yōu)化存儲(chǔ)調(diào)度能力,實(shí)現(xiàn)存儲(chǔ)就近訪問(wèn)、數(shù)據(jù)分散存儲(chǔ)等方式降低單個(gè)存儲(chǔ)卷的訪問(wèn)壓力。

4.共享存儲(chǔ)的隔離性

共享存儲(chǔ)提供了多個(gè) Pod 共享數(shù)據(jù)的能力,方便了不同應(yīng)用對(duì)數(shù)據(jù)的統(tǒng)一管理、訪問(wèn),但在多租的場(chǎng)景中,不同租戶對(duì)存儲(chǔ)的隔離性需求成為一個(gè)需要解決的問(wèn)題。

底層存儲(chǔ)提供目錄間的強(qiáng)隔離能力,讓共享文件系統(tǒng)的不同租戶之間實(shí)現(xiàn)文件系統(tǒng)級(jí)別的隔離效果。
容器編排層實(shí)現(xiàn)基于名詞空間、PSP 策略的編排隔離能力,保證不同租戶從應(yīng)用部署側(cè)即無(wú)法訪問(wèn)其他租戶的存儲(chǔ)卷服務(wù)。

- 贈(zèng)書(shū)福利 -

6 月 12 日 17:00 前在“阿里巴巴云原生”公眾號(hào)留言區(qū)歡迎大家討論交流云原生存儲(chǔ)新的機(jī)遇與挑戰(zhàn),精選留言點(diǎn)贊第 1 名即可免費(fèi)獲得此書(shū)!

課程推薦

為了更多開(kāi)發(fā)者能夠享受到 Serverless 帶來(lái)的紅利,這一次,我們集結(jié)了 10+ 位阿里巴巴 Serverless 領(lǐng)域技術(shù)專家,打造出最適合開(kāi)發(fā)者入門(mén)的 Serverless 公開(kāi)課,讓你即學(xué)即用,輕松擁抱云計(jì)算的新范式——Serverless。

點(diǎn)擊即可免費(fèi)觀看課程:https://developer.aliyun.com/learning/roadmap/serverless

“阿里巴巴云原生關(guān)注微服務(wù)、Serverless、容器、Service Mesh 等技術(shù)領(lǐng)域、聚焦云原生流行技術(shù)趨勢(shì)、云原生大規(guī)模的落地實(shí)踐,做最懂云原生開(kāi)發(fā)者的公眾號(hào)。”

總結(jié)

以上是生活随笔為你收集整理的云原生存储系列文章(一):云原生应用的基石的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。