TDSQL分布式金融级数据库架构
TDSQL简介

TDSQL(Titan Distribute SQL) —一种分布式数据库之容灾篇一、传统的分库分表及由此引入的问题由于业务数据量巨大以至于无法单表存储,于是,我们习惯了分库分表的方式。
最常用的莫过于按照QQ号的后三位分1000表,除此之外,还有按照大区分表,按照时间分表,等等。
于是我们习惯了下面这样一种SVR与DB交互的架构结构。
图1—传统的分库分表存储这个我们习以为常的数据库存储结构,其实包含了一些问题,本篇将主要讨论主备一致性切换问题,并给出TDSQL主备切换的方式。
问题如下:1、主备的异步同步,在主机宕机的情况下,无法保证数据已经同步到了备机。
2、人工切换,则对DBA同学的实时处理提出非常高的要求。
3、自动切换,可能出现不同SVR对于主DB的健康状态判断不一致,造成不同SVR把数据写入到不同DB的情况即——脑裂。
4、即使通过仲裁节点来统一调度SVR连向主DB或者备DB,如果流程处理的不好,也可能因为SVR感知切换的时间差在短时间内造成脑裂。
如何解决上面的问题,业界给出了很多的方案,例如国外有Galera这种通过协议插件来实现一致性的方案(但这种方案在跨IDC时的性能非常差),国内也有阿里RDS,TDDL,360的atlas中间件,但上述的方案要么在主备切换的一致性,要么在主动切换,要么在性能上都会有或多或少的问题,因此我们在参考上述方案的基础上实现了今天要给大家介绍的方案Titan Distribute SQL —TDSQL。
二、TDSQL主备切换方案2.1 TDSQL容灾架构图二、TDSQL容灾架构图二是一个大家熟悉的具备调度能力的分布式集群,下面分别来介绍一个各个模块的作用及如何互动。
DB——图中的绿色部分,是集群的核心部分,也就是mysql节点。
为了实现主备的强一致性和较高的性能,这里必须使用我们在Mariadb 基础上进行二次开发的MySQL。
注意,只有主DB提供写服务,其它DB会被Agent自动设置成只读。
金融云分布式数据库TDSQL技术架构

2002
2004
2008
业务爆炸 一致性、 7X24可用性
2010
腾讯计费 超高并发超短 时延
2012
米大师,腾讯 充值 更名TDS务 原生MYSQL
增值业务 分库分表手工 伸缩
WeBank 私有化部署
腾讯云 金融云
TDSQL 数据库的特点
基于MySQL生态
MySQL100%兼容
Agent Slave3 6
Agent Master Agent Slave2
SET
1、主DB降级为备机 2、参与选举的备机上报最新的binlog点 3、scheduler收到binlog点之后,选择出binlog最大的节点
4、重建主备关系 5、修改路由 6、请求发给新的主机
TDSQL强一致原理(恢复阶段不丢失数据)
增加节点 C(主) T1,T2,X3,X4 Xtrabackup自动快速 重做 D( 备 ) T1,T2,X3,X4
TDSQL高性能原理
半同步复制(同步 降级为 异步)
Binlog Dump
异步复制
TDSQL高性能原理
User Thread
Com mit(T1) O K( T1) Engine commit
金融云分布式数据库TDSQL技术架构
技术创新 变革未来
TDSQL简介
目录
CONTENTS
TDSQL架构与分布式方案 TDSQL分布式事务处理 分布式事务处理技术
金融级云数据库解决方案(CDB for TDSQL)
腾讯公司内与计费、充值、转账、财务等核心系统90%以上都使用TDSQL!
面向金融类业务,十年积累,亿级账户验证
HASH分区
两级分区
金融级分布式数据库架构设计

