前言:
已經(jīng)成為數(shù)字化時代顯學(xué)的云原生并非單項技術(shù),而是一種重塑了軟件開發(fā)和和業(yè)務(wù)運行應(yīng)用的設(shè)計思想,是一套技術(shù)體系和方法論。云原生“Cloud Native”的Cloud 是指云平臺,Native則表示應(yīng)用程序從設(shè)計之初即使用云環(huán)境、天生為云而設(shè)計,充分利用和發(fā)揮云平臺的彈性+分布式優(yōu)勢。據(jù)相關(guān)機(jī)構(gòu)(Gartner)預(yù)測,部署在云原生平臺上的數(shù)字工作負(fù)載將由 2021 年的 30%增長至 2025 年的 95%。對象存儲作為最早的云服務(wù),已廣泛支持各種云業(yè)務(wù),在數(shù)據(jù)湖領(lǐng)域更是成為統(tǒng)一存儲的不二之選。
一、何為云原生
1.1 云原生定義
隨著技術(shù)發(fā)展,云原生定義也在不斷演進(jìn),如下是云原生計算基金會 (CNCF,Cloud Native Computing Foundation)目前的云原生定義:
“云原生技術(shù)有利于各組織在公有云、私有云和混合云等新型動態(tài)環(huán)境中,構(gòu)建和運行可彈性擴(kuò)展的應(yīng)用。云原生的代表技術(shù)包括容器、服務(wù)網(wǎng)格、微服務(wù)、不可變基礎(chǔ)設(shè)施和聲明式API。
此描述的前一句闡述云原生的應(yīng)用場景和目標(biāo),后一句則介紹云原生會使用到的相關(guān)技術(shù)。目前,以容器、微服務(wù)、DevOps 為代表的云原生技術(shù)已在金融、電信、互聯(lián)網(wǎng)等多個行業(yè)得到實踐和驗證,為企業(yè)提供了具有彈性、韌性及拓展性的用戶體驗。
1.2 云原生技術(shù)特征
根據(jù)云原生的技術(shù)架構(gòu),它可以廣泛部署到公共云、私有云、混合云等云環(huán)境。
通過CI/CD持續(xù)集成實現(xiàn)敏捷應(yīng)用開發(fā)。
采用容器的輕量化運行環(huán)境降低資源開銷、優(yōu)化成本,基于服務(wù)網(wǎng)格(例如Istio)來管控應(yīng)用的各模塊、實現(xiàn)靈活調(diào)度,通過微服務(wù)架構(gòu)理念將應(yīng)用切分多個模塊化服務(wù),基于分而治之的方法讓多團(tuán)隊快速迭代開發(fā)。
不可變基礎(chǔ)設(shè)施,則是通過容器鏡像(Docker Images)來交付軟件,將軟件和運行環(huán)境打包發(fā)布,減少環(huán)境適配的復(fù)雜度;而提供軟件包,再到客戶環(huán)境部署、調(diào)試、運行的方案,則需要考慮各種兼容情況,非常復(fù)雜。某些場景下,基于鏡像的部署時間只有基于軟件包部署時間的1/10,極大優(yōu)化軟件交付。
聲明式API,類似 K8S(Kubernetes)只需提交定義好的 API 接口來“聲明”,表示所期望的最終狀態(tài),一次調(diào)用就可完成。而軟件包部署方式下,需要通過執(zhí)行命令實現(xiàn)一步一步交互,最終完成發(fā)布,這種“命令式API”相較于K8S的“聲明式API”效率低下。所以,通過“聲明式API”可以讓系統(tǒng)之間的交付更加簡單,無需關(guān)注過程細(xì)節(jié)。
1.3 云原生對存儲的需求
在上述的云原生技術(shù)架構(gòu)下,對存儲提出了諸多需求,包括:
- 容器的安全性
不管是CI/CD,還是容器、微服務(wù),通常都運行在虛擬網(wǎng)絡(luò)(VPC)環(huán)境中,如何實現(xiàn)VPC容器下的安全數(shù)據(jù)訪問是基礎(chǔ)要求。
- 微服務(wù)的隔離性
基于服務(wù)網(wǎng)格、微服務(wù)架構(gòu),應(yīng)用需要劃分為眾多的子服務(wù),降低子服務(wù)間的干擾、實現(xiàn)子服務(wù)間的數(shù)據(jù)訪問隔離至關(guān)重要。
- 彈性擴(kuò)展能力
微服務(wù)架構(gòu)中的子服務(wù)模塊會引入突發(fā)流量,例如10,000+的容器并發(fā)訪問數(shù)據(jù)將會帶來訪問洪峰。而不可變基礎(chǔ)設(shè)施的容器鏡像批量啟動風(fēng)暴,也會帶來集中的瞬時流量,因此需要存儲提供彈性擴(kuò)展能力。
- 高可用、高可靠
微服務(wù)架構(gòu)會產(chǎn)生大量的子服務(wù),它們都需要高可用、高可靠的底層存儲,從而實現(xiàn)企業(yè)級應(yīng)用要求的5個9可用性。
- 單位存儲密度的性能,可預(yù)期的帶寬、時延、OPS
容器化的細(xì)粒度運行環(huán)境,在公共云上實現(xiàn)了秒級計費能力,比彈性計算服務(wù)器的小時級更精細(xì)。所以,存儲提供單位密度的帶寬規(guī)格(每TB的Gbps帶寬能力)、穩(wěn)定的請求時延和OPS(99.99%的請求在指定時間T內(nèi)完成),可以有效地幫助微服務(wù)評估使用存儲的時長,從而可以按需釋放容器,獲得最合適的性價比。
二、對象存儲如何支持云原生
2.1 對象存儲符合云原生定義
對象存儲作為數(shù)據(jù)存放的平臺,天然支持構(gòu)建和運行可彈性擴(kuò)展的應(yīng)用。而且容器、服務(wù)網(wǎng)格、微服務(wù)在設(shè)計開發(fā)的早期就使用對象存儲來存放數(shù)據(jù),容器鏡像數(shù)據(jù)存放的常用技術(shù)也是對象存儲。對象存儲的Restful API完全匹配聲明式API要求,因此對象存儲是云原生數(shù)據(jù)存儲的理想之地。
2.2 云原生給對象存儲帶來的挑戰(zhàn)
對象存儲應(yīng)用到云原生,是典型的存算分離架構(gòu);同時對象存儲作為數(shù)據(jù)底座,它的高可靠、高可用以及彈性擴(kuò)展能力,已在云上得到廣泛認(rèn)可。
云原生應(yīng)用正在引領(lǐng)各個應(yīng)用領(lǐng)域?qū)崿F(xiàn)云原生化的同時,也在深刻改變著應(yīng)用服務(wù)的方方面面。對象存儲作為應(yīng)用運行的基石,在服務(wù)云原生化過程中遇到了更多的挑戰(zhàn)。安全性、隔離性、單位密度的性能,都是對象存儲的面臨的新挑戰(zhàn),需要集中解決。
2.3 對象存儲該做些什么
- 加強(qiáng)針對VPC環(huán)境的容器訪問對象存儲安全性
實現(xiàn)VPC運行環(huán)境和對象存儲桶的安全訪問綁定能力。限定在VPC內(nèi)只能訪問指定的對象存儲桶,避免“內(nèi)鬼”從企業(yè)VPC將企業(yè)的對象存儲數(shù)據(jù)拷貝到個人的對象數(shù)據(jù)桶,這需要對象存儲提供VPC Endpoint功能;也需要限定對象存儲桶只能被指定的VPC訪問能力,避免外部黑客盜取密鑰后導(dǎo)致數(shù)據(jù)泄漏,需要對象存儲提供Bucket Policy功能。
- 微服務(wù)的PoD級訪問對象存儲桶的靈活權(quán)限
類似云計算服務(wù)器綁定訪問存儲的Access Token,需要為PoD綁定訪問存儲的Access Token,通過Token的臨時性,避免Access Key這樣的長期密鑰被盜取,從而帶來影響巨大的安全風(fēng)險。
- 面向微服務(wù)的隔離性
訪問隔離。應(yīng)用的不同子服務(wù),可以使用同一個數(shù)據(jù)存儲桶,但需要為每個子服務(wù)提供不同的訪問域名,并綁定不同的訪問策略,控制訪問路徑、權(quán)限,實現(xiàn)訪問隔離,需要對象存儲提供Access Point功能。
- 流控隔離
為應(yīng)用的子服務(wù),提供用戶級、子用戶級、對象存儲桶級的流量控制能力,限制子服務(wù)能使用的帶寬,避免應(yīng)用被異常流量沖垮。
- 提供單位存儲密度性能的規(guī)格
通過不同存儲類型,提供差異化的單位存儲密度性能。例如高性能存儲類型,為每TB容量提供不同帶寬能力,帶寬性能規(guī)格越強(qiáng),價格越高。從而能夠根據(jù)實際性能需求,為應(yīng)用選擇不同的存儲類型。
- 保證穩(wěn)定可預(yù)期的時延和OPS
存儲的數(shù)據(jù)訪問時延存在波動,即使大部分時候都是低時延,但少量的長尾高時延,也足以讓云原生應(yīng)用的運行時長不可預(yù)期,只能按照最壞的長尾高時延設(shè)計。所以,對象存儲的各種存儲類型都應(yīng)該提供穩(wěn)定的時延和QPS,而不是一味追求極致低時延。
- 熱點數(shù)據(jù)性能加速
容器批量啟動風(fēng)暴和并行計算框架,都會帶來大量熱點數(shù)據(jù)的重復(fù)讀。提供靠近容器可用區(qū)(AZ)部署的對象存儲熱點數(shù)據(jù)加速器,可以提高容器加載速度和快速完成并行計算任務(wù)。
三、如何做好云原生下的數(shù)據(jù)湖
數(shù)據(jù)湖是解決大數(shù)據(jù)存儲與利用的有效手段。如下圖所示,為了更好地適配云原生應(yīng)用,數(shù)據(jù)湖除了更強(qiáng)的高可靠性、高可用、彈性擴(kuò)展需求外,還需要在安全性、隔離性、支持計算引擎的接口和功能上提供更強(qiáng)的功能。為了更好的利用云原生容器的細(xì)粒度運行環(huán)境,還需要單位存儲密度的性能,實現(xiàn)可預(yù)期的帶寬、時延和OPS,以及性能加速能力,從而讓微服務(wù)的數(shù)據(jù)訪問時長可建模計算,使得應(yīng)用可以精確申請和釋放容器,達(dá)到成本優(yōu)化。
除了這些變化外,還需要關(guān)注如下的點:
- 數(shù)據(jù)湖支撐云原生計算的接口適配
云原生理念被廣泛接受,基于云原生架構(gòu)構(gòu)建的數(shù)據(jù)分析計算引擎遍地開花。而基于對象存儲的數(shù)據(jù)湖,要支持豐富的計算引擎,包括存量的歷史引擎(如Hadoop生態(tài))、以及新的引擎(如Spark、Iceberg、Hudi、Delta Lake等)。數(shù)據(jù)湖要支持額這些引擎,就必須要適配數(shù)據(jù)訪問接口,特別是歷史的Hadoop生態(tài)訪問的HDFS接口。
- 可觀測的運維
由于云原生采用微服務(wù)架構(gòu),應(yīng)用通常由多個微服務(wù)組成,它簡化了部署難度,但隨著數(shù)據(jù)鏈路增加,也增大了排查問題、分析性能、度量系統(tǒng)的運維難度。因此云原生需要架構(gòu)相關(guān)模塊提供可觀測的運維,對象存儲作為數(shù)據(jù)存儲也需要提供可觀測運維的Log/Metric/Trace能力,被云原生應(yīng)用集成。
- 可編排和調(diào)度的資源
云原生通過編排和調(diào)度實現(xiàn)應(yīng)用的靈活部署和管理,對象存儲需要提供編排和調(diào)度的接口,并整合到云原生平臺中,從而讓存儲資源按需快速可用。
云原生充分釋放了云計算的紅利,未來將有更多的業(yè)務(wù)應(yīng)用生于云,長于云。因此,隨著云原生架構(gòu)的應(yīng)用拓展到更多的領(lǐng)域,新需求將如雨后春筍般涌現(xiàn),在這樣的背景下,數(shù)據(jù)湖將會不斷演進(jìn),進(jìn)而更好滿足業(yè)務(wù)的實際需求。
原文鏈接文章來源:http://www.zghlxwxcb.cn/news/detail-407000.html
本文為阿里云原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。文章來源地址http://www.zghlxwxcb.cn/news/detail-407000.html
到了這里,關(guān)于當(dāng)云原生成為一種顯學(xué),對象存儲和數(shù)據(jù)湖如何順勢而為的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!