OceanBase是一種通用的分布式關(guān)系型數(shù)據(jù)庫,具有許多獨(dú)特的特點(diǎn)。比如多租戶,高可用性,極具彈性的擴(kuò)展能力等等。如果把OceanBase作為一個單獨(dú)的庫使用,那么它的分布式優(yōu)勢還沒有得到充分利用。本文著重介紹了一個基于分布式架構(gòu)的應(yīng)用程序,它充分利用了OceanBase數(shù)據(jù)庫的分布式優(yōu)勢,并提供給我們一個OceanBase基礎(chǔ),幫助我們更好地了解螞蟻金服建立在OceanBase之上的三地五中心異地多活架構(gòu)。下面就有小編為您帶來oceanbase基于什么開發(fā)的的相關(guān)介紹。
好的性能首先是設(shè)計(jì)出來的,應(yīng)用如果追求極致的性能,就需要關(guān)注OceanBase里數(shù)據(jù)的相關(guān)事情。如:
這些問題對理解OceanBase的分布式特點(diǎn)很有幫助。后面我們逐步看看OceanBase是如何應(yīng)對。
首先簡介一下OceanBase集群的外觀。
OceanBase是以集群形式運(yùn)行的,由一堆服務(wù)器組成。上圖是「三副本」部署,機(jī)器會分為三組,每組一個區(qū)域(稱為Zone),各個機(jī)器通過網(wǎng)絡(luò)互相訪問。沒有光纖交換機(jī)、共享存儲以及直連網(wǎng)線等。
服務(wù)器通常建議CPU、內(nèi)存和磁盤盡可能的大,磁盤建議用普通SSD盤。普通服務(wù)器的好處是便宜,劣勢是可靠性和性能可能不如小型機(jī)那么高。也就是說OceanBase可以部署在一組可靠性和性能不是特別高的普通服務(wù)器上,卻提供了高性能、高可用和高可靠、彈性伸縮等多項(xiàng)能力。
以上是一個OceanBase集群的外觀和能力,但是提供給業(yè)務(wù)的并不是這個集群的全部資源和能力,而是其子集,即租戶(Tenant)。
oceanbase
OceanBase定義了一些基本的資源規(guī)格(Resource unit config,如4CPU8Gmem500Gdisk等),然后選取某類資源規(guī)格創(chuàng)建一組資源池(Resource Pool),此時集群資源就有一部分被分配出去了。最后將這個資源池關(guān)聯(lián)到一個新建租戶,則租戶就可以使用這個資源池的能力。
OceanBase默認(rèn)有個sys租戶,管理整個集群。用戶租戶必須在sys租戶內(nèi)部創(chuàng)建。
如下示例就是創(chuàng)建租戶的過程。
OceanBase兼容了大部分MySQL連接協(xié)議和語法,租戶的使用體驗(yàn)跟MySQL實(shí)例很像。研 發(fā)可以在租戶里創(chuàng)建數(shù)據(jù)庫(Database)、表(Table)。還包括分區(qū)表等。
OceanBase里描述數(shù)據(jù)的最小粒度是分區(qū)。普通的表(非分區(qū)表)就是一個分區(qū),分區(qū)表則包含多個分區(qū)。
租戶的示意圖如下。租戶之間數(shù)據(jù)是絕對隔離,資源有一定程度隔離。研發(fā)可以將業(yè)務(wù)先垂直拆分為多個獨(dú)立的子業(yè)務(wù),分別使用不同的租戶或者集群。
租戶里并不知道數(shù)據(jù)具體在哪個機(jī)器上,也可以說沒必要知道。只是租戶的性能還取決于運(yùn)維為租戶規(guī)劃的資源池分布情況,所以了解一下資源單元的分布特點(diǎn)對性能規(guī)劃也是有意義的。
資源池(Resource Pool)是由一組資源單元(Resource Unit)組成。資源單元數(shù)量默認(rèn)跟Zone的數(shù)量一致或者是它的倍數(shù)(可以配置具體分布在哪些Zone以及每個Zone里的Unit數(shù)量)。
資源單元具備一定的資源能力,是數(shù)據(jù)的容器。租戶擁有的資源單元規(guī)格和數(shù)量決定了這個租戶最大性能。資源單元可以在同一個Zone的不同節(jié)點(diǎn)之間自由遷移,OceanBase借此來維持各個節(jié)點(diǎn)的資源利用率盡可能維持一個均衡狀態(tài)。
oceanbase
數(shù)據(jù)庫拆分
數(shù)據(jù)庫拆分有兩種。
一是垂直拆分。即按業(yè)務(wù)模塊拆分到不同的實(shí)例或庫里。為了模塊之間互不影響,拆分到不同的實(shí)例比較好。在OceanBase里實(shí)現(xiàn)時可以是拆分到同一個集群里不同租戶或者不同集群里的租戶都可以,取決于業(yè)務(wù)規(guī)模和數(shù)據(jù)庫集群規(guī)模。垂直拆分很好理解,后面不再贅述。
一是水平拆分。即按某個業(yè)務(wù)維度將數(shù)據(jù)拆分到多個分片。這些分片可以是在一個庫或者不同庫或者不同實(shí)例的不同庫下。水平拆分實(shí)現(xiàn)又有兩類常用的選擇。如下:
租戶分組的意義依然是為了在分布式架構(gòu)下盡可能將一個業(yè)務(wù)流程內(nèi)多次數(shù)據(jù)庫請求都約束在同一個Zone或者Region(注:OceanBase將地域相鄰的Zone定義為一個Region)里。
能使用這個解決方案的業(yè)務(wù)都是能按用戶維度做水平拆分。有些業(yè)務(wù)的拆分維度跟用戶維度是沖突的,或者有些業(yè)務(wù)的數(shù)據(jù)只支持集中寫入等,不能做到上面這種多活,但也可以使用OceanBase,實(shí)現(xiàn)單點(diǎn)寫入,多點(diǎn)讀取的功能。
OceanBase在異地容災(zāi)體系結(jié)構(gòu)和多活體系結(jié)構(gòu)中的價值在于,它支持水平分割規(guī)則的定義,解決了多個機(jī)房之間的數(shù)據(jù)同步和一致性問題,并始終提供高可用性和彈性擴(kuò)展等功能。 以上就是小編為您介紹的oceanbase基于什么開發(fā)的,希望對您有所幫助。
[免責(zé)聲明]
文章標(biāo)題: oceanbase是什么?oceanbase基于什么開發(fā)的?
文章內(nèi)容為網(wǎng)站編輯整理發(fā)布,僅供學(xué)習(xí)與參考,不代表本網(wǎng)站贊同其觀點(diǎn)和對其真實(shí)性負(fù)責(zé)。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時溝通。發(fā)送郵件至36dianping@36kr.com,我們會在3個工作日內(nèi)處理。