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

TBase采用分布式集群架構(gòu)(如上圖),該架構(gòu)分布式無共享(share nothing)模式,節(jié)點之間相互獨立,各自處理自己的數(shù)據(jù),處理后的結(jié)果可以向上層匯總或在節(jié)點間流轉(zhuǎn),各處理單元之間通過網(wǎng)絡協(xié)議進行通信,并行處理和擴展能力更好。
1、Coordinator
Coordinator(CN):協(xié)調(diào)節(jié)點,對外提供接口,負責數(shù)據(jù)的分發(fā)和查詢規(guī)劃,多個節(jié)點位置對等,每個節(jié)點都提供相同的數(shù)據(jù)庫視圖;在功能上CN只存儲系統(tǒng)的全局元數(shù)據(jù),并不存儲實際的業(yè)務數(shù)據(jù)。
2、Data Node
Data Node(DN):數(shù)據(jù)節(jié)點,執(zhí)行CN分發(fā)的執(zhí)行請求,存儲實際業(yè)務數(shù)據(jù)。DN節(jié)點存儲空間彼此獨立隔離,是標準的share nothing結(jié)構(gòu)。
3、GTM
GTM:全局事務管理器(Global Transaction Manager),負責管理集群事務信息,不存儲業(yè)務數(shù)據(jù);負責生成嚴格遞增的時間戳,用于保證全局一致性分布式事務。

- Step1:業(yè)務發(fā)送請求到CN節(jié)點,CN節(jié)點向GTM請求事務信息;
- Step2:CN發(fā)送SQL語句和事務信息到DN;
- Step3:DN執(zhí)行完SQL后返回結(jié)果給CN;
- Step4:CN收集DN的結(jié)果并匯總后返回給業(yè)務。
4、OSS
OSS系統(tǒng)是TBase分布式數(shù)據(jù)庫系統(tǒng)配套使用的平臺管理系統(tǒng),集租戶管理、服務器資源管理、項目管理、監(jiān)控運維管理。其中,租戶管理、服務器資源管理、項目管理是實現(xiàn)多租戶管理配套組件;監(jiān)控運維系統(tǒng)設計的主要目的是監(jiān)控和維護TBase數(shù)據(jù)庫,包括指標實時監(jiān)控、告警,部分故障自動修復,在線擴容,數(shù)據(jù)搬遷等功能,與TBase數(shù)據(jù)庫組成一套完整的體系,形成一個高效、穩(wěn)定、可靠的分布式數(shù)據(jù)庫系統(tǒng)。
5、Confdb
Confdb是一個單機版Postgresql數(shù)據(jù)庫,采用主備高可用運行方式,主備節(jié)點部署在集群中的兩部主機上面。Confdb記錄當前OSS管理下的所有信息,如有哪些租戶、哪些機器、哪些實例、實例的各種狀態(tài)信息、當前任務、任務進度等內(nèi)容。
Confdb的內(nèi)容非常重要,當OSS重啟時,Center需要依賴Confdb中的元數(shù)據(jù)信息恢復當前實例情況、資源分配情況、任務進度情況等。
當需要手動修改Confdb內(nèi)容時,須提前做好備份。多個集群可以共用一個Confdb實例,每個集群對應該實例下的一個指標Database。
(1)安裝路徑:
/data/home/tbase/confdb/postgres
/data/tbase/confdb/postgres #3100新版路徑
(2)日志:
/data/home/tbase/confdb/postgres/pg_log
(3)默認端口:54321
(4)服務管理
sh tbase_mgr.sh start Confdb #啟動
sh tbase_mgr.sh stop Confdb #停止
sh tbase_mgr.sh restart Confdb #重啟
sh tbase_mgr.sh status Confdb #查詢服務狀態(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é)點名稱
select * from tbl_oss_node_status; #節(jié)點狀態(tài)
select * from tbl_oss_node; #節(jié)點詳情
select * from tbl_oss_server; #服務器列表
select * from tbl_oss_sys_info; #版本信息
select * from tbl_oss_task_info; #任務信息
6、Center
Center是OSS的決策中心,設計為一主多備。備Center僅負責存儲實例狀態(tài)等信息,用于主Center在需要的時候進行校驗。
通常Center只負責發(fā)起任務、監(jiān)控任務進度,而具體任務的執(zhí)行會由對應的agent完成。
(1)Center的作用:
- 負責接受cgi的命令,并進行相應處理。如申請、初始化、回收、升級、重啟等命令;
- 負責管理所有機器資源,管理各實例的資源消耗,負責收集agent上報的所有實例信息,并向confdb上報;
- 負責裁決是否發(fā)起主備切換。當主備Center都正常時,才能發(fā)起主備切換;
- 負責發(fā)起全量備份。
(2)安裝路徑:
/data/home/tbase/install/tbase_oss/
(3)端口:
- Center服務默認的端口是8118;
- CGI的默認port為8080。
(4)日志:
/data/tbase/install/tbase_oss/tools/op
(5)服務管理:
cd /data/home/tbase/install/tbase_oss/tools/op
bash start.sh #啟動
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具體任務的執(zhí)行者。在每臺物理機上都部署一個Agent(僅一個)。
具體操作實例的任務都需要由Agent來完成,如初始化、備份、重啟、升級、回收、監(jiān)控信息上報等。
(1)Agent的作用:
- 負責完成Center通知的任務,并回復Center任務進度;
- 負責監(jiān)控Center通知監(jiān)控的實例,并實時上報Center具體實例狀態(tài)情況;
- 負責收集實例監(jiān)控數(shù)據(jù)(CPU、磁盤等消耗),并上報給監(jiān)控平臺;
- 負責當實例異常時,對實例進行自動拉起。
(2)安裝路徑:
/data/home/tbase/install/tbase_oss/
(3)配置文件路徑:
/data/home/tbase/install/tbase_oss/config/
(4)日志:
/data/tbase/install/tbase_oss/logs
(5)服務管理:
cd data/home/tbase/install/tbase_oss/tools/op
bash start.sh #啟動
bash stop.sh #停止
bash status.sh #查看狀態(tài)
三、TBase分布式事務全局一致性
1、引入全局事務管理節(jié)點(GTM,Global Transaction Manager)專門處理分布式事務一致性。
2、自主專利的分布式事務一致性技術(shù),包括:兩階段提交(Two Phase Commit)和全局時鐘(Global Timestamp)策略。
3、對GTM效率和系統(tǒng)處理效率的優(yōu)化:
①網(wǎng)絡帶寬優(yōu)化,取消系統(tǒng)集群快照,改為邏輯時鐘來判斷事務的集群可見性,大幅減少對GTM的網(wǎng)絡帶寬占用,降低GTM的CPU占用;
②使用免鎖隊列取代原來的帶鎖隊列,減少系統(tǒng)的鎖使用;
③編寫用戶態(tài)的互斥鎖,使得CPU使用率只有原系統(tǒng)互斥鎖的1/10,提升系統(tǒng)處理能力上限;
④通過線程資源復用的方式大大減少GTM的線程數(shù)據(jù),減少系統(tǒng)調(diào)度CPU占用率。
四、TBase在線擴容能力
1、常規(guī)hash分表方式 VS TBase分表方式
(1)常規(guī)hash分表方式:
DN = Hash(row) % nofdn #nofdn即data node數(shù)量
存在的問題:當擴容后,節(jié)點數(shù)變多,每一行數(shù)據(jù)再對新的節(jié)點數(shù)取模時,數(shù)據(jù)的存儲位置會與以前的值完全不同;此時,需要停止業(yè)務,將數(shù)據(jù)全部導出,擴容后再重新導入,造成業(yè)務中斷時間較長。
(2)TBase引入的sharded table分表方法:
①引入中間層shard map,其中每一項存儲邏輯地址(shardid)和物理地址(DN)映射關(guān)系;
②sharded table中的每條記錄通過Hash(row) % #shardmap entry決定存儲位置。當集群進行擴容時,總的服務器物理節(jié)點數(shù)增加了,但是總的shardid沒有變化,所以只要將shardmap中的shardid映射到新加的節(jié)點上,再把對應的數(shù)據(jù)搬遷過去即可(shardmap對映射關(guān)系的切換);
③每個DN上分別存儲被分配到本節(jié)點的shardid的信息,進而進行可見性的判斷。

