陈老师:1415968548 郑老师:2735197625 乐老师:354331153
客服热线:
19941464235 / 19906632509 / 19906733890 / 19905812933(微信同号)

客服微信

TDSQL核心技术架构原理解析

作者:云贝学院
发布时间:2023-12-19 10:08
浏览量:1303

讲核心技术架构原理之前,我们先来了解以下国内数据库现状:

1.png

目前,国内市场主流的数据库,商业数据库有Oracle,SQL server以及DB2,传统+开源的有更多。今天我们主要是讲国内云厂商自研数据库,有阿里云数据库,腾讯云数据库以及华为云数据库等等。未来云数据库将是趋势,因为原生云数据库的网络,计算,存储都会云端化,形成一个巨大的资源池,通过合理分配资源池的资源,最大限度发挥DB的性能。并且可以和现在热门的人工智能AI,大数据结合,形成一个完整的生态。

我们今天重点讲的是腾讯的TDSQL。


1.      什么是TDSQL ?

TDSQL是腾讯推出的一款兼容MySQL,自主可控,兼高一致性的分布式数据库。它支持水平自动拆分,有完整的业务逻辑表,而且数据被均匀拆分到多个物理分片中,有效的解决超大并发,超高性能,超大容量的OLTP类场景。

补充知识:OLTP类场景是针对线上购物节,发红包,秒杀等商业活动需要用到高频次交易,超高频次的数据读写场景。

TDSQL的每个分片默认采用主从高可用架构,提供弹性扩展,备份,恢复,监控等全套解决方案,有效解决业务发展时面临的各种需求和挑战。

2.      发展历程

2.png

TDSQL的发展,经过了漫长的时间。从2007年开始,腾讯从开源的MySQL中走上了自主研发的道路,在2012年TDSQL正式诞生,并且2年后正式在微众银行第一个对外商业使用。次年又放在公有云上,目标是替代传统银行的核心系统,众所周知,银行的核心业务用的是Oracle数据库,一直是被Oracle公司垄断,但是Oracle又贵又是国外的。虽然好用,但是我们应该有属于我们自己自主研发的核心技术才行,自主研发替代Oracle的数据库势在必行。在2019年,张家港银行首次完成了核心业务的替换,使用了TDSQL。这一事件是TDSQL迈向银行业务的里程碑。

3.      核心特性

3.png

6个核心特性,完全满足了现代银行的核心业务。

这6个特性分别是

数据强一致性:确保多副本架构下数据强一致性,避免故障后导致集群数据错乱和丢失

金融级高可用:确保99.999%以上高可用,跨区容灾,同城双活;故障自动恢复

高性能低成本:软硬结合,支持读写分离,对秒杀,红包,全球同服等超高性能场景。

企业级安全性:数据库防火墙,透明加密,自动备份,快速恢复。减少用户误操作/或黑客带来的入侵的风险。

线性水平扩展:在线无缝扩容,高效透明的分布式事务

便捷的运维:完善的配套设施。包括智能DBA,自主化运营管理台。



分布式系统CAP理论

所谓的CAP理论指的是Consistency , Availability , Partition tolerance包含三种特性的系统。

翻译过来就是一致性,可用性,分区容错性。为了我们更好的理解这三个特性,我们举例说明。

如下图:

4.png


5.png

比如从一个APP服务器上,有一个数据写入到主库。此时主库立刻把修改之后的数据同步到从库,右边的应用(APP)服务器访问从库,从库返回的数据就是修改之后的值。


可用性体现:

在上述例子中,假设从库挂了,原先访问从库的APP服务器直接转向访问主库。简单的说不会因为一个节点出问题导致整个系统崩溃。


分区容错性的体现:

上述例子中,假设网络出了问题,连不上。两台库会分别执行,造成了两边数据短暂的不一致,当恢复网络时,会再做主从一致性调整。


分布式数据的基本思想:

通过协调器,让所有的会话跟协调器完成,协调器会去连接所有节点。当然也是用中间件,原理跟协调器一样。还有一种,直接通过系统,跳过这些去跟节点产生连接。

通过分库分表之后产生了很多节点,当某一个节点出问题,处理这个问题的逻辑是高可用。高可用就是每个片做多个副本,多个副本放在不同的物理服务器上。因此可以保障系统可以正常运行。


11.png

可以把这个看作是分布式系统的处理问题的原理。


分布式一致性协议要满足三个要求:1. 分区进程一定可以对一个数据取值达成一致。2.对一个数据的取值一定可以有一个可取值被提议。3.一旦分区一个数据取值达成一致,所有分区进程都可以得到这个取值。


12.png

当业务访问时,首先通过负载均衡LVS转发流量,负载均衡是基于TCP/IP协议高性能的连接,然后通过SQL引擎解析路由信息,解析其中的SQL语句,读写分离判断,产生全局唯一值。SQL引擎通常设置3台,且没有主备之分全是对等的。解析完之后的SQL语句分发到对应的set上的MySQL底层,再由MySQL去执行。MySQL上有一个agent,通过agent与zookeeper关联。在部署的时候,agent和MySQL部署在一起。整个架构的核心是SQL引擎,MySQL存储引擎和zookeeper管理节点。

Zookeeper分布式协调系统管理维护整个集群元数据管理和通知作用。Hadoop负责备份,数据库的数据。Kafka主要是负责SQL的审计、多源同步。操作整个系统则是通过前台赤兔管理平台,通过赤兔平台设置任务,监控,采集,备份以完成日常基本的运维服务。

我们看一下一条SQL在TDSQL上执行的过程

13.png

当去执行一条SQL语句时,SQL引擎首先通过路由去解析,查看语句后面有没有加上shardkey,没有的话进行全表扫描。通过分片进行局部执行,最后再汇聚一起。


14.png

当执行完提交之后,保证主库和备库一致。就会进行强同步,而强同步至少要1主1备的架构,当主库从一个备库返回的之后,主库再返回到事务协调,等所有的分片执行完操作之后会进行确定,如果出现数据错误,这时候就会做回滚处理。