您好,登錄后才能下訂單哦!
過(guò)去幾年來(lái),“微服務(wù)架構(gòu)”這個(gè)術(shù)語(yǔ)持續(xù)火熱,它描述了一種將軟件應(yīng)用程序設(shè)計(jì)為可獨(dú)立部署的服務(wù)套件的特定方式。盡管這種架構(gòu)風(fēng)格沒(méi)有確切的定義,但圍繞業(yè)務(wù)能力,自動(dòng)化部署,網(wǎng)點(diǎn)智能以及語(yǔ)言和數(shù)據(jù)的分散控制等方面存在著某些共同特征。
簡(jiǎn)而言之,微服務(wù)架構(gòu)是一種將單應(yīng)用程序作為一套小型服務(wù)開(kāi)發(fā)的方法,每種應(yīng)用程序都在其自己的進(jìn)程中運(yùn)行,并與輕量級(jí)機(jī)制(通常是HTTP資源的API)進(jìn)行通信。這些服務(wù)是圍繞業(yè)務(wù)功能構(gòu)建的,可以通過(guò)全自動(dòng)部署機(jī)制進(jìn)行獨(dú)立部署。這些微服務(wù)的將集中化管理部分降到最少,同時(shí),微服務(wù)還可以用不同的編程語(yǔ)言編寫(xiě),并使用不同的數(shù)據(jù)存儲(chǔ)技術(shù)。
而涉及到數(shù)據(jù)存儲(chǔ)技術(shù),就不得不談到數(shù)據(jù)庫(kù),而實(shí)際上,微服務(wù)和數(shù)據(jù)庫(kù)有著微妙的關(guān)系,微服務(wù)對(duì)于數(shù)據(jù)庫(kù)也有著和傳統(tǒng)架構(gòu)不盡相同的需求,那么,微服務(wù)和數(shù)據(jù)庫(kù)究竟有著什么樣的關(guān)系?數(shù)據(jù)庫(kù)又對(duì)微服務(wù)有何影響?如何選擇適合微服務(wù)的數(shù)據(jù)庫(kù)?巨杉數(shù)據(jù)庫(kù)聯(lián)合創(chuàng)始人兼CTO王濤向CSDN的記者分享了他的觀點(diǎn)。
王濤認(rèn)為,談?wù)摂?shù)據(jù)庫(kù)一定脫離不了應(yīng)用。從應(yīng)用程序開(kāi)發(fā)來(lái)看,現(xiàn)在很多企業(yè)內(nèi)部的應(yīng)用開(kāi)發(fā)都在從傳統(tǒng)中間件加數(shù)據(jù)庫(kù)的“煙囪式”開(kāi)發(fā),向微服務(wù)架構(gòu)轉(zhuǎn)型。而在微服務(wù)體系架構(gòu)中,幾乎每個(gè)微服務(wù)都需要提供數(shù)據(jù)持久化的能力,而用戶也希望每個(gè)微服務(wù)所承載的數(shù)據(jù)量能夠無(wú)限的彈性擴(kuò)張。但是,在采用微服務(wù)架構(gòu)的過(guò)程中,每個(gè)微服務(wù)使用自身獨(dú)立的數(shù)據(jù)庫(kù)存儲(chǔ)又會(huì)使過(guò)去集中在一個(gè)地方的數(shù)據(jù)分散到很多不同的設(shè)備中,造成整個(gè)IT架構(gòu)的數(shù)據(jù)嚴(yán)重碎片化。舉例來(lái)說(shuō),一些互聯(lián)網(wǎng)公司僅僅在生產(chǎn)系統(tǒng)中就維護(hù)著兩、三萬(wàn)個(gè)MySQL數(shù)據(jù)庫(kù),這樣的話,想要進(jìn)行企業(yè)內(nèi)部的數(shù)據(jù)整合是極為困難的。
實(shí)際上,此前,當(dāng)企業(yè)用戶采用微服務(wù)體系架構(gòu)的時(shí)候,從數(shù)據(jù)管理的角度,業(yè)界有兩種做法。
第一種做法,就是對(duì)應(yīng)用程序進(jìn)行微服務(wù)改造,底層數(shù)據(jù)庫(kù)使用傳統(tǒng)集中式數(shù)據(jù)庫(kù)進(jìn)行存儲(chǔ)。這種做法對(duì)于應(yīng)用程序的改造相對(duì)較小,對(duì)于DBA運(yùn)維人員來(lái)說(shuō)學(xué)習(xí)成本也較低,但是相應(yīng)的,其存在數(shù)據(jù)緊耦合,無(wú)法彈性擴(kuò)張,以及可能存在單點(diǎn)故障等問(wèn)題。
第二種做法,可能也是現(xiàn)在業(yè)界使用比較多的方式,就是每一組微服務(wù)對(duì)應(yīng)一個(gè)獨(dú)立的小數(shù)據(jù)庫(kù),往往使用MySQL或PostgreSQL。這種機(jī)制能夠解決集中式存儲(chǔ)的問(wèn)題,但是也帶來(lái)了新的挑戰(zhàn),包括數(shù)據(jù)極度碎片化,在微服務(wù)之間無(wú)法共享,運(yùn)維成本極其高昂。
因此,兩種辦法都不能很好的解決微服務(wù)下數(shù)據(jù)存儲(chǔ)管理的問(wèn)題,因此分布式數(shù)據(jù)庫(kù)就是要解決上述的兩個(gè)問(wèn)題。第一就是針對(duì)每個(gè)微服務(wù)做到數(shù)據(jù)彈性擴(kuò)張,第二就是對(duì)整個(gè)企業(yè)IT做到數(shù)據(jù)的統(tǒng)一治理從而避免碎片化存儲(chǔ)。
要打造適合微服務(wù)架構(gòu)的數(shù)據(jù)庫(kù),巨杉數(shù)據(jù)庫(kù)采用了計(jì)算存儲(chǔ)分離的架構(gòu)。其中存儲(chǔ)層采用自研的原生分布式數(shù)據(jù)庫(kù)引擎,上層計(jì)算層則可以創(chuàng)建成百上千個(gè)數(shù)據(jù)庫(kù)實(shí)例,同時(shí)每個(gè)數(shù)據(jù)庫(kù)實(shí)例對(duì)應(yīng)用完全透明,不需感知。
因此,在這種系統(tǒng)架構(gòu)下,從單個(gè)應(yīng)用來(lái)看,和傳統(tǒng)標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)完全一致,不需關(guān)注數(shù)據(jù)被切分在哪些不同物理設(shè)備上,做到彈性伸縮。同時(shí),所有的物理設(shè)備從邏輯上進(jìn)行統(tǒng)一管理,甚至不同實(shí)例里面的數(shù)據(jù)可以在可配置的權(quán)限下進(jìn)行共享。
那么,適合微服務(wù)的分布式數(shù)據(jù)庫(kù)都應(yīng)該具有哪些特性呢?王濤認(rèn)為這主要應(yīng)該從兩大維度、五個(gè)方面來(lái)看。
兩大維度一是對(duì)傳統(tǒng)技術(shù)的兼容,二是技術(shù)和架構(gòu)的創(chuàng)新。
在對(duì)傳統(tǒng)技術(shù)的兼容方面來(lái)看,首先,必須支持ACID。因?yàn)閺臄?shù)據(jù)庫(kù)來(lái)看,盡管很多人說(shuō)CAP不可兼得因此要犧牲一致性,但巨杉認(rèn)為這是不可取的。對(duì)于大部分公司來(lái)說(shuō),數(shù)據(jù)都是核心生命線,絕對(duì)不能為了上分布式犧牲數(shù)據(jù)的一致性和安全性,需要對(duì)用戶的財(cái)產(chǎn)和信息負(fù)責(zé)。因此,新型面向聯(lián)機(jī)交易的分布式數(shù)據(jù)庫(kù)必須對(duì)傳統(tǒng)ACID有完美的支持,與傳統(tǒng)Oracle DB2的數(shù)據(jù)安全性一致性保持兼容。
其次,SQL的完整性。這個(gè)主要是從對(duì)傳統(tǒng)應(yīng)用的兼容與開(kāi)發(fā)人員能力重用的角度看。一般來(lái)說(shuō),SQL語(yǔ)法兼容的完整性,以及對(duì)已有標(biāo)準(zhǔn)的兼容必須具備,例如對(duì)MySQL、Oracle、DB2、PostgreSQL這種主流協(xié)議的兼容。
而從新技術(shù)的前瞻性來(lái)看,首先,未來(lái)是私有云和微服務(wù)應(yīng)用的時(shí)代,那么作為分布式數(shù)據(jù)庫(kù),就不僅僅簡(jiǎn)單的將其定位成過(guò)去某一個(gè)數(shù)據(jù)庫(kù)的替代。分布式數(shù)據(jù)庫(kù)的核心價(jià)值在于,能夠從數(shù)據(jù)庫(kù)的層面以服務(wù)資源池的形式,向上層被從煙囪式架構(gòu)向微服務(wù)架構(gòu)拆散的成百上千個(gè)小服務(wù)提供數(shù)據(jù)庫(kù)訪問(wèn)能力的平臺(tái)。在這個(gè)定位下,數(shù)據(jù)庫(kù)資源池在保證與傳統(tǒng)數(shù)據(jù)庫(kù)100%兼容的基礎(chǔ)上,必須滿足分布式彈性擴(kuò)張,當(dāng)資源池里面空間和計(jì)算能力不足時(shí),需要通過(guò)動(dòng)態(tài)增加計(jì)算存儲(chǔ)節(jié)點(diǎn)的方式進(jìn)行擴(kuò)容。
其次,過(guò)去的數(shù)據(jù)庫(kù)由于僅針對(duì)某一個(gè)特定應(yīng)用,采用中間件和數(shù)據(jù)庫(kù)一對(duì)一綁定的方式,因此只需要提供自身一種模式的訪問(wèn)就夠了。但是當(dāng)進(jìn)行數(shù)據(jù)庫(kù)資源池化的時(shí)候,上層應(yīng)用自然面對(duì)來(lái)自不同開(kāi)發(fā)商、不同業(yè)務(wù)類型、不同SLA級(jí)別的服務(wù),大家采用的開(kāi)發(fā)流程、SQL標(biāo)準(zhǔn)、以及安全策略各不相同,因此分布式數(shù)據(jù)庫(kù)必須能夠支持多種模式的訪問(wèn)接口。
最后,HTAP,即交易分析混合處理能力。譬如一些賬務(wù)數(shù)據(jù),可能最核心的關(guān)鍵應(yīng)用來(lái)自于聯(lián)機(jī)交易業(yè)務(wù)實(shí)時(shí)使用這些數(shù)據(jù),但是同時(shí)一些后臺(tái)的實(shí)時(shí)報(bào)表,或者安全審計(jì)機(jī)構(gòu)需要進(jìn)行統(tǒng)計(jì)分析的時(shí)候,來(lái)自不同微服務(wù)的業(yè)務(wù)可能需要對(duì)同一份數(shù)據(jù)同時(shí)以交易和分析的方式進(jìn)行訪問(wèn)。這種情況下,能不能在資源池內(nèi)對(duì)交易與分析業(yè)務(wù)進(jìn)行物理資源隔離,及時(shí)對(duì)同一份數(shù)據(jù)同時(shí)訪問(wèn)并可以做到互不干擾尤為關(guān)鍵,因此,適合微服務(wù)的數(shù)據(jù)庫(kù)必須具有較強(qiáng)的交易分析混合處理能力。
正如同巨杉對(duì)于分布式數(shù)據(jù)庫(kù)的技術(shù)定位和目標(biāo),巨杉數(shù)據(jù)庫(kù)SequoiaDB本身就是以分布式存儲(chǔ)底座與上層的數(shù)據(jù)庫(kù)實(shí)例兩層來(lái)進(jìn)行構(gòu)建的。底層的分布式存儲(chǔ)作為資源池,自身負(fù)責(zé)數(shù)據(jù)的存儲(chǔ)、分布式事務(wù)控制、記錄和表鎖等,都在底層原生分布式存儲(chǔ)實(shí)現(xiàn)。
數(shù)據(jù)庫(kù)實(shí)例層則提供對(duì)上層應(yīng)用程序的SQL服務(wù),用戶可以創(chuàng)建MySQL、PostgreSQL、Spark SQL等結(jié)構(gòu)化實(shí)例,也可以創(chuàng)建JSON或S3文件系統(tǒng)的非結(jié)構(gòu)化實(shí)例。每個(gè)實(shí)例中的數(shù)據(jù)對(duì)上層應(yīng)用來(lái)說(shuō)完全透明。因此,在SequoiaDB中,一個(gè)MySQL表可以輕易存儲(chǔ)十億甚至百億級(jí)別的數(shù)據(jù),開(kāi)發(fā)者在寫(xiě)SQL的時(shí)候完全不需要關(guān)注底層表到底被分散在多少臺(tái)物理設(shè)備中。
作為業(yè)界原生分布式數(shù)據(jù)庫(kù)以及新一代分布式數(shù)據(jù)庫(kù)的代表,SequoiaDB對(duì)于分布式交易與ACID與傳統(tǒng)技術(shù)完全兼容,架構(gòu)與功能特性與傳統(tǒng)數(shù)據(jù)庫(kù)完全兼容。同時(shí),SequoiaDB還積極擁抱新一代微服務(wù)與云計(jì)算框架,在面向微服務(wù)應(yīng)用開(kāi)發(fā)與云計(jì)算基礎(chǔ)架構(gòu)時(shí),支持彈性擴(kuò)張、資源隔離、多租戶、可配置一致性、多模式(支持各類SQL協(xié)議)、集群內(nèi)可配置容災(zāi)策略等一系列功能。
事實(shí)上,傳統(tǒng)單點(diǎn)數(shù)據(jù)庫(kù)的容量瓶頸,僅僅是分布式數(shù)據(jù)庫(kù)所解決的問(wèn)題之一。更重要的是在未來(lái)微服務(wù)化應(yīng)用開(kāi)發(fā)以及云化平臺(tái)的趨勢(shì)下,應(yīng)用不再以“煙囪式”的中間件加數(shù)據(jù)庫(kù)模式進(jìn)行構(gòu)建,而是采用數(shù)千甚至上萬(wàn)的微服務(wù)程序構(gòu)建成的復(fù)雜網(wǎng)狀模型。因此,分布式數(shù)據(jù)庫(kù)需要能夠滿足上層應(yīng)用的彈性擴(kuò)展、高并發(fā)、高吞吐量、與靈活敏捷的需求。而SequoiaDB在這些方面都有著出色的表現(xiàn),包括:
完整的ACID支持,事務(wù)和一致性保證;SQL的完整支持,傳統(tǒng)數(shù)據(jù)庫(kù)MySQL/PostgreSQL的語(yǔ)法完全兼容。分布式與擴(kuò)展性,應(yīng)對(duì)數(shù)據(jù)量的變化,實(shí)現(xiàn)存儲(chǔ)層和計(jì)算層的彈性擴(kuò)展;多模式訪問(wèn)接口,支持多類型數(shù)據(jù)管理和多種模式的訪問(wèn)接口; HTAP交易/分析混合處理能力,復(fù)雜業(yè)務(wù)需求下,實(shí)現(xiàn)數(shù)據(jù)的物理隔離,互不干擾。
而在此次大會(huì)最新發(fā)布的 3.2版本中,巨杉通對(duì)SequoiaDB進(jìn)行大幅度性能優(yōu)化與提升,使得其在分布式的交易型業(yè)務(wù)下,整體性能提升2~3倍,CPU消耗節(jié)省超過(guò)30%,從而大大提升了對(duì)微服務(wù)的支持力度。
實(shí)際上,SequoiaDB 并不僅僅是微服務(wù)的“良師益友”,其更大維度下的定位是一款真正的金融級(jí)分布式關(guān)系型數(shù)據(jù)庫(kù)。
巨杉數(shù)據(jù)庫(kù)目前在企業(yè)級(jí)應(yīng)用場(chǎng)景主要包括分布式在線交易、數(shù)據(jù)中臺(tái)以及分布式內(nèi)容管理。
在線交易是數(shù)據(jù)庫(kù)最廣泛應(yīng)用的場(chǎng)景之一,通常用來(lái)支撐核心業(yè)務(wù)運(yùn)營(yíng)。分布式在線交易數(shù)據(jù)庫(kù)核心業(yè)務(wù)價(jià)值包括,分布式架構(gòu)轉(zhuǎn)型,高并發(fā)、高處理能力,業(yè)務(wù)持續(xù)擴(kuò)展能力以及自主可控與數(shù)據(jù)安全要求。SequoiaDB存儲(chǔ)引擎采用原生分布式架構(gòu),擴(kuò)展便捷;完整支持分布式事務(wù)、強(qiáng)一致多副本高可用;無(wú)單點(diǎn)故障,數(shù)據(jù)庫(kù)引擎原生支持多中心容災(zāi)。
數(shù)據(jù)中臺(tái)是當(dāng)前十分火熱的概念,數(shù)據(jù)中臺(tái)在企業(yè)微服務(wù)架構(gòu)中的角色十分重要,像齒輪一樣連通上層快速迭代的微服務(wù)應(yīng)用和下層基礎(chǔ)架構(gòu),同時(shí)還可以提供全量數(shù)據(jù)的實(shí)時(shí)在線服務(wù),泛指?jìng)鹘y(tǒng)核心交易以外的所有對(duì)外服務(wù)業(yè)務(wù),基于SequoiaDB構(gòu)建的數(shù)據(jù)中臺(tái)核心業(yè)務(wù)價(jià)值包括:數(shù)據(jù)高性能實(shí)時(shí)訪問(wèn),海量數(shù)據(jù)全生命周期在線,業(yè)務(wù)持續(xù)擴(kuò)展能力。
內(nèi)容管理平臺(tái)為企業(yè)提供存儲(chǔ)、管理和使用海量非結(jié)構(gòu)化數(shù)據(jù)能力。常見(jiàn)應(yīng)用包括影像平臺(tái)、文檔管理平臺(tái)、音視頻雙錄系統(tǒng)等?;赟equoiaDB搭建的內(nèi)容管理平臺(tái)的核心業(yè)務(wù)價(jià)值包括,海量非結(jié)構(gòu)化數(shù)據(jù)管理和實(shí)時(shí)訪問(wèn),豐富的內(nèi)容管理功能,海量非結(jié)構(gòu)化數(shù)據(jù)全生命周期在線以及業(yè)務(wù)持續(xù)擴(kuò)展能力。
據(jù)悉,目前巨杉數(shù)據(jù)庫(kù)已在近百家大型商業(yè)銀行核心生產(chǎn)業(yè)務(wù)上線,并廣泛應(yīng)用于金融、電信、政府、互聯(lián)網(wǎng)、交通等領(lǐng)域,企業(yè)用戶總數(shù)超過(guò)1000家。同時(shí),巨杉也是中國(guó)首家連續(xù)兩年入選Gartner 數(shù)據(jù)庫(kù)報(bào)告的數(shù)據(jù)庫(kù)廠商。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。