TDSQL产品架构
架构分析及模块介绍
TDSQL系统总览
这张图从下往上看;
-
资源池
属于laas层服务,可以是物理机或虚拟机。优先建议物理机;
TDSQL是在一个机器的资源池上实现了数据库实例的管理;
-
存储节点
存储节点主要是TDSQL的两种数据库模式。noshard(单机)跟shared(分布式)数据库;
主要是从MYSQL进行改造和改良,让它支持TDSQL的一系列特性:高可用、数据强一致性、故障切换等
分布式数据库还具备水平伸缩能力;
-
计算节点
计算节点就是TDSQL的计算引擎,计算层和存储层分离。计算层这里指proxy,主要是做一些SQL方面的处理。例:语法解析、SQL解析等。如果是分布式数据库,还要做分布式事务相关的协调;例如下推到指定的存储引擎,什么时候需要在计算做汇总。计算节点是偏CPU密集型;
-
赤兔管理平台
该平台是用户操纵TDSQL的管理平台。DBA主要通过该平台去操纵TDSQL,相当于是一套WEB管理系统。可以在该平台上实现DBA日常的近几乎所有操作需求,且不容易出错。
-
扁鹊只能DBA平台
可以更深层、更直观的去分析性能问题、故障问题。
拥有智能诊断系统,可以定期由DBA发起对实例进行诊断;如:分析主要消耗CPU的SQL、健康巡检、高可用、性能分析、锁分析等。可以大幅度降低DBA的工作。
-
调度系统
主要负责整体的资源调度。比如:实例增加删除、过期作废。扩缩容以及租户管理;
-
备份系统
物理/逻辑备份、恢复;
TDSQL产品架构
用户的请求通过负载均衡发往SQL引擎。SQL引擎作为计算接入层,根据这个SQL的要求从后端的存储节点去取数据。
其中,zk主要是用来存储类似路由这类元数据信息。主要是用于告诉SQL引擎,该SQL该发往后端的哪个数据节点。‘
当然ZK只是存储静态数据,维护这些静态数据就还需要用到一套调度及接口组件。
- 核心模块
模块 | 作用 |
---|---|
DB | DB就是实际用于存储业务数据的MYSQL实例 |
keeper | 整个集群资源管理和调度中心。keeper模块包括manager和scheduler模块 |
Proxy | 负责SQL的解析瑜计算。以及和zk进行交互 |
-
DB(存储节点)
1、存储节点上部署MYSQL数据库服务
2、每个实例均有agent模块,主要承担MYSQL实例的状态监控
3、MYSQL实例通过Agent和TDSQL集群建立联系
4、SET包含1主N备,set内节点可以提供读写,备节点只读;
-
Proxy(计算节点或网关)
1、位于TDSQL接入层的位置,属于CPU密集型服务;
2、承接应用数据库请求,负责路由转发,SQL分析,读写分离等;
3、没有主备之分,本身无状态,一般采用多节点部署分担请求压力
-
keeper
1、Scheduler模块
是整个集群的管理调度中心,相当于整个集群的大脑;自动调度和运行各种类型的操作,比如:数据监控、收集监控生成各种报表、主备切换、扩缩容;
2、manager模块
是机器资源管理模块,也是任务执行者,它是和Scheduler一起运行的。manager是以zk为数据仓库,启动时从ZK中加载资源信息,对齐进行处理后及时写回zk存储节点。manager主要功能:就是机器管理、实例管理、网关管理、集群管理和用户管理;
TDSQL系统架构
主要功能与特性
TDSQL主备数据复制方式
- 强同步机制:主机等待至少一台备机应答成功后才返回客户端成功
- TDSQL采用强同步机制来保证数据一致性;即:任何一笔请求除了在主DB落盘成功外还要再至少一台DB备库完成落盘;
TDSQL数据强一致性
主节点异常情况下一致性的保障:
当主节点A宕机,B备节点被选举成新主,C备节点连接到B节点。而A节点变成备节点重新加入。
如果A节点无法加入,会快速重建节点D,通过Xtrabackup自动快速重做备节点D,快读恢复;
TDSQL容灾切换
- 容灾切换:主DB不可用,系统自动选举新的节点提供服务
- 整个切换过程完全自动,无须人为干预
切换过程:
1、scheduler把主DB降为从;
2、参与选举的从机上报最新的binlog文件偏移
3、scheduler根据收到的binlog点选择新的主DB
4、scheduler重建主备关系
5、scheduler更新zk中的路由表
6、proxy将请求转发给新的主DB