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