官术网_书友最值得收藏!

1.2.2 SequoiaDB的核心特性

SequoiaDB作為一款分布式數(shù)據(jù)庫(kù),可以為用戶帶來(lái)諸多價(jià)值。其具有以下核心特性:

● 高性能與無(wú)限彈性水平擴(kuò)展能力。

● 金融級(jí)安全特性:多數(shù)據(jù)中心間的容災(zāi)指標(biāo)RPO(復(fù)原點(diǎn)目標(biāo),Recovery Point Objective)為0。

● 分布式事務(wù)與ACID(Atomicity,Consistency,Isolation,Durability)能力。

● 完全兼容傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù),數(shù)據(jù)分片對(duì)應(yīng)用程序完全透明,同時(shí)支持結(jié)構(gòu)化、半結(jié)構(gòu)化與非結(jié)構(gòu)化數(shù)據(jù)。

● 支持聯(lián)機(jī)交易和分析混合負(fù)載,可互不干擾地同時(shí)運(yùn)行聯(lián)機(jī)交易與批處理任務(wù)。

● 多租戶能力:云環(huán)境下支持多種級(jí)別的物理與邏輯隔離。

1.彈性水平擴(kuò)展

作為一款分布式數(shù)據(jù)庫(kù),支持無(wú)限彈性水平擴(kuò)展是SequoiaDB的基本特性,其底層的分布式存儲(chǔ)引擎與上層的數(shù)據(jù)庫(kù)實(shí)例均支持這一特性。

SequoiaDB的數(shù)據(jù)庫(kù)實(shí)例均無(wú)狀態(tài)并使用TCP/IP對(duì)外提供服務(wù)。為了提升整體處理能力,用戶可以通過(guò)增加服務(wù)器數(shù)量或創(chuàng)建額外的數(shù)據(jù)庫(kù)實(shí)例來(lái)實(shí)現(xiàn)對(duì)應(yīng)用的彈性水平擴(kuò)展。

分布式存儲(chǔ)引擎內(nèi)部包含3種類型的節(jié)點(diǎn):協(xié)調(diào)節(jié)點(diǎn)、編目節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn)。

其中,協(xié)調(diào)節(jié)點(diǎn)主要作為數(shù)據(jù)請(qǐng)求的路由進(jìn)程,對(duì)來(lái)自上層數(shù)據(jù)庫(kù)實(shí)例的請(qǐng)求進(jìn)行分發(fā),并對(duì)數(shù)據(jù)節(jié)點(diǎn)返回的結(jié)果進(jìn)行匯總。每個(gè)協(xié)調(diào)節(jié)點(diǎn)均無(wú)狀態(tài),可以通過(guò)增加協(xié)調(diào)節(jié)點(diǎn)的數(shù)量提升數(shù)據(jù)路由層的處理能力。

編目節(jié)點(diǎn)默認(rèn)使用三副本機(jī)制,由于只有當(dāng)協(xié)調(diào)節(jié)點(diǎn)第一次訪問(wèn)某個(gè)表或集合時(shí)才需要讀取編目節(jié)點(diǎn),只有當(dāng)建表或更改集群拓?fù)浣Y(jié)構(gòu)時(shí)才需要寫入編目節(jié)點(diǎn),因此在正常生產(chǎn)環(huán)境中編目節(jié)點(diǎn)的訪問(wèn)量極低,基本不可能成為瓶頸。

數(shù)據(jù)節(jié)點(diǎn)則采用水平分片的方式對(duì)數(shù)據(jù)進(jìn)行橫向切分,用戶可以通過(guò)增加分區(qū)組或數(shù)據(jù)分片的方式,對(duì)數(shù)據(jù)引擎層的存儲(chǔ)進(jìn)行彈性水平擴(kuò)展。

2.高可用性與容災(zāi)

由于PC服務(wù)器內(nèi)置的物理磁盤不同于傳統(tǒng)小型機(jī)加存儲(chǔ)設(shè)備的架構(gòu),在PC服務(wù)器出現(xiàn)物理故障時(shí)無(wú)法保障存儲(chǔ)在本地磁盤的數(shù)據(jù)不丟、不壞,因此所有基于PC服務(wù)器內(nèi)置磁盤架構(gòu)的數(shù)據(jù)庫(kù)必須采用多副本機(jī)制,以保障數(shù)據(jù)庫(kù)的高可用性與容災(zāi)機(jī)制。SequoiaDB通過(guò)下述5項(xiàng)技術(shù)實(shí)現(xiàn)高可用性與容災(zāi)機(jī)制。

