文章目录
- 1.简介
- 2.TSpider
- 3.TenDB
- 4.Tdbctl
- 5.TenDB Cluster Operator
- 参考文献
1.简介
TenDB Cluster 是腾讯游戏 CROS DBA 团队提供的 MySQL 分布式关系型数据库解决方案。主要特点包括:透明分库分表、高可用的 MySQL 集群服务,透明及在线的扩容及缩容;使得开发者可以仅专注于业务逻辑的开发及运营,无需编写数据分片逻辑。在海量用户并发情况下,也无须关心存储层的负载压力。
TenDB Cluster 集群主要包括三个核心组件:TSpider,TenDB 和 Tdbctl。
2.TSpider
TSpider 是 TenDB 集群的接入层。
TSpider 是腾讯游戏 CROS DBA 基于 MariaDB 10.3.7 开发定制的版本,主要完善并定制 Spider 这一分布式 MySQL 存储引擎。TSpider github 地址。
作为 MySQL 存储引擎,TSpider 天然支持MySQL协议,这意味着应用程序可以使用 MySQL 标准 API 请求 TSpider。
TSpider收到应用程序的请求后,会将查询分发到Tdbctl,Tdbctl通过数据分片规则重写SQL并分发到相应的TenDB数据节点执行,然后处理数据节点的返回结果,最后返回给 应用程序。
TSpider本身不存储数据,基本上是无状态的(每个TSpider节点的配置需要不同),并且可以无限制地水平扩展。应用可以通过负载均衡组件(如LVS、L5、甚至DNS)提供的统一访问地址访问多个TSpider节点。
3.TenDB
TenDB 是 TenDB 集群的存储层。
TenDB是腾讯游戏CROS DBA团队基于Percona Server 5.7.20定制的。 提供即时加列、大列压缩、binlog压缩、binlog限速、性能优化、分布式事务优化、BUG FIX等附加功能,目前是腾讯游戏默认的MySQL存储版本。TenDB github 地址。
通常一个TenDB Cluster有多个TenDB实例,每个TenDB实例均匀存储集群数据。 在部署上,每个TenDB实例均采用Master/Slave或MGR部署方式,以保证TenDB实例的高可用性。
4.Tdbctl
Tdbctl 是 TenDB 集群的控制层。
TenDB 是腾讯游戏 CROS DBA 团队基于 TenDB 开发,主要复用 TenDB 自身的 SQL 解析能力及 MGR(MySQL Group Replication)能力,主要功能是集群分片规则管理、集群DDL操作、集群切换和集群监控。Tdbctl github 地址。
集群分片规则管理涉及维护从TSpider到TenDB的分片规则,并保证分片规则配置的可用性和唯一性。
集群DDL操作是指TSpider收到DDL请求后,会转发给Tdbctl。 Tdbctl重写SQL后,会分发到TSpider/TenDB节点上执行。
集群监控是指Tdbctl会监控TenDB集群的权限、分片规则、表结构和可用性等。
Tdbctl是一个基于MySQL的工具,支持MySQL的MGR功能。 因此,在部署中,我们使用3个或更多Tdbctl节点构建MGR集群,以保证控制节点的高可用性和路由配置的严格一致性。
5.TenDB Cluster Operator
TenDB 集群 还有一个名为 TenDB Cluster Operator 的组件,可以简化云上的部署和管理。
TenDB Cluster Operator 提供了在主要云基础设施(Kubernetes)上部署和管理 TenDB Cluster 的能力。 它利用Kubernetes的容器编排能力和TenDB Cluster的集群管理能力,集成一键部署、一键扩展、故障转移和故障自愈能力,大大降低了用户管理和使用TenDB Cluster的成本。
参考文献
TenDB Cluster Community