2023-12-13 TBase初介紹

第一部分 TBase產(chǎn)品功能及架構(gòu)原理

一、TBase概述

1、TBase是騰訊云數(shù)據(jù)庫(kù)團(tuán)隊(duì)自研的HTAP分布式數(shù)據(jù)庫(kù)系統(tǒng),其中,HTAP表示數(shù)據(jù)庫(kù)集群同時(shí)具備OLAP和OLTP能力。
2、TBase的相關(guān)特性:
①分布式數(shù)據(jù)庫(kù);
②支持分布式事務(wù);
③兼容PostgreSQL協(xié)議;
④跨節(jié)點(diǎn)復(fù)雜查詢;
⑤面向OLTP應(yīng)用;
⑥寫可擴(kuò)展(Write-scalable);
⑦分布式存儲(chǔ)(Shared-nothing);
多主節(jié)點(diǎn)(Multi-master):集群在一個(gè)節(jié)點(diǎn)上的更新操作,會(huì)立即呈現(xiàn)到另一個(gè)數(shù)據(jù)庫(kù)中;多個(gè)節(jié)點(diǎn)都可以提供完整一致的數(shù)據(jù)庫(kù)視圖;
⑨數(shù)據(jù)透明(Transparent)。
3、SQL兼容度
(1)兼容PostgreSQL語(yǔ)法;
(2)企業(yè)級(jí)數(shù)據(jù)庫(kù)語(yǔ)法支持:
①支持存儲(chǔ)過(guò)程、觸發(fā)器、自定義函數(shù)、視圖、物化視圖、游標(biāo)、全局序列、窗口函數(shù)、遞歸cte、全局分布式事務(wù)、分布式j(luò)oin。原生支持整數(shù)、浮點(diǎn)數(shù)、字符。
②支持time、date、datetime、bytea(二進(jìn)制)、Json、Jsonb、XML、uuid、GIS(幾何類型點(diǎn)、線、面),復(fù)合,范圍以及全文搜索等數(shù)據(jù)類型,支持自定義數(shù)據(jù)類型。

二、TBase架構(gòu)

TBase架構(gòu)圖

TBase采用分布式集群架構(gòu)(如上圖),該架構(gòu)分布式無(wú)共享(share nothing)模式,節(jié)點(diǎn)之間相互獨(dú)立,各自處理自己的數(shù)據(jù),處理后的結(jié)果可以向上層匯總或在節(jié)點(diǎn)間流轉(zhuǎn),各處理單元之間通過(guò)網(wǎng)絡(luò)協(xié)議進(jìn)行通信,并行處理和擴(kuò)展能力更好。

1、Coordinator

Coordinator(CN):協(xié)調(diào)節(jié)點(diǎn),對(duì)外提供接口,負(fù)責(zé)數(shù)據(jù)的分發(fā)和查詢規(guī)劃,多個(gè)節(jié)點(diǎn)位置對(duì)等,每個(gè)節(jié)點(diǎn)都提供相同的數(shù)據(jù)庫(kù)視圖;在功能上CN只存儲(chǔ)系統(tǒng)的全局元數(shù)據(jù),并不存儲(chǔ)實(shí)際的業(yè)務(wù)數(shù)據(jù)。

2、Data Node

Data Node(DN):數(shù)據(jù)節(jié)點(diǎn),執(zhí)行CN分發(fā)的執(zhí)行請(qǐng)求,存儲(chǔ)實(shí)際業(yè)務(wù)數(shù)據(jù)。DN節(jié)點(diǎn)存儲(chǔ)空間彼此獨(dú)立隔離,是標(biāo)準(zhǔn)的share nothing結(jié)構(gòu)。

3、GTM

GTM:全局事務(wù)管理器(Global Transaction Manager),負(fù)責(zé)管理集群事務(wù)信息,不存儲(chǔ)業(yè)務(wù)數(shù)據(jù);負(fù)責(zé)生成嚴(yán)格遞增的時(shí)間戳,用于保證全局一致性分布式事務(wù)。

CN&DN&GTM操作流程示例圖

  • Step1:業(yè)務(wù)發(fā)送請(qǐng)求到CN節(jié)點(diǎn),CN節(jié)點(diǎn)向GTM請(qǐng)求事務(wù)信息;
  • Step2:CN發(fā)送SQL語(yǔ)句和事務(wù)信息到DN;
  • Step3:DN執(zhí)行完SQL后返回結(jié)果給CN;
  • Step4:CN收集DN的結(jié)果并匯總后返回給業(yè)務(wù)。