● 數(shù)據(jù)庫(kù)實(shí)例:由于數(shù)據(jù)庫(kù)實(shí)例進(jìn)程均為無(wú)狀態(tài)節(jié)點(diǎn),因此同樣配置的數(shù)據(jù)庫(kù)實(shí)例進(jìn)程可以互為高可用冗余。不論創(chuàng)建的是MySQL、PostgreSQL還是S3實(shí)例,每個(gè)實(shí)例對(duì)外均可暴露一個(gè)或多個(gè)接入地址(IP地址+端口號(hào))。應(yīng)用程序連接到任意一個(gè)接入地址時(shí)均可向數(shù)據(jù)庫(kù)實(shí)例進(jìn)行數(shù)據(jù)讀/寫操作,且能保證多個(gè)接入地址之間的數(shù)據(jù)一致性。用戶只要為每個(gè)實(shí)例的多個(gè)接入地址前置一個(gè)類似Nginx或F5的高可用負(fù)載均衡設(shè)備,即可輕易實(shí)現(xiàn)多個(gè)接入地址的高可用冗余。

● 協(xié)調(diào)節(jié)點(diǎn):作為數(shù)據(jù)庫(kù)存儲(chǔ)引擎的路由節(jié)點(diǎn),由于協(xié)調(diào)節(jié)點(diǎn)自身無(wú)狀態(tài),因此所有協(xié)調(diào)節(jié)點(diǎn)均可以完全對(duì)等配置,對(duì)上層應(yīng)用程序或計(jì)算引擎做到高可用。應(yīng)用程序既可以通過(guò)上層數(shù)據(jù)庫(kù)實(shí)例訪問(wèn)數(shù)據(jù),也可直接對(duì)數(shù)據(jù)庫(kù)存儲(chǔ)引擎進(jìn)行API訪問(wèn)。當(dāng)應(yīng)用程序直接連接到協(xié)調(diào)節(jié)點(diǎn)進(jìn)行API操作時(shí),應(yīng)用可以通過(guò)SequoiaDB客戶端連接池配置多個(gè)IP地址與端口號(hào),實(shí)現(xiàn)高可用配置。如果應(yīng)用通過(guò)上層數(shù)據(jù)庫(kù)實(shí)例進(jìn)行訪問(wèn),則所有數(shù)據(jù)庫(kù)實(shí)例均支持多個(gè)接入地址的高可用的配置方式。

● 編目節(jié)點(diǎn):編目節(jié)點(diǎn)作為數(shù)據(jù)字典,維護(hù)著SequoiaDB存儲(chǔ)引擎的拓?fù)浣Y(jié)構(gòu)、安全策略、表與集合定義及分片規(guī)則等一系列信息。在SequoiaDB的集群配置中,編目節(jié)點(diǎn)以一個(gè)獨(dú)立復(fù)制組的方式存在,默認(rèn)使用三副本強(qiáng)一致同步策略。在任何一個(gè)節(jié)點(diǎn)發(fā)生故障時(shí),均可將服務(wù)實(shí)時(shí)漂移到其他的對(duì)等節(jié)點(diǎn)中。

● 數(shù)據(jù)節(jié)點(diǎn):SequoiaDB中保存的用戶數(shù)據(jù)由數(shù)據(jù)節(jié)點(diǎn)進(jìn)行存放與讀取。在集群部署環(huán)境中,每個(gè)數(shù)據(jù)復(fù)制組均會(huì)默認(rèn)使用三副本機(jī)制進(jìn)行數(shù)據(jù)存放。在數(shù)據(jù)復(fù)制組中,如果任何一個(gè)數(shù)據(jù)節(jié)點(diǎn)進(jìn)程發(fā)生故障,則該復(fù)制組內(nèi)的其他節(jié)點(diǎn)將會(huì)實(shí)時(shí)接管其服務(wù)。具體來(lái)說(shuō),如果發(fā)生故障的節(jié)點(diǎn)為該復(fù)制組內(nèi)的主節(jié)點(diǎn),則其余從節(jié)點(diǎn)將會(huì)在檢測(cè)到節(jié)點(diǎn)間的心跳中斷后發(fā)起投票請(qǐng)求,并使用Raft協(xié)議選舉出新的主節(jié)點(diǎn);而如果發(fā)生故障的是從節(jié)點(diǎn),則協(xié)調(diào)節(jié)點(diǎn)檢測(cè)到節(jié)點(diǎn)間的心跳中斷后,會(huì)將該數(shù)據(jù)節(jié)點(diǎn)存在的會(huì)話轉(zhuǎn)移至其余數(shù)據(jù)節(jié)點(diǎn),以盡可能對(duì)應(yīng)用程序保持透明。