金融级分布式数据库架构设计目录1.行业背景 (3)2.数据库分布式改造的途径 (3)3.分布式数据库总体架构 (4)4.两阶段提交的问题 (5)5.CAP与BASE的抉择 (7)6.raft的优势 (8)6.1. Leader选举 (9)6.2. 日志复制 (10)6.3. 安全性 (11)7.分布式数据库如何实现PITR (16)1.行业背景银行业从最初的手工记账到会计电算化,到金融电子化,再到现在的金融科技,可以看到金融与科技的结合越来越紧密,人工智能、大数据、物联网、区块链等新兴技术改变了金融的交易方式,为金融行业的创新前行提供了源源不断的动力。
同时互联网金融的兴起是一把双刃剑,带来了机遇的同时也带来了挑战。
普惠金融使得金融的门槛降低,更多的普通大众参与到金融活动中,这让金融信息系统承受了越来越大的压力。
于是我们可以看到大型商业银行、保险公司、证券公司、交易所等核心交易系统都在纷纷进行分布式改造,其中数据库作为有状态的应用,成为了信息系统中唯一的单点,承担了所有来自上层应用的压力。
随着数据库瓶颈的凸显,进行分布式改造迫在眉睫。
2.数据库分布式改造的途径数据库进行分布式改造主要有三种途径:分布式访问客户端、分布式访问中间件、分布式数据库。
由于其分布式能力实现在不同的层次(应用层、中间层、数据库层),对应用程序有不同的侵入程度,其中分布式访问客户端对应用侵入性最大,改造难度最大,而分布式数据库方案对应用侵入性最小,但是架构设计及研发难度最大。
3.分布式数据库总体架构其实当前市面上的分布式数据库总体架构都是类似的,由必不可缺的三个组件组成:接入节点、数据节点、全局事务管理器。
总体架构如下,协调节点负责sql解析,生成分布式执行计划,sql转发,数据汇总等;数据节点负责数据存储与运算;全局事务管理器负责全局事务号的生成,保证事务的全局一致性。
这个架构或多或少都受到了google spanner F1论文的影响,这篇文章主要分析了这几个组件在实现上有什么难点,该如何进行架构设计。
腾讯云-TDSQL分布式数据库服务概述

TDSQL分布式数据库服务产品概述目录产品简介产品概述 (4)简介 (4)解决问题 (4)单机数据库瓶颈 (4)应用层分片开发工作量大 (4)开源方案或 NoSQL 难题 (4)产品优势 (6)超高性能 (6)专业可靠 (6)简单易用 (6)应用场景 (7)大型应用(超高并发实时交易场景) (7)物联网数据(PB 级数据存储访问场景) (7)文件索引(万亿行数据毫秒级存取) (7)高性价比商业数据库解决方案 (7)基本原理水平分表 (9)概述 (9)水平切分 (9)写入数据( SQL 语句含有 shardkey ) (11)数据聚合 (12)读取数据(有明确 shardkey 值) (12)读取数据(无明确 shardkey 值) (12)读写分离 (14)功能简介 (14)基本原理 (14)只读账号 (14)弹性拓展 (15)概述 (15)扩容过程 (15)新增分片扩容 (15)现有分片扩容 (15)强同步 (17)背景 (17)存在问题 (17)解决方案 (17)实例架构 (19)地域选择 (20)产品简介产品概述19-11-19 10:36:08简介分布式数据库 TDSQL(TencentDB for TDSQL,TDSQL)是部署在腾讯云上的一种支持自动水平拆分、Shared Nothing 架构的分布式数据库。
分布式数据库即业务获取的是完整的逻辑库表,而后端会将库表均匀的拆分到多个物理分片节点。
TDSQL 默认部署主备架构,提供容灾、备份、恢复、监控、迁移等全套解决方案,适用于 TB 或 PB 级的海量数据库场景。
解决问题单机数据库瓶颈面对互联网类业务百万级以上的用户量,单机数据库由于硬件和软件的限制,数据库在数据存储容量、访问容量、容灾等方面都会随着业务的增长而到达瓶颈。
TDSQL 目前单分片最大可支持6TB存储,如果性能或容量不足以支撑业务发展时,在控制台自动升级扩容。
升级过程中,您无需关心分布式系统内的数据迁移,均衡和路由切换。
分布式数据库TDSQL架构原理概述