4、OSS

OSS系統(tǒng)是TBase分布式數(shù)據(jù)庫(kù)系統(tǒng)配套使用的平臺(tái)管理系統(tǒng),集租戶管理、服務(wù)器資源管理、項(xiàng)目管理、監(jiān)控運(yùn)維管理。其中,租戶管理、服務(wù)器資源管理、項(xiàng)目管理是實(shí)現(xiàn)多租戶管理配套組件;監(jiān)控運(yùn)維系統(tǒng)設(shè)計(jì)的主要目的是監(jiān)控和維護(hù)TBase數(shù)據(jù)庫(kù),包括指標(biāo)實(shí)時(shí)監(jiān)控、告警,部分故障自動(dòng)修復(fù),在線擴(kuò)容,數(shù)據(jù)搬遷等功能,與TBase數(shù)據(jù)庫(kù)組成一套完整的體系,形成一個(gè)高效、穩(wěn)定、可靠的分布式數(shù)據(jù)庫(kù)系統(tǒng)。

5、Confdb

Confdb是一個(gè)單機(jī)版Postgresql數(shù)據(jù)庫(kù),采用主備高可用運(yùn)行方式,主備節(jié)點(diǎn)部署在集群中的兩部主機(jī)上面。Confdb記錄當(dāng)前OSS管理下的所有信息,如有哪些租戶、哪些機(jī)器、哪些實(shí)例、實(shí)例的各種狀態(tài)信息、當(dāng)前任務(wù)、任務(wù)進(jìn)度等內(nèi)容。
Confdb的內(nèi)容非常重要,當(dāng)OSS重啟時(shí),Center需要依賴Confdb中的元數(shù)據(jù)信息恢復(fù)當(dāng)前實(shí)例情況、資源分配情況、任務(wù)進(jìn)度情況等。
當(dāng)需要手動(dòng)修改Confdb內(nèi)容時(shí),須提前做好備份。多個(gè)集群可以共用一個(gè)Confdb實(shí)例,每個(gè)集群對(duì)應(yīng)該實(shí)例下的一個(gè)指標(biāo)Database。
(1)安裝路徑:

/data/home/tbase/confdb/postgres
/data/tbase/confdb/postgres  #3100新版路徑

(2)日志:

/data/home/tbase/confdb/postgres/pg_log

(3)默認(rèn)端口:54321
(4)服務(wù)管理

sh tbase_mgr.sh start Confdb #啟動(dòng)
sh tbase_mgr.sh stop Confdb #停止
sh tbase_mgr.sh restart Confdb #重啟
sh tbase_mgr.sh status Confdb #查詢服務(wù)狀態(tài)

(5)連接Confdb

psql -h 10.10.12.40 -p 54321 -U postgres -d postgres #password:postgres
\dt+ #查詢所有表
select * from tbl_oss_center_switch;
select * from tbl_oss_db_switch_info; #查看切換詳情
select * from tbl_oss_backup_global_conf; #查看備份配置
select * from tbl_oss_backup_inf; #查看備份詳情
select * from tbl_oss_config_param; #查看全局配置
select * from tbl_oss_idc_info; #查看IDC信息;
select * from tbl_oss_node_name; #節(jié)點(diǎn)名稱
select * from tbl_oss_node_status; #節(jié)點(diǎn)狀態(tài)
select * from tbl_oss_node; #節(jié)點(diǎn)詳情
select * from tbl_oss_server; #服務(wù)器列表
select * from tbl_oss_sys_info; #版本信息
select *  from tbl_oss_task_info; #任務(wù)信息

6、Center

Center是OSS的決策中心,設(shè)計(jì)為一主多備。備Center僅負(fù)責(zé)存儲(chǔ)實(shí)例狀態(tài)等信息,用于主Center在需要的時(shí)候進(jìn)行校驗(yàn)。
通常Center只負(fù)責(zé)發(fā)起任務(wù)、監(jiān)控任務(wù)進(jìn)度,而具體任務(wù)的執(zhí)行會(huì)由對(duì)應(yīng)的agent完成。
(1)Center的作用:

  • 負(fù)責(zé)接受cgi的命令,并進(jìn)行相應(yīng)處理。如申請(qǐng)、初始化、回收、升級(jí)、重啟等命令;
  • 負(fù)責(zé)管理所有機(jī)器資源,管理各實(shí)例的資源消耗,負(fù)責(zé)收集agent上報(bào)的所有實(shí)例信息,并向confdb上報(bào);
  • 負(fù)責(zé)裁決是否發(fā)起主備切換。當(dāng)主備Center都正常時(shí),才能發(fā)起主備切換;
  • 負(fù)責(zé)發(fā)起全量備份。
    (2)安裝路徑:
