第一部分 TBase产品功能及架构原理
一、TBase概述
1、TBase是腾讯云数据库团队自研的HTAP分布式数据库系统,其中,HTAP表示数据库集群同时具备OLAP和OLTP能力。
2、TBase的相关特性:
①分布式数据库;
②支持分布式事务;
③兼容PostgreSQL协议;
④跨节点复杂查询;
⑤面向OLTP应用;
⑥写可扩展(Write-scalable);
⑦分布式存储(Shared-nothing);
⑧多主节点(Multi-master):集群在一个节点上的更新操作,会立即呈现到另一个数据库中;多个节点都可以提供完整一致的数据库视图;
⑨数据透明(Transparent)。
3、SQL兼容度
(1)兼容PostgreSQL语法;
(2)企业级数据库语法支持:
①支持存储过程、触发器、自定义函数、视图、物化视图、游标、全局序列、窗口函数、递归cte、全局分布式事务、分布式join。原生支持整数、浮点数、字符。
②支持time、date、datetime、bytea(二进制)、Json、Jsonb、XML、uuid、GIS(几何类型点、线、面),复合,范围以及全文搜索等数据类型,支持自定义数据类型。
二、TBase架构
TBase采用分布式集群架构(如上图),该架构分布式无共享(share nothing)模式,节点之间相互独立,各自处理自己的数据,处理后的结果可以向上层汇总或在节点间流转,各处理单元之间通过网络协议进行通信,并行处理和扩展能力更好。
1、Coordinator
Coordinator(CN):协调节点,对外提供接口,负责数据的分发和查询规划,多个节点位置对等,每个节点都提供相同的数据库视图;在功能上CN只存储系统的全局元数据,并不存储实际的业务数据。
2、Data Node
Data Node(DN):数据节点,执行CN分发的执行请求,存储实际业务数据。DN节点存储空间彼此独立隔离,是标准的share nothing结构。
3、GTM
GTM:全局事务管理器(Global Transaction Manager),负责管理集群事务信息,不存储业务数据;负责生成严格递增的时间戳,用于保证全局一致性分布式事务。
- Step1:业务发送请求到CN节点,CN节点向GTM请求事务信息;
- Step2:CN发送SQL语句和事务信息到DN;
- Step3:DN执行完SQL后返回结果给CN;
- Step4:CN收集DN的结果并汇总后返回给业务。
4、OSS
OSS系统是TBase分布式数据库系统配套使用的平台管理系统,集租户管理、服务器资源管理、项目管理、监控运维管理。其中,租户管理、服务器资源管理、项目管理是实现多租户管理配套组件;监控运维系统设计的主要目的是监控和维护TBase数据库,包括指标实时监控、告警,部分故障自动修复,在线扩容,数据搬迁等功能,与TBase数据库组成一套完整的体系,形成一个高效、稳定、可靠的分布式数据库系统。
5、Confdb
Confdb是一个单机版Postgresql数据库,采用主备高可用运行方式,主备节点部署在集群中的两部主机上面。Confdb记录当前OSS管理下的所有信息,如有哪些租户、哪些机器、哪些实例、实例的各种状态信息、当前任务、任务进度等内容。
Confdb的内容非常重要,当OSS重启时,Center需要依赖Confdb中的元数据信息恢复当前实例情况、资源分配情况、任务进度情况等。
当需要手动修改Confdb内容时,须提前做好备份。多个集群可以共用一个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 #查询服务状态
(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; #节点名称
select * from tbl_oss_node_status; #节点状态
select * from tbl_oss_node; #节点详情
select * from tbl_oss_server; #服务器列表
select * from tbl_oss_sys_info; #版本信息
select * from tbl_oss_task_info; #任务信息
6、Center
Center是OSS的决策中心,设计为一主多备。备Center仅负责存储实例状态等信息,用于主Center在需要的时候进行校验。
通常Center只负责发起任务、监控任务进度,而具体任务的执行会由对应的agent完成。
(1)Center的作用:
- 负责接受cgi的命令,并进行相应处理。如申请、初始化、回收、升级、重启等命令;
- 负责管理所有机器资源,管理各实例的资源消耗,负责收集agent上报的所有实例信息,并向confdb上报;
- 负责裁决是否发起主备切换。当主备Center都正常时,才能发起主备切换;
- 负责发起全量备份。
(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 #查看状态
(6)配置文件:
/data/home/tbase/install/tbase_oss/config/tbase_oss_conf.ini
注意:配置CenterMaster和CenterSlave的IP地址和PORT,CGI的IP地址和PORT,Center连接,Confdb的参数也在这里配置。
7、Agent
Agent是OSS具体任务的执行者。在每台物理机上都部署一个Agent(仅一个)。
具体操作实例的任务都需要由Agent来完成,如初始化、备份、重启、升级、回收、监控信息上报等。
(1)Agent的作用:
- 负责完成Center通知的任务,并回复Center任务进度;
- 负责监控Center通知监控的实例,并实时上报Center具体实例状态情况;
- 负责收集实例监控数据(CPU、磁盘等消耗),并上报给监控平台;
- 负责当实例异常时,对实例进行自动拉起。
(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 #查看状态
三、TBase分布式事务全局一致性
1、引入全局事务管理节点(GTM,Global Transaction Manager)专门处理分布式事务一致性。
2、自主专利的分布式事务一致性技术,包括:两阶段提交(Two Phase Commit)和全局时钟(Global Timestamp)策略。
3、对GTM效率和系统处理效率的优化:
①网络带宽优化,取消系统集群快照,改为逻辑时钟来判断事务的集群可见性,大幅减少对GTM的网络带宽占用,降低GTM的CPU占用;
②使用免锁队列取代原来的带锁队列,减少系统的锁使用;
③编写用户态的互斥锁,使得CPU使用率只有原系统互斥锁的1/10,提升系统处理能力上限;
④通过线程资源复用的方式大大减少GTM的线程数据,减少系统调度CPU占用率。
四、TBase在线扩容能力
1、常规hash分表方式 VS TBase分表方式
(1)常规hash分表方式:
DN = Hash(row) % nofdn #nofdn即data node数量
存在的问题:当扩容后,节点数变多,每一行数据再对新的节点数取模时,数据的存储位置会与以前的值完全不同;此时,需要停止业务,将数据全部导出,扩容后再重新导入,造成业务中断时间较长。
(2)TBase引入的sharded table分表方法:
①引入中间层shard map,其中每一项存储逻辑地址(shardid)和物理地址(DN)映射关系;
②sharded table中的每条记录通过Hash(row) % #shardmap entry决定存储位置。当集群进行扩容时,总的服务器物理节点数增加了,但是总的shardid没有变化,所以只要将shardmap中的shardid映射到新加的节点上,再把对应的数据搬迁过去即可(shardmap对映射关系的切换);
③每个DN上分别存储被分配到本节点的shardid的信息,进而进行可见性的判断。
五、TBase多级容灾能力保证
1、支持故障自动转移:
- 主节点故障,系统自动从对应的从节点中选出新的主节点,故障节点自动隔离;
- 主从切换保证数据完全一致,满足金融及数据一致性要求;
- 主从切换过程对用户透明,且全程不修改IP地址。
2、跨可用区部署: - 节点的主机和从机可分处不同机房,通过专线网络实时复制。
3、可设置禁止切换: - 即可以设置在某一特殊时期,不处理故障转移。
4、故障恢复: - 故障节点可通过重做备机恢复;
- 可以选择新物理节点添加备机;
5、主从多副本: - 每组1主N从节点中每个节点都包含完整的数据副本,可以根据需求切换;
- 通过强同步方式(主从节点均修改完成)进行数据的同步。
6、支持全量备份和数据库日志备份: - 全量备份包括数据库某一时间的全部数据;
- 数据库日志备份包括数据库每时每刻的增量数据。
六、TBase数据安全保障能力
1、TBase采用“三权分立”体系,将传统数据库的DBA角色分解为安全管理员、审计管理员、数据管理员3个相互独立的角色。
2、TBase的安全策略:
(1)策略1:数据加密:
- 业务侧加密;
- 使用TBase内置加密功能,在加密力度上支持列级加密和文件加密。
(2)策略2:数据脱敏访问。
(3)策略3:强制访问控制:
-TBase定义层级、部分和组织3个维度来描述复杂的组织关系,其中,层级为纵向控制;部门为横向控制;组织为树状结构,总节点可以访问下面各个节点的数据。
备注:以上内容主要来自腾讯云课堂相关课程内容。