OceanBase
官方介紹
OceanBase是一款阿里巴巴自主研發(fā)的高性能、分布式的關系型數(shù)據(jù)庫多艇,支持完整的ACID特性。
它高度兼容MySQL協(xié)議與語法,讓用戶能夠以最小的遷移成本使用高性能醉者、可擴展、持續(xù)可用的分布式數(shù)據(jù)庫服務披诗,同時對用戶數(shù)據(jù)提供金融級可靠性的保障撬即。
產(chǎn)品定位
- 定位金融領域的數(shù)據(jù)庫
- 目前提供云數(shù)據(jù)庫服務(類似RDS)
發(fā)展歷程
- 2010 開始設計
- 2011 淘寶收藏夾
- 2015 雙11全量
架構(gòu) & 設計
設計考慮:
通過分析發(fā)現(xiàn),雖然淘寶在線業(yè)務的數(shù)據(jù)量十分龐大呈队,但最近一段時間(例如一天)的修改量往往不多剥槐。
因此,OceanBase決定采用單臺更新服務器來記錄最近一段時間的修改增量宪摧,而以前的數(shù)據(jù)保持不變粒竖,稱為基準數(shù)據(jù)。
基準數(shù)據(jù)以類似分布式文件系統(tǒng)的方式存儲于多臺基準數(shù)據(jù)服務器中几于,每次查詢都需要把基準數(shù)據(jù)和增量數(shù)據(jù)融合后返回給客戶端蕊苗。這樣,寫事務都集中在單臺更新服務器上沿彭,避免了復雜的分布式事務朽砰,高效地實現(xiàn)了跨行跨表事務;
另外,更新服務器上的修改增量能夠定期分發(fā)到多臺基準數(shù)據(jù)服務器中瞧柔,避免成為瓶頸漆弄,實現(xiàn)了良好的擴展性。
- RootServer:(存放元數(shù)據(jù))管理集群中的服務器造锅,tablat數(shù)據(jù)分布及副本管理撼唾。
- UpdateServer:存儲增量更新數(shù)據(jù),往往和RootServer公用一臺物理服務器备绽。(只放在內(nèi)存)
- ChunkServer:存儲基準數(shù)據(jù)券坞,基準數(shù)據(jù)有多個副本(類似Hadoop)(SSD存放)
- MergeServer:接受客戶端請求,合并UpdataServer和ChunkServer的數(shù)據(jù)返回給客戶端肺素,并定期把UpdateServer上的數(shù)據(jù)合并到ChunkServer上恨锚。
架構(gòu)圖
OB特點與實踐經(jīng)驗
- 號稱0丟失,認為是去Oracle最為關鍵的地方
- 多數(shù)派寫倍靡,paxos
- 不可用時間為35秒猴伶,及Fail Over時間為35秒
- 成本低于Oracle
- 第一個用于金融業(yè)務的非商業(yè)數(shù)據(jù)庫
- 金融數(shù)據(jù)庫特點:
- 高可用
- IDC容災
- 數(shù)據(jù)強一致
- ACID
- 復雜SQL
- 高性能
- 可擴展
- 可灰度切流
- 去O最佳實踐
- 中間件來兼容Oracle的SQL
- 具備類似SQL審核的功能
- 故障模擬器,模擬常見故障塌西,做好預案
- 數(shù)據(jù)一致性
- 上下業(yè)務關聯(lián)對賬
- 小時級別對賬 ODPS
- 應急方案:切流到Oracle
- 性能優(yōu)化
- 業(yè)務
- 按需加載他挎,減少SQL
- 熱點數(shù)據(jù)模型優(yōu)化
- OB
- UPS并發(fā)提交
- 鏈路獲取策略
- Memcpy優(yōu)化
- 響應時間,ms級別
- 雙11
- 各種預案
- 各種演練
架構(gòu)分析
以下都為網(wǎng)絡引用
- 從上面可以看出捡需,OceanBase融合了分布式存儲系統(tǒng)和關系數(shù)據(jù)庫這兩種技術(shù)办桨。
- 通過分布式存儲技術(shù)將基準數(shù)據(jù)分布到多臺ChunkServer,實現(xiàn)數(shù)據(jù)復制站辉、負載均衡呢撞、服務器故障檢測與自動容錯,等等饰剥;
- UpdateServer相當于一個高性能的內(nèi)存數(shù)據(jù)庫殊霞,底層采用關系數(shù)據(jù)庫技術(shù)實現(xiàn)。
- OceanBase相當于GFS + MemSQL汰蓉,ChunkServer的實現(xiàn)類似GFS绷蹲,UpdateServer的實現(xiàn)類似MemSQL,目標是成為可擴展的顾孽、支持每秒百萬級跨行跨表事務操作的分布式數(shù)據(jù)庫祝钢。
- OceanBase最大的亮點在于把寫集中到一個單點UpdateServer,這樣的好處是可以讓一致性和可用性兼得若厚,實現(xiàn)跨行跨表事務太颤,壞處是UpdateServer單點性能有可能成為瓶頸,因此它的配置要非常非高(大內(nèi)存+SSD+存儲Cache)盹沈。