五、TBase多級容災能力保證
1、支持故障自動轉(zhuǎn)移:
- 主節(jié)點故障,系統(tǒng)自動從對應的從節(jié)點中選出新的主節(jié)點,故障節(jié)點自動隔離;
- 主從切換保證數(shù)據(jù)完全一致,滿足金融及數(shù)據(jù)一致性要求;
- 主從切換過程對用戶透明,且全程不修改IP地址。
2、跨可用區(qū)部署: - 節(jié)點的主機和從機可分處不同機房,通過專線網(wǎng)絡實時復制。
3、可設置禁止切換: - 即可以設置在某一特殊時期,不處理故障轉(zhuǎn)移。
4、故障恢復: - 故障節(jié)點可通過重做備機恢復;
- 可以選擇新物理節(jié)點添加備機;
5、主從多副本: - 每組1主N從節(jié)點中每個節(jié)點都包含完整的數(shù)據(jù)副本,可以根據(jù)需求切換;
- 通過強同步方式(主從節(jié)點均修改完成)進行數(shù)據(jù)的同步。
6、支持全量備份和數(shù)據(jù)庫日志備份: - 全量備份包括數(shù)據(jù)庫某一時間的全部數(shù)據(jù);
- 數(shù)據(jù)庫日志備份包括數(shù)據(jù)庫每時每刻的增量數(shù)據(jù)。
六、TBase數(shù)據(jù)安全保障能力
1、TBase采用“三權(quán)分立”體系,將傳統(tǒng)數(shù)據(jù)庫的DBA角色分解為安全管理員、審計管理員、數(shù)據(jù)管理員3個相互獨立的角色。
2、TBase的安全策略:
(1)策略1:數(shù)據(jù)加密:
- 業(yè)務側(cè)加密;
- 使用TBase內(nèi)置加密功能,在加密力度上支持列級加密和文件加密。
(2)策略2:數(shù)據(jù)脫敏訪問。
(3)策略3:強制訪問控制:
-TBase定義層級、部分和組織3個維度來描述復雜的組織關(guān)系,其中,層級為縱向控制;部門為橫向控制;組織為樹狀結(jié)構(gòu),總節(jié)點可以訪問下面各個節(jié)點的數(shù)據(jù)。
TBase數(shù)據(jù)安全保障能力結(jié)構(gòu)圖
備注:以上內(nèi)容主要來自騰訊云課堂相關(guān)課程內(nèi)容。