/data/home/tbase/install/tbase_oss/

(3)端口:

  • Center服務(wù)默認(rèn)的端口是8118;
  • CGI的默認(rèn)port為8080。
    (4)日志:
/data/tbase/install/tbase_oss/tools/op

(5)服務(wù)管理:

cd /data/home/tbase/install/tbase_oss/tools/op
bash start.sh #啟動(dòng)
bash stop.sh #停止
bash status.sh #查看狀態(tài)

(6)配置文件:

/data/home/tbase/install/tbase_oss/config/tbase_oss_conf.ini

注意:配置CenterMaster和CenterSlave的IP地址和PORT,CGI的IP地址和PORT,Center連接,Confdb的參數(shù)也在這里配置。

7、Agent

Agent是OSS具體任務(wù)的執(zhí)行者。在每臺(tái)物理機(jī)上都部署一個(gè)Agent(僅一個(gè))。
具體操作實(shí)例的任務(wù)都需要由Agent來(lái)完成,如初始化、備份、重啟、升級(jí)、回收、監(jiān)控信息上報(bào)等。
(1)Agent的作用:

  • 負(fù)責(zé)完成Center通知的任務(wù),并回復(fù)Center任務(wù)進(jìn)度;
  • 負(fù)責(zé)監(jiān)控Center通知監(jiān)控的實(shí)例,并實(shí)時(shí)上報(bào)Center具體實(shí)例狀態(tài)情況;
  • 負(fù)責(zé)收集實(shí)例監(jiān)控?cái)?shù)據(jù)(CPU、磁盤等消耗),并上報(bào)給監(jiān)控平臺(tái);
  • 負(fù)責(zé)當(dāng)實(shí)例異常時(shí),對(duì)實(shí)例進(jìn)行自動(dòng)拉起。
    (2)安裝路徑:
/data/home/tbase/install/tbase_oss/

(3)配置文件路徑:

/data/home/tbase/install/tbase_oss/config/

(4)日志:

/data/tbase/install/tbase_oss/logs

(5)服務(wù)管理:

cd data/home/tbase/install/tbase_oss/tools/op
bash start.sh #啟動(dòng)
bash stop.sh #停止
bash status.sh #查看狀態(tài)

三、TBase分布式事務(wù)全局一致性

1、引入全局事務(wù)管理節(jié)點(diǎn)(GTM,Global Transaction Manager)專門處理分布式事務(wù)一致性。
2、自主專利的分布式事務(wù)一致性技術(shù),包括:兩階段提交(Two Phase Commit)和全局時(shí)鐘(Global Timestamp)策略。
3、對(duì)GTM效率和系統(tǒng)處理效率的優(yōu)化:
①網(wǎng)絡(luò)帶寬優(yōu)化,取消系統(tǒng)集群快照,改為邏輯時(shí)鐘來(lái)判斷事務(wù)的集群可見性,大幅減少對(duì)GTM的網(wǎng)絡(luò)帶寬占用,降低GTM的CPU占用;
②使用免鎖隊(duì)列取代原來(lái)的帶鎖隊(duì)列,減少系統(tǒng)的鎖使用;
編寫用戶態(tài)的互斥鎖,使得CPU使用率只有原系統(tǒng)互斥鎖的1/10,提升系統(tǒng)處理能力上限;
④通過(guò)線程資源復(fù)用的方式大大減少GTM的線程數(shù)據(jù),減少系統(tǒng)調(diào)度CPU占用率。

四、TBase在線擴(kuò)容能力

1、常規(guī)hash分表方式 VS TBase分表方式
(1)常規(guī)hash分表方式:

DN = Hash(row) % nofdn #nofdn即data node數(shù)量

