數(shù)據(jù)中臺發(fā)展至今,大體經(jīng)歷了4個重要階段:數(shù)據(jù)庫——數(shù)據(jù)倉庫——大數(shù)據(jù)平臺——數(shù)據(jù)中臺。每次新的變革,都是為了解決上一階段存在的問題。
當(dāng)前,走向云原生成為數(shù)據(jù)中臺的必然和必須。
一、云原生從何而來?
云原生是用于指導(dǎo)如何在云上構(gòu)建和運(yùn)行應(yīng)用的方法論。
我們認(rèn)為,“云原生”并不是一個新的概念。回顧云計算史,從個人端應(yīng)用到企業(yè)級應(yīng)用,都早已開始“上云”。
起初,這些上云的“非原住民”應(yīng)用,延續(xù)了私有化部署的技術(shù)架構(gòu),把本地軟件不加修改地通過ECS遷至云端。而ECS的弊端在于只能承載計算,無法實(shí)現(xiàn)存儲。雖然上云后的應(yīng)用實(shí)現(xiàn)了業(yè)務(wù)打通,但隨著業(yè)務(wù)擴(kuò)大,國內(nèi)服務(wù)器租用服務(wù)器托管,原有的架構(gòu)“可用性”明顯下降。
國內(nèi)云廠商為了解決數(shù)據(jù)存儲問題,制作了云磁盤,將其掛靠在云主機(jī)上,實(shí)現(xiàn)數(shù)據(jù)備份,且無需更改程序。傳統(tǒng)軟件上云的“高可用”問題得以解決。
然而,這種方式引發(fā)了另一弊端——成本高。客戶把Hadoop不加修改直接部署到ECS節(jié)點(diǎn)上,數(shù)據(jù)通過HDFS存儲在云磁盤上,需花費(fèi)大量成本。因此必須修改HDFS底層,把數(shù)據(jù)存到對象存儲上。
隨著需求不斷豐富,系統(tǒng)必須按照IaaS、PaaS的技術(shù)特點(diǎn)進(jìn)行重構(gòu),以便跟上業(yè)務(wù)和數(shù)據(jù)的爆炸性增長。 在私有化部署以及上一代傳統(tǒng)技術(shù)的軟件架構(gòu)運(yùn)維方法論的基礎(chǔ)上,帶著“高可用”、“低成本”等屬性,“云原生”升級而出。
二、云原生數(shù)據(jù)中臺具有哪些技術(shù)要素?
“云原生”概念發(fā)展至今,我們已并不陌生。而為什么要強(qiáng)調(diào)“云原生數(shù)據(jù)中臺才是未來”?分級多域數(shù)據(jù)治理的剛需、云原生技術(shù)降本增效的天然特征、國內(nèi)基礎(chǔ)設(shè)施自主可控的要求……都將數(shù)據(jù)中臺推向云原生。
因此,我們將云原生數(shù)據(jù)中臺的技術(shù)要素歸納為6點(diǎn):CI/CD(持續(xù)集成持續(xù)交付)、容器化、對象體系、存儲計算分離、跨云多域數(shù)據(jù)治理和元數(shù)據(jù)管理。
1. CI/CD(持續(xù)集成持續(xù)交付)
CI/CD的本質(zhì)是提高開發(fā)和部署效率。
在業(yè)務(wù)量巨大的情況下,大數(shù)據(jù)和云的運(yùn)維人力成本極高。因此需要使用大量的自動化工具和大數(shù)據(jù)預(yù)測算法進(jìn)行自動化運(yùn)維。通過版本管理系統(tǒng)和DevOps基礎(chǔ)設(shè)施,實(shí)現(xiàn)自動化測試和持續(xù)集成。
一個典型流程是,程序員提交代碼到特定的tag,觸發(fā)測試接口自動化測試腳本執(zhí)行并發(fā)送報告。由此實(shí)現(xiàn)測試、發(fā)布和部署自動化。在此基礎(chǔ)上構(gòu)建特定的數(shù)據(jù)環(huán)境,對重要接口和鏈路進(jìn)行自動化檢測。
2. 容器化
容器化本質(zhì)上是一種虛擬化技術(shù),一臺主機(jī)可虛擬出上千個容器。
單個容器的啟動時間更快,占用空間更小,而且可以根據(jù)實(shí)際應(yīng)用的大小來彈性分配資源,無需額外采購服務(wù)器,加快研發(fā)速度。使用容器編排基礎(chǔ)設(shè)施,對服務(wù)和作業(yè)進(jìn)行治理,根除版本地獄,大幅度提高運(yùn)維和集成效率。
容器化編排與CI/CD是相互結(jié)合的。在數(shù)據(jù)中臺領(lǐng)域,往往幾十臺機(jī)器、上百個進(jìn)程同時運(yùn)行,且在這些進(jìn)程中不僅要運(yùn)行本身的程序,也要運(yùn)行客戶的程序。
因此,底層微服務(wù)的進(jìn)程繁多。基于安全合規(guī)要求,客戶之間的程序需要保持分隔。因此,數(shù)據(jù)中臺對于容器化的要求高于其他基于云原生的應(yīng)用。
3. 對象體系
根據(jù)現(xiàn)有業(yè)務(wù)抽象出核心對象,以標(biāo)準(zhǔn)Restful風(fēng)格提供API服務(wù),解耦核心對象與業(yè)務(wù)層服務(wù),以應(yīng)對不同環(huán)境、不同業(yè)務(wù)場景的需求。這一系列正交的核心對象就構(gòu)成了平臺對象體系,上層業(yè)務(wù)可在此基礎(chǔ)上構(gòu)建應(yīng)用,高效演進(jìn)。
對象體系的API應(yīng)該是優(yōu)雅且向前兼容的,一旦發(fā)布,很難改變。例如,在WIN32研發(fā)時,出現(xiàn)某個單詞錯誤,幾十年后都無法修改。因此,需要把對象體系設(shè)計得極為詳盡和準(zhǔn)確。
4. 存儲計算分離
由于云具有分布式特點(diǎn),在云上無法天然將數(shù)據(jù)存儲在ECS中。因此必須將關(guān)鍵數(shù)據(jù)、狀態(tài)型數(shù)據(jù)存儲在對象存儲中。大量私有化組件都需要被改寫。如果把Hadoop、Spark等常規(guī)開源大數(shù)據(jù)引擎直接應(yīng)用于云主機(jī),海量數(shù)據(jù)帶來的存儲成本和吞吐壓力,很快會壓垮客戶。
因此,必須引入中間緩存實(shí)現(xiàn)計算存儲分離,將數(shù)據(jù)存儲到對象存儲上,同時兼容HDFS協(xié)議,能夠根據(jù)業(yè)務(wù)需求進(jìn)行彈性擴(kuò)容,就能大幅度降低成本,提高集群性能。
5. 跨云多域數(shù)據(jù)治理
云原生數(shù)據(jù)中臺的一大優(yōu)勢在于可以實(shí)現(xiàn)跨云多域。