分布式数据库TDSQL架构原理概述TDSQL(TiDB Distributed SQL)是一个分布式数据库架构,它是由PingCAP公司开发的一款开源数据库。
TDSQL具有强一致性、高可用性和水平可扩展性的特点,适用于大规模、高并发的数据存储和处理需求。
TDSQL的架构原理主要包括三个方面:存储层、计算层和协调层。
存储层是TDSQL的核心组件,它负责数据的存储和管理。
存储层采用分布式存储的方式,将数据分成多个分片,并将每个分片复制到不同的节点上,以保证数据的冗余和可靠性。
存储层采用Raft协议保证数据的一致性,通过多副本和强一致性保证数据的可靠性和持久性。
此外,存储层还支持水平扩展,可以根据需求增加节点来扩展存储容量和处理能力。
计算层是TDSQL的查询和计算引擎,它负责接收用户的查询请求,并将请求转化为分布式查询任务。
计算层采用分布式查询的方式,将一个查询任务拆分成多个子任务,并将子任务分配给不同的节点进行并行处理。
计算层通过调度和协调各个节点上的计算任务,最终将结果返回给用户。
计算层采用分布式索引和分布式事务的方式,使得在大规模数据查询和处理中依然能够保持较高的性能和可用性。
协调层是TDSQL的调度和管理中心,它负责监控和管理存储层和计算层的状态,并进行资源调度和任务分配。
协调层采用分布式锁和容错机制,确保系统的高可用性和故障容忍性。
协调层还支持动态负载均衡和自动故障转移,可以根据负载和节点状态动态管理和分配资源,提高系统的性能和可用性。
协调层也负责处理用户的请求和权限管理,对外提供统一的接口和服务。
总结起来,TDSQL的架构原理基于分布式存储、计算和协调的方式,实现了数据的分片和复制、任务的并行和调度、资源的管理和负载均衡,并通过分布式事务和索引保证了数据的一致性和性能。
通过这种设计,TDSQL能够满足大规模、高并发的数据存储和处理需求,提供高可靠性、高可用性和高扩展性的分布式数据库解决方案。
TDSQL核心架构

TDSQL核心架构TDSQL(Tencent Distributed SQL)是腾讯公司自主研发的一种分布式关系型数据库系统,其核心架构是基于传统关系数据库的基础上进行扩展和优化而成。
它采用分布式存储和计算的方式,通过将数据切分和分片存储在多个节点上,实现了数据的高可用性和横向扩展能力。
1. 存储引擎(Storage Engine):存储引擎是TDSQL的核心组件,负责管理数据的存储和读写。
TDSQL采用了分布式存储的方式,将数据切分成多个片段,每个片段存储在不同的节点上。
存储引擎通过管理这些片段的分布和复制,实现了数据的高可用性和负载均衡。
2. 查询引擎(Query Engine):查询引擎负责解析和执行用户的SQL查询请求。
它将查询分解成多个子查询,并将这些子查询发送到存储引擎上执行。
查询引擎还负责进行查询优化,通过选择最优的执行计划来提高查询的性能。
3. 分布式事务管理器(Distributed Transaction Manager):分布式事务管理器负责管理分布式数据库系统中的事务。
它使用分布式事务协议来协调不同节点上的事务操作,并保证数据的一致性和隔离性。
分布式事务管理器还负责恢复和回滚失败的事务,并处理并发冲突。
4. 元数据管理器(Metadata Manager):元数据管理器负责管理数据库的元数据。
它包括表、列、索引等数据库对象的定义和关联关系。
元数据管理器还负责数据的分布和复制策略的管理,以及数据对应关系的调整和优化。
5. 外部连接管理器(External Connection Manager):外部连接管理器负责管理TDSQL与外部系统的连接。
它支持与其他数据库、消息队列等系统的数据交互,并提供数据同步和数据迁移的功能。
外部连接管理器还支持分布式事务和跨节点查询的功能。
总之,TDSQL的核心架构是基于传统关系数据库的基础上扩展和优化而成的分布式关系数据库系统。
通过将数据切分和分片存储在多个节点上,以及采用分布式事务管理和查询优化的技术,实现了数据的高可用性和横向扩展能力。
腾讯云数据库TDSQL在金融核心的实践