存在的問(wèn)題:當(dāng)擴(kuò)容后,節(jié)點(diǎn)數(shù)變多,每一行數(shù)據(jù)再對(duì)新的節(jié)點(diǎn)數(shù)取模時(shí),數(shù)據(jù)的存儲(chǔ)位置會(huì)與以前的值完全不同;此時(shí),需要停止業(yè)務(wù),將數(shù)據(jù)全部導(dǎo)出,擴(kuò)容后再重新導(dǎo)入,造成業(yè)務(wù)中斷時(shí)間較長(zhǎng)。
(2)TBase引入的sharded table分表方法:
①引入中間層shard map,其中每一項(xiàng)存儲(chǔ)邏輯地址(shardid)和物理地址(DN)映射關(guān)系;
②sharded table中的每條記錄通過(guò)Hash(row) % #shardmap entry決定存儲(chǔ)位置。當(dāng)集群進(jìn)行擴(kuò)容時(shí),總的服務(wù)器物理節(jié)點(diǎn)數(shù)增加了,但是總的shardid沒有變化,所以只要將shardmap中的shardid映射到新加的節(jié)點(diǎn)上,再把對(duì)應(yīng)的數(shù)據(jù)搬遷過(guò)去即可(shardmap對(duì)映射關(guān)系的切換);
③每個(gè)DN上分別存儲(chǔ)被分配到本節(jié)點(diǎn)的shardid的信息,進(jìn)而進(jìn)行可見性的判斷。

TBase引入的shardid table分表方法示例圖

五、TBase多級(jí)容災(zāi)能力保證

1、支持故障自動(dòng)轉(zhuǎn)移:

  • 主節(jié)點(diǎn)故障,系統(tǒng)自動(dòng)從對(duì)應(yīng)的從節(jié)點(diǎn)中選出新的主節(jié)點(diǎn),故障節(jié)點(diǎn)自動(dòng)隔離;
  • 主從切換保證數(shù)據(jù)完全一致,滿足金融及數(shù)據(jù)一致性要求;
  • 主從切換過(guò)程對(duì)用戶透明,且全程不修改IP地址。
    2、跨可用區(qū)部署:
  • 節(jié)點(diǎn)的主機(jī)和從機(jī)可分處不同機(jī)房,通過(guò)專線網(wǎng)絡(luò)實(shí)時(shí)復(fù)制。
    3、可設(shè)置禁止切換:
  • 即可以設(shè)置在某一特殊時(shí)期,不處理故障轉(zhuǎn)移。
    4、故障恢復(fù):
  • 故障節(jié)點(diǎn)可通過(guò)重做備機(jī)恢復(fù);
  • 可以選擇新物理節(jié)點(diǎn)添加備機(jī);
    5、主從多副本:
  • 每組1主N從節(jié)點(diǎn)中每個(gè)節(jié)點(diǎn)都包含完整的數(shù)據(jù)副本,可以根據(jù)需求切換;
  • 通過(guò)強(qiáng)同步方式(主從節(jié)點(diǎn)均修改完成)進(jìn)行數(shù)據(jù)的同步。
    6、支持全量備份和數(shù)據(jù)庫(kù)日志備份:
  • 全量備份包括數(shù)據(jù)庫(kù)某一時(shí)間的全部數(shù)據(jù);
  • 數(shù)據(jù)庫(kù)日志備份包括數(shù)據(jù)庫(kù)每時(shí)每刻的增量數(shù)據(jù)。

六、TBase數(shù)據(jù)安全保障能力

1、TBase采用“三權(quán)分立”體系,將傳統(tǒng)數(shù)據(jù)庫(kù)的DBA角色分解為安全管理員、審計(jì)管理員、數(shù)據(jù)管理員3個(gè)相互獨(dú)立的角色。
2、TBase的安全策略:
(1)策略1:數(shù)據(jù)加密

  • 業(yè)務(wù)側(cè)加密;
  • 使用TBase內(nèi)置加密功能,在加密力度上支持列級(jí)加密和文件加密。
    (2)策略2:數(shù)據(jù)脫敏訪問(wèn)。
    (3)策略3:強(qiáng)制訪問(wèn)控制
    -TBase定義層級(jí)、部分和組織3個(gè)維度來(lái)描述復(fù)雜的組織關(guān)系,其中,層級(jí)為縱向控制;部門為橫向控制;組織為樹狀結(jié)構(gòu),總節(jié)點(diǎn)可以訪問(wèn)下面各個(gè)節(jié)點(diǎn)的數(shù)據(jù)。
    TBase數(shù)據(jù)安全保障能力結(jié)構(gòu)圖

備注:以上內(nèi)容主要來(lái)自騰訊云課堂相關(guān)課程內(nèi)容。

上一篇:2023-12-12 TDSQL初介紹
下一篇:2023-12-14 TCE之Redis初介紹

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容