● 異地容災(zāi):在傳統(tǒng)多節(jié)點(diǎn)投票選舉機(jī)制中,為了確保復(fù)制組內(nèi)的節(jié)點(diǎn)不會(huì)發(fā)生“腦裂”問(wèn)題,集群必須在確保超半數(shù)節(jié)點(diǎn)存活且達(dá)成投票共識(shí)后,才能讓其中一個(gè)數(shù)據(jù)節(jié)點(diǎn)或編目節(jié)點(diǎn)當(dāng)選為主節(jié)點(diǎn),以提供讀/寫服務(wù)。但是在同城雙中心或類似的環(huán)境下,用戶很難保證在任何一個(gè)中心整體發(fā)生故障時(shí),整個(gè)集群的所有復(fù)制組中依然會(huì)有超過(guò)半數(shù)的節(jié)點(diǎn)存活。因此,SequoiaDB通過(guò)集群分裂與歸并功能,在同城雙中心的環(huán)境中進(jìn)行秒級(jí)集群分裂,將原本處于兩個(gè)數(shù)據(jù)中心的單集群分裂為兩個(gè)獨(dú)立部署的集群,以保證存活數(shù)據(jù)中心內(nèi)的數(shù)據(jù)服務(wù)能夠以秒級(jí)啟動(dòng),并在提供完整數(shù)據(jù)庫(kù)讀/寫服務(wù)的同時(shí)確保交易數(shù)據(jù)的穩(wěn)定可靠,從而實(shí)現(xiàn)秒級(jí)RTO(復(fù)原時(shí)間目標(biāo),Recovery Time Objective)與RPO為0。

3.分布式事務(wù)

SequoiaDB支持強(qiáng)一致分布式事務(wù)功能。利用二段提交機(jī)制,SequoiaDB在分布式存儲(chǔ)引擎上實(shí)現(xiàn)了對(duì)結(jié)構(gòu)化與半結(jié)構(gòu)化數(shù)據(jù)的強(qiáng)一致分布式事務(wù)功能,不論用戶創(chuàng)建哪種數(shù)據(jù)庫(kù)實(shí)例,其底層均可提供完整的分布式事務(wù)及鎖能力。SequoiaDB完整支持4種隔離級(jí)別,同時(shí)支持讀/寫鎖等待及讀已提交版本機(jī)制。

4.多模式接口

SequoiaDB通過(guò)數(shù)據(jù)庫(kù)實(shí)例的形式提供多種關(guān)系型及非關(guān)系型數(shù)據(jù)庫(kù)兼容引擎,支持結(jié)構(gòu)化、半結(jié)構(gòu)化及非結(jié)構(gòu)化數(shù)據(jù)。SequoiaDB在當(dāng)前版本中支持MySQL、MariaDB、PostgreSQL及SparkSQL這4種關(guān)系型數(shù)據(jù)庫(kù)引擎,同時(shí)支持MongoDB的JSON操作,以及S3非結(jié)構(gòu)化數(shù)據(jù)引擎。

使用多模式接口機(jī)制,用戶可以讓SequoiaDB服務(wù)于任何類型的應(yīng)用程序,真正做到分布式數(shù)據(jù)庫(kù)的平臺(tái)化服務(wù)。

5.聯(lián)機(jī)交易和分析混合負(fù)載