◆ TDSQL
物理设备操作系统(加强定制版Linux)
调度系统
故障迁移 业务调配
当前金融行业技术现状
传统技术架构遇到瓶颈
目前国内大中型银行主要以国外厂商提供的大型主机和数 据库解决方案来进行系统构建。以国外大型主机和数据库 为核心的架构已无法满足大规模交易和数据处理的需求。
一方面:性能无法满足业务不断激增的处理需求,存在系 统过载风险; 另一方面:本身价格比较昂贵,维护成本居高不下。
总行机房
SQL Engine
同城
灾备机房
SQL Engine
异地
SQL Engine
Master
强同步
Slave
异步 Master
异步
强同步
Slave
Slave
Slave
#1 #2
#3 #4
#5
TDSQL最佳实践-完善的全白屏化运维方案
实时诊断优化 效果可预见
掌上运维 AI 助力
TDSQL最佳实践-软硬一体解决方案
“张家港农商银行采用基于腾讯TDSQL的分布式数据库架构建设, 硬件投入从千万级降低到百万级,硬件成本下降75%以上,性能并 可线性增长。”
—— 张家港农商行
◆比如高并发低延时的场景拆分后仍不满足的业务,可以引入缓 存进一步加速; ◆需要更强的查询分析能力的话可以引入等面向联机分析的产品。
核心系统改造:循序渐进,选择最合适的技术方案
第四步:单元化改造
◆ 无限可伸缩微服务架构 ◆ 异地多活部署 ◆ 异构机房上的弹性混合云架构
User=0 User=1 User=2
2019.7 生产机器性能论证
2019.8 项目投产
TDSQL最佳实践-产品定位
TDSQL金融级特性之:数据强一致性保障

