摘要:微服務(wù)架構(gòu)催生分布式數(shù)據(jù)庫王濤認(rèn)為,談?wù)摂?shù)據(jù)庫一定脫離不了應(yīng)用。巨杉數(shù)據(jù)庫,適合微服務(wù)的分布式數(shù)據(jù)庫正如同巨杉對(duì)于分布式數(shù)據(jù)庫的技術(shù)定位和目標(biāo),巨杉數(shù)據(jù)庫本身就是以分布式存儲(chǔ)底座與上層的數(shù)據(jù)庫實(shí)例兩層來進(jìn)行構(gòu)建的。
過去幾年來,“微服務(wù)架構(gòu)”這個(gè)術(shù)語持續(xù)火熱,它描述了一種將軟件應(yīng)用程序設(shè)計(jì)為可獨(dú)立部署的服務(wù)套件的特定方式。盡管這種架構(gòu)風(fēng)格沒有確切的定義,但圍繞業(yè)務(wù)能力,自動(dòng)化部署,網(wǎng)點(diǎn)智能以及語言和數(shù)據(jù)的分散控制等方面存在著某些共同特征。
簡而言之,微服務(wù)架構(gòu)是一種將單應(yīng)用程序作為一套小型服務(wù)開發(fā)的方法,每種應(yīng)用程序都在其自己的進(jìn)程中運(yùn)行,并與輕量級(jí)機(jī)制(通常是HTTP資源的API)進(jìn)行通信。這些服務(wù)是圍繞業(yè)務(wù)功能構(gòu)建的,可以通過全自動(dòng)部署機(jī)制進(jìn)行獨(dú)立部署。這些微服務(wù)的將集中化管理部分降到最少,同時(shí),微服務(wù)還可以用不同的編程語言編寫,并使用不同的數(shù)據(jù)存儲(chǔ)技術(shù)。
而涉及到數(shù)據(jù)存儲(chǔ)技術(shù),就不得不談到數(shù)據(jù)庫,而實(shí)際上,微服務(wù)和數(shù)據(jù)庫有著微妙的關(guān)系,微服務(wù)對(duì)于數(shù)據(jù)庫也有著和傳統(tǒng)架構(gòu)不盡相同的需求,那么,微服務(wù)和數(shù)據(jù)庫究竟有著什么樣的關(guān)系?數(shù)據(jù)庫又對(duì)微服務(wù)有何影響?如何選擇適合微服務(wù)的數(shù)據(jù)庫?巨杉數(shù)據(jù)庫聯(lián)合創(chuàng)始人兼CTO王濤向CSDN的記者分享了他的觀點(diǎn)。
微服務(wù)架構(gòu)催生分布式數(shù)據(jù)庫
王濤認(rèn)為,談?wù)摂?shù)據(jù)庫一定脫離不了應(yīng)用。從應(yīng)用程序開發(fā)來看,現(xiàn)在很多企業(yè)內(nèi)部的應(yīng)用開發(fā)都在從傳統(tǒng)中間件加數(shù)據(jù)庫的“煙囪式”開發(fā),向微服務(wù)架構(gòu)轉(zhuǎn)型。而在微服務(wù)體系架構(gòu)中,幾乎每個(gè)微服務(wù)都需要提供數(shù)據(jù)持久化的能力,而用戶也希望每個(gè)微服務(wù)所承載的數(shù)據(jù)量能夠無限的彈性擴(kuò)張。但是,在采用微服務(wù)架構(gòu)的過程中,每個(gè)微服務(wù)使用自身獨(dú)立的數(shù)據(jù)庫存儲(chǔ)又會(huì)使過去集中在一個(gè)地方的數(shù)據(jù)分散到很多不同的設(shè)備中,造成整個(gè)IT架構(gòu)的數(shù)據(jù)嚴(yán)重碎片化。舉例來說,一些互聯(lián)網(wǎng)公司僅僅在生產(chǎn)系統(tǒng)中就維護(hù)著兩、三萬個(gè)MySQL數(shù)據(jù)庫,這樣的話,想要進(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ù)庫使用傳統(tǒng)集中式數(shù)據(jù)庫進(jìn)行存儲(chǔ)。這種做法對(duì)于應(yīng)用程序的改造相對(duì)較小,對(duì)于DBA運(yùn)維人員來說學(xué)習(xí)成本也較低,但是相應(yīng)的,其存在數(shù)據(jù)緊耦合,無法彈性擴(kuò)張,以及可能存在單點(diǎn)故障等問題。
第二種做法,可能也是現(xiàn)在業(yè)界使用比較多的方式,就是每一組微服務(wù)對(duì)應(yīng)一個(gè)獨(dú)立的小數(shù)據(jù)庫,往往使用MySQL或PostgreSQL。這種機(jī)制能夠解決集中式存儲(chǔ)的問題,但是也帶來了新的挑戰(zhàn),包括數(shù)據(jù)極度碎片化,在微服務(wù)之間無法共享,運(yùn)維成本極其高昂。
因此,兩種辦法都不能很好的解決微服務(wù)下數(shù)據(jù)存儲(chǔ)管理的問題,因此分布式數(shù)據(jù)庫就是要解決上述的兩個(gè)問題。第一就是針對(duì)每個(gè)微服務(wù)做到數(shù)據(jù)彈性擴(kuò)張,第二就是對(duì)整個(gè)企業(yè)IT做到數(shù)據(jù)的統(tǒng)一治理從而避免碎片化存儲(chǔ)。
打造適合微服務(wù)的分布式數(shù)據(jù)庫
要打造適合微服務(wù)架構(gòu)的數(shù)據(jù)庫,巨杉數(shù)據(jù)庫采用了計(jì)算存儲(chǔ)分離的架構(gòu)。其中存儲(chǔ)層采用自研的原生分布式數(shù)據(jù)庫引擎,上層計(jì)算層則可以創(chuàng)建成百上千個(gè)數(shù)據(jù)庫實(shí)例,同時(shí)每個(gè)數(shù)據(jù)庫實(shí)例對(duì)應(yīng)用完全透明,不需感知。
因此,在這種系統(tǒng)架構(gòu)下,從單個(gè)應(yīng)用來看,和傳統(tǒng)標(biāo)準(zhǔn)數(shù)據(jù)庫完全一致,不需關(guān)注數(shù)據(jù)被切分在哪些不同物理設(shè)備上,做到彈性伸縮。同時(shí),所有的物理設(shè)備從邏輯上進(jìn)行統(tǒng)一管理,甚至不同實(shí)例里面的數(shù)據(jù)可以在可配置的權(quán)限下進(jìn)行共享。
那么,適合微服務(wù)的分布式數(shù)據(jù)庫都應(yīng)該具有哪些特性呢?王濤認(rèn)為這主要應(yīng)該從兩大維度、五個(gè)方面來看。
兩大維度一是對(duì)傳統(tǒng)技術(shù)的兼容,二是技術(shù)和架構(gòu)的創(chuàng)新。
在對(duì)傳統(tǒng)技術(shù)的兼容方面來看,首先,必須支持ACID。因?yàn)閺臄?shù)據(jù)庫來看,盡管很多人說CAP不可兼得因此要犧牲一致性,但巨杉認(rèn)為這是不可取的。對(duì)于大部分公司來說,數(shù)據(jù)都是核心生命線,絕對(duì)不能為了上分布式犧牲數(shù)據(jù)的一致性和安全性,需要對(duì)用戶的財(cái)產(chǎn)和信息負(fù)責(zé)。因此,新型面向聯(lián)機(jī)交易的分布式數(shù)據(jù)庫必須對(duì)傳統(tǒng)ACID有完美的支持,與傳統(tǒng)Oracle DB2的數(shù)據(jù)安全性一致性保持兼容。
其次,SQL的完整性。這個(gè)主要是從對(duì)傳統(tǒng)應(yīng)用的兼容與開發(fā)人員能力重用的角度看。一般來說,SQL語法兼容的完整性,以及對(duì)已有標(biāo)準(zhǔn)的兼容必須具備,例如對(duì)MySQL、Oracle、DB2、PostgreSQL這種主流協(xié)議的兼容。
而從新技術(shù)的前瞻性來看,首先,未來是私有云和微服務(wù)應(yīng)用的時(shí)代,那么作為分布式數(shù)據(jù)庫,就不僅僅簡單的將其定位成過去某一個(gè)數(shù)據(jù)庫的替代。分布式數(shù)據(jù)庫的核心價(jià)值在于,能夠從數(shù)據(jù)庫的層面以服務(wù)資源池的形式,向上層被從煙囪式架構(gòu)向微服務(wù)架構(gòu)拆散的成百上千個(gè)小服務(wù)提供數(shù)據(jù)庫訪問能力的平臺(tái)。在這個(gè)定位下,數(shù)據(jù)庫資源池在保證與傳統(tǒng)數(shù)據(jù)庫100%兼容的基礎(chǔ)上,必須滿足分布式彈性擴(kuò)張,當(dāng)資源池里面空間和計(jì)算能力不足時(shí),需要通過動(dòng)態(tài)增加計(jì)算存儲(chǔ)節(jié)點(diǎn)的方式進(jìn)行擴(kuò)容。
其次,過去的數(shù)據(jù)庫由于僅針對(duì)某一個(gè)特定應(yīng)用,采用中間件和數(shù)據(jù)庫一對(duì)一綁定的方式,因此只需要提供自身一種模式的訪問就夠了。但是當(dāng)進(jìn)行數(shù)據(jù)庫資源池化的時(shí)候,上層應(yīng)用自然面對(duì)來自不同開發(fā)商、不同業(yè)務(wù)類型、不同SLA級(jí)別的服務(wù),大家采用的開發(fā)流程、SQL標(biāo)準(zhǔn)、以及安全策略各不相同,因此分布式數(shù)據(jù)庫必須能夠支持多種模式的訪問接口。
最后,HTAP,即交易分析混合處理能力。譬如一些賬務(wù)數(shù)據(jù),可能最核心的關(guān)鍵應(yīng)用來自于聯(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í)候,來自不同微服務(wù)的業(yè)務(wù)可能需要對(duì)同一份數(shù)據(jù)同時(shí)以交易和分析的方式進(jìn)行訪問。這種情況下,能不能在資源池內(nèi)對(duì)交易與分析業(yè)務(wù)進(jìn)行物理資源隔離,及時(shí)對(duì)同一份數(shù)據(jù)同時(shí)訪問并可以做到互不干擾尤為關(guān)鍵,因此,適合微服務(wù)的數(shù)據(jù)庫必須具有較強(qiáng)的交易分析混合處理能力。
巨杉數(shù)據(jù)庫,適合微服務(wù)的分布式數(shù)據(jù)庫
正如同巨杉對(duì)于分布式數(shù)據(jù)庫的技術(shù)定位和目標(biāo),巨杉數(shù)據(jù)庫SequoiaDB本身就是以分布式存儲(chǔ)底座與上層的數(shù)據(jù)庫實(shí)例兩層來進(jìn)行構(gòu)建的。底層的分布式存儲(chǔ)作為資源池,自身負(fù)責(zé)數(shù)據(jù)的存儲(chǔ)、分布式事務(wù)控制、記錄和表鎖等,都在底層原生分布式存儲(chǔ)實(shí)現(xiàn)。
數(shù)據(jù)庫實(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)用來說完全透明。因此,在SequoiaDB中,一個(gè)MySQL表可以輕易存儲(chǔ)十億甚至百億級(jí)別的數(shù)據(jù),開發(fā)者在寫SQL的時(shí)候完全不需要關(guān)注底層表到底被分散在多少臺(tái)物理設(shè)備中。
作為業(yè)界原生分布式數(shù)據(jù)庫以及新一代分布式數(shù)據(jù)庫的代表,SequoiaDB對(duì)于分布式交易與ACID與傳統(tǒng)技術(shù)完全兼容,架構(gòu)與功能特性與傳統(tǒng)數(shù)據(jù)庫完全兼容。同時(shí),SequoiaDB還積極擁抱新一代微服務(wù)與云計(jì)算框架,在面向微服務(wù)應(yīng)用開發(fā)與云計(jì)算基礎(chǔ)架構(gòu)時(shí),支持彈性擴(kuò)張、資源隔離、多租戶、可配置一致性、多模式(支持各類SQL協(xié)議)、集群內(nèi)可配置容災(zāi)策略等一系列功能。
事實(shí)上,傳統(tǒng)單點(diǎn)數(shù)據(jù)庫的容量瓶頸,僅僅是分布式數(shù)據(jù)庫所解決的問題之一。更重要的是在未來微服務(wù)化應(yīng)用開發(fā)以及云化平臺(tái)的趨勢下,應(yīng)用不再以“煙囪式”的中間件加數(shù)據(jù)庫模式進(jìn)行構(gòu)建,而是采用數(shù)千甚至上萬的微服務(wù)程序構(gòu)建成的復(fù)雜網(wǎng)狀模型。因此,分布式數(shù)據(jù)庫需要能夠滿足上層應(yīng)用的彈性擴(kuò)展、高并發(fā)、高吞吐量、與靈活敏捷的需求。而SequoiaDB在這些方面都有著出色的表現(xiàn),包括:
完整的ACID支持,事務(wù)和一致性保證;SQL的完整支持,傳統(tǒng)數(shù)據(jù)庫MySQL/PostgreSQL的語法完全兼容。分布式與擴(kuò)展性,應(yīng)對(duì)數(shù)據(jù)量的變化,實(shí)現(xiàn)存儲(chǔ)層和計(jì)算層的彈性擴(kuò)展;多模式訪問接口,支持多類型數(shù)據(jù)管理和多種模式的訪問接口; 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é)省超過30%,從而大大提升了對(duì)微服務(wù)的支持力度。
SequoiaDB,不僅僅是支持微服務(wù)而已
實(shí)際上,SequoiaDB 并不僅僅是微服務(wù)的“良師益友”,其更大維度下的定位是一款真正的金融級(jí)分布式關(guān)系型數(shù)據(jù)庫。
巨杉數(shù)據(jù)庫目前在企業(yè)級(jí)應(yīng)用場景主要包括分布式在線交易、數(shù)據(jù)中臺(tái)以及分布式內(nèi)容管理。
在線交易是數(shù)據(jù)庫最廣泛應(yīng)用的場景之一,通常用來支撐核心業(yè)務(wù)運(yùn)營。分布式在線交易數(shù)據(jù)庫核心業(yè)務(wù)價(jià)值包括,分布式架構(gòu)轉(zhuǎn)型,高并發(fā)、高處理能力,業(yè)務(wù)持續(xù)擴(kuò)展能力以及自主可控與數(shù)據(jù)安全要求。SequoiaDB存儲(chǔ)引擎采用原生分布式架構(gòu),擴(kuò)展便捷;完整支持分布式事務(wù)、強(qiáng)一致多副本高可用;無單點(diǎn)故障,數(shù)據(jù)庫引擎原生支持多中心容災(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ù),泛指傳統(tǒng)核心交易以外的所有對(duì)外服務(wù)業(yè)務(wù),基于SequoiaDB構(gòu)建的數(shù)據(jù)中臺(tái)核心業(yè)務(wù)價(jià)值包括:數(shù)據(jù)高性能實(shí)時(shí)訪問,海量數(shù)據(jù)全生命周期在線,業(yè)務(wù)持續(xù)擴(kuò)展能力。
內(nèi)容管理平臺(tái)為企業(yè)提供存儲(chǔ)、管理和使用海量非結(jié)構(gòu)化數(shù)據(jù)能力。常見應(yīng)用包括影像平臺(tái)、文檔管理平臺(tái)、音視頻雙錄系統(tǒng)等?;赟equoiaDB搭建的內(nèi)容管理平臺(tái)的核心業(yè)務(wù)價(jià)值包括,海量非結(jié)構(gòu)化數(shù)據(jù)管理和實(shí)時(shí)訪問,豐富的內(nèi)容管理功能,海量非結(jié)構(gòu)化數(shù)據(jù)全生命周期在線以及業(yè)務(wù)持續(xù)擴(kuò)展能力。
據(jù)悉,目前巨杉數(shù)據(jù)庫已在近百家大型商業(yè)銀行核心生產(chǎn)業(yè)務(wù)上線,并廣泛應(yīng)用于金融、電信、政府、互聯(lián)網(wǎng)、交通等領(lǐng)域,企業(yè)用戶總數(shù)超過1000家。同時(shí),巨杉也是中國首家連續(xù)兩年入選Gartner 數(shù)據(jù)庫報(bào)告的數(shù)據(jù)庫廠商。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/18028.html
摘要:那都是老一套了。已死已經(jīng)沒有人用了?,F(xiàn)在所有的一切都在容器化,它是未來。這是確保它可靠的唯一方式。我現(xiàn)在需要一個(gè)是的,為了穩(wěn)定性。我猜是規(guī)模的對(duì),沒錯(cuò)。我明白了,好吧,我懂了。那我來重復(fù)一遍確保我領(lǐng)悟了這些。 這是一篇在國外社區(qū)非?;鸬奈恼?。由CircleCI創(chuàng)始人所寫,追逐熱點(diǎn)新技術(shù)的程序員與只想做個(gè)簡單web應(yīng)用的程序員對(duì)話,Docker到底能否解決簡單小應(yīng)用的問題嗎?Herok...
摘要:兩個(gè)兄弟盒之間的豎直距離由屬性決定。即使存在浮動(dòng)盡管一個(gè)盒的行盒可能會(huì)因?yàn)楦?dòng)收縮,這也成立。它是塊級(jí)盒布局出現(xiàn)的區(qū)域,也是浮動(dòng)層元素進(jìn)行交互的區(qū)域。定位和清除浮動(dòng)的樣式規(guī)則只適用于處于同一塊格式化上下文內(nèi)的元素。 前言 在面試中,我們經(jīng)常會(huì)遇到一個(gè)常見的面試題,什么是BFC?于是我就去查閱了相關(guān)資料: css規(guī)范中是這樣描述BFC的 9.4.1 塊格式化上下文 浮動(dòng),絕對(duì)定位元素,...
摘要:是持續(xù)集成,而對(duì)應(yīng)多個(gè)英文,持續(xù)交付或持續(xù)部署。到底是什么這個(gè)詞,其實(shí)就是和兩個(gè)詞的組合。它的英文發(fā)音是,類似于迪沃普斯。根據(jù)年的調(diào)查發(fā)現(xiàn),的受訪者已經(jīng)接受了,而前一年這一比例為。的認(rèn)證目前最受歡迎的就是和。提到DevOps這個(gè)詞,我相信很多人一定不會(huì)陌生。作為一個(gè)熱門的概念,DevOps近年來頻頻出現(xiàn)在各大技術(shù)社區(qū)和媒體的文章中,備受行業(yè)大咖的追捧,也吸引了很多吃瓜群眾的圍觀。那么,Dev...
閱讀 948·2021-11-18 10:02
閱讀 1832·2019-08-30 15:56
閱讀 2626·2019-08-30 13:47
閱讀 2696·2019-08-29 12:43
閱讀 923·2019-08-29 11:19
閱讀 1859·2019-08-28 18:23
閱讀 2727·2019-08-26 12:23
閱讀 3081·2019-08-23 15:29