一般來(lái)說(shuō),聯(lián)機(jī)交易和分析混合負(fù)載意味著數(shù)據(jù)庫(kù)既可以運(yùn)行OLTP(在線事務(wù)處理,Online Transactional Processing)來(lái)實(shí)現(xiàn)聯(lián)機(jī)交易,也可以運(yùn)行OLAP(在線分析處理,Online Analytical Processing)來(lái)統(tǒng)計(jì)分析業(yè)務(wù)。但是,當(dāng)用戶想要在同一個(gè)數(shù)據(jù)庫(kù)中針對(duì)相同數(shù)據(jù)在同一時(shí)刻運(yùn)行兩種不同類型的業(yè)務(wù)時(shí),往往會(huì)形成較多數(shù)據(jù)庫(kù)服務(wù)器中CPU、內(nèi)存、I/O和網(wǎng)絡(luò)等硬件資源的爭(zhēng)用,導(dǎo)致對(duì)外的聯(lián)機(jī)交易服務(wù)的性能與穩(wěn)定性受到影響。

在SequoiaDB中,用戶可以針對(duì)復(fù)制組的多副本,在節(jié)點(diǎn)和會(huì)話等多個(gè)級(jí)別上指定讀/寫分離策略,同時(shí)可以通過(guò)創(chuàng)建數(shù)據(jù)共享但類型不同的數(shù)據(jù)庫(kù)實(shí)例(比如MySQL實(shí)例與SparkSQL實(shí)例),使其分別服務(wù)于聯(lián)機(jī)交易業(yè)務(wù)與統(tǒng)計(jì)分析業(yè)務(wù),以實(shí)現(xiàn)針對(duì)相同數(shù)據(jù)的聯(lián)機(jī)交易與統(tǒng)計(jì)分析業(yè)務(wù)同時(shí)運(yùn)行,且互不干擾。

6.多租戶隔離

在應(yīng)用程序微服務(wù)化的今天,分布式數(shù)據(jù)庫(kù)存在的價(jià)值不僅在于解決單點(diǎn)數(shù)據(jù)量大的問(wèn)題,更在于它能以一種平臺(tái)化(PaaS)的形式,同時(shí)為上層大量的應(yīng)用與微服務(wù)提供數(shù)據(jù)訪問(wèn)能力。在這種情況下,在不同微服務(wù)之間實(shí)現(xiàn)底層數(shù)據(jù)的邏輯與物理隔離,是保障云環(huán)境中分布式數(shù)據(jù)庫(kù)安全、可靠和性能穩(wěn)定的前提。

在SequoiaDB中,數(shù)據(jù)域可以用于在復(fù)雜集群環(huán)境中,對(duì)資源進(jìn)行邏輯與物理的劃分隔離。例如,在交易型應(yīng)用中,核心賬務(wù)類業(yè)務(wù)與后督(事后監(jiān)督)類業(yè)務(wù)的物理資源往往需要完全隔離,以確保在任何情況下審計(jì)類業(yè)務(wù)的復(fù)雜壓力均不會(huì)影響到核心賬務(wù)系統(tǒng)的穩(wěn)定運(yùn)行。此外,不同數(shù)據(jù)域之間的數(shù)據(jù)安全性配置、硬件資源環(huán)境等往往也不盡相同。

通過(guò)數(shù)據(jù)域、聯(lián)機(jī)交易和分析混合負(fù)載、多模式接口、水平彈性擴(kuò)展等多種機(jī)制,SequoiaDB能夠保障應(yīng)用程序在云環(huán)境下的多租戶隔離。

總體來(lái)看,作為一款新一代金融級(jí)分布式數(shù)據(jù)庫(kù),SequoiaDB除了與MySQL、PostgreSQL等多種傳統(tǒng)數(shù)據(jù)庫(kù)高度兼容,還在水平擴(kuò)展、數(shù)據(jù)安全、分布式事務(wù)、多模式接口、混合負(fù)載及多租戶隔離等方面有著自身的獨(dú)特優(yōu)勢(shì)。

主站蜘蛛池模板: 兰州市| 丹棱县| 洞头县| 刚察县| 丹棱县| 友谊县| 南乐县| 巩留县| 赤壁市| 蓝山县| 札达县| 莆田市| 隆子县| 长治市| 泰安市| 九寨沟县| 梨树县| 剑川县| 榆树市| 天门市| 邵东县| 抚顺市| 昭苏县| 阿拉善左旗| 磐石市| 汉源县| 深水埗区| 日喀则市| 四会市| 辽宁省| 正阳县| 长春市| 白玉县| 鲜城| 靖西县| 灯塔市| 安福县| 安塞县| 肥东县| 崇州市| 东乌珠穆沁旗|