作为金融场景下不可或缺的数据强一致性的保障。
们将从四个方面来聊一聊数据一致性的保障:1.主备数据复制2.数据复制比较:TDSQL主备数据复制方案 VS MySQL原生方案3.核心功能:容灾切换,数据强一致、0丢失0出错4.数据强一致性TDSQL主备数据复制:高性能强同步首先在讲数据一致性之前,们先了解一下MySQL原生的数据复制的。
首先种异步复制:主机在不等从机应答直接返回客户端成功。
这个在金融场景不能接受的,这样的话相当于数据没有多副本保障。
第二种半同步:主机在一定条件下等备机应答,如果等不到备机应答,它还会返回成功,也就说它最终还会退化成一个异步的,这同样也金融场景所不能接受的。
除此之外,原生半同步其实有一个性能方面的缺陷,即在跨IDC网络抖动的场景下,请求毛刺现象很严重。
所以原生的异步复制和半同步复制都存在一些问题,并不能完全适应金融场景。
TDSQL引入了基于raft协议的强同步复制,主机接收到请求后,等待其中一个备机应答成功后才返回客户端成功。
们一主两备下一条请求到达了主机之后必须等其中一个备机应答成功,才能返回客户端成功,否则这个请求不会应答的。
所以说,强同步TDSQL最基础的一个特性,TDSQL保证数据不会丢、不会错的关键。
讲到这里的话,可能有些同学会问,你们这个强同步其实也不复杂,不就在半同步的基础上把这个超时时间改成无限同时应答的备机设置为1。
并不这样的,TDSQL强同步这里的关键不在解决备机应答的问题,而要解决这种增加了等待备机的机制之后,如何能保证高性能、高可靠性。
换句话说,如果在原生半同步的基础上不改造性能,仅把超时时间改成无限的时候,其实跑出来的性能和异步比甚至连异步的一半都达不到。
这个在们看来也无法接受的。
相当于为了数据的一致性牺牲了很一部分性能。
TDSQL强同步复制的性能在原生半同步的基础上了量的优化和改进,使得性能基本接近于异步。
所以这里强同步强调的,实现强同步的同时还具备高性能特性,所以确切地说一个高性能的强同步。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
可见
TDSQL》
未来展望
腾讯TDSQL分布式金融级数据库架构
全局读一致性
面向金融类业务,十年积累,亿级账户验证
腾讯公司内与计费、充值、转账、财务等核心系统90%以上都使用TDSQL!
2002
2004
2008
2010
2012
2014
腾讯SP业务 原生MYSQL
增值业务 分库分表手工
伸缩
业务爆炸 一致性、 7X24可用性
腾讯计费 超高并发超短
低效
所有事件全序排序=>所有事务全 局排序,低效
数据是否可读,需要通过全局事 务提交状态验证,增加通讯次数
案例
Pg XC
某些系统 SS2PL+MVCC
Spanner SS2PL+MVCC
CockroachDB SSI+MVCC
5
2次读
增加了通讯轮数,且只能解决读 学术界的解决
《Scalable atomic visibility with
有异 常
有异 常
• 写-写
有异 常
• 写-读
并发操作可以被区分为四种:读-读、读-写、写-读、写-写
两个数据节点Na、Nb;两个数据项X、Y Na节点commit完成;Nb节点commit未完成 全局该事务处于committing状态
读半已提交数据异常
结果:账目不平
第1个分布式事务
第2个分布式事务
目录 CONTENTS
分布式事务处理模型与数据异常 业界主流数据库的解决方式
TDSQL全局读一致性的实现技术
解决方案
编号 1 2
3
4
各种方案 全局事务管理器 基于封锁的并发访问控制算法+全
局可串行化 全局可串行化+线性一致性
全局可串行化+混合逻辑时钟+全局 事务提交标志
缺点 非去中心化、低效
Cross异常
更多的数据异常……
存在的业务问题: 事务x、y同时发起 对账,对账结果 不同
解决技术: 实现全局可串行 化
目录 CONTENTS
分布式事务处理模型与数据异常 业界主流数据库的解决方式
TDSQL全局读一致性的实现技术
第一代TDSQL 分布式事务处理模型
start transaction; 修改user1的金额; 修改user2的金额; commit;
N2子节点 Prepared Prepared Prepared Prepared Committed
全局状态 Preparing Prepared Committed Committed Committed
核心问题:
分布式、全态数据在任何时间点的数
据一致性
解决技术:
写写冲突封锁机制互斥
MVCC从新版本到旧版本
半已提交数据异常
方式
ramp transactions》
分布式读半已提交异常
更多的数据异常……
Cross异常
Carsten Binnig, Stefan Hildenbrand, Franz Färber, Donald Kossmann, Juchang Lee, Norman May: Distributed snapshot isolation: global transactions pay globally, local transactions pay locally. VLDB J. 23(6): 987-1011 (2014)
时延
米大师,腾讯 充值
更名TDSQL
WeBank 私有化部署
2015
腾讯云 金融云
向上攀登 永不止步
2019
全局读 一致性
2ቤተ መጻሕፍቲ ባይዱ18
全时态 数据库
2017
分布式 事务
目录 CONTENTS
分布式事务处理模型与数据异常 业界主流数据库的解决方式
TDSQL全局读一致性的实现技术
• 读-读
无异 常
• 读-写
第二代TDSQL 分布式事务处理模型
start transaction; 修改user1的金额; 修改user2的金额; commit;
全局一致性概念
Bailis P, Davidson A, Fekete A, et al. Highly available transactions: Virtues and limitations. In Proc. of VLDB. 2013. 181-192
核心:同时满足2个一致 读的角度:分布式读数据一致 性 读写混合的角度:分布式事务 的事务一致性 非多副本的数据一致性
技术难点: 正确性相对容易实现 性能难以提高
解决方案—TDSQL全时态数据库
N1子节点 Prepared Prepared Prepared Committed Committed
局部节点处于Prepared状态
全局事务Committed/ Prepared状态
是否可见 不可见,读前一个版本
不可见
异步、批量设置本地事务状态 全局逻辑时钟(非跨城/洲分布)
冲突可串行化
可见
可见
VLDB 2019 腾讯全时态论文《A Lightweight and
Efficient Temporal Database Management System in