【干货】腾讯云分布式数据库,解决分布式事务XA一致性问题

砍柴网  •  扫码分享
我是创始人李岩:很抱歉!给自己产品做个广告,点击进来看看。  

近日,腾讯云发布了分布式数据库解决方案(DCDB),旨在解决集中式(单机)数据库在存储容量、并发性能、快速扩容等因业务增长而达到瓶颈的问题。

分布式数据库是部署在腾讯云上的一种支持自动水平拆分(分表)的Share Nothing架构的分布式数据库,简称为DCDB。腾讯公司90%以上交易、转账,资金等核心系统都使用了DCDB。

什么是分布式数据库DCDB?

DCDB对外呈现为一个完整的逻辑实例,后端实际上是若干物理节点(或独立的数据库实例)组成。 逻辑实例屏蔽了物理层实际存储规则,业务无需关心数据层如何存储,也无需在业务代码中集成拆分方案或再购买中间件, 只需要像使用集中式(单机)数据库一样使用DCDB即可。

【干货】腾讯云分布式数据库,解决分布式事务XA一致性问题

性能/容量可线性增长

从DCDB的原理可知,虽然从客户端视角来看,是一张表;但实际上读写负载是分散到若干物理分片(承载在不同物理节点的物理表),因此,从理论上DCDB的 并发性能、处理能力、存储容量可以线性增长。

【干货】腾讯云分布式数据库,解决分布式事务XA一致性问题

并且Sysbench的压力测试数据显示, DCDB单个分片(云上最大规格)纯写入操作能超过12万+QPS ,纯查询操作能超过48万QPS。因此,DCDB可轻松支撑并发上亿的各类业务系统。

弹性扩展,一键扩容

DCDB支持实时在线扩容,扩容时只需要到腾讯云控制台点击,系统将自动实现扩容和水平拆分规则的调整。 扩容过程对业务完全透明,无需业务停机,也不会中断业务链接。扩容时仅部分分片存在秒级的只读(只读是实际在做数据校验),整个集群不会受影响(原理简图如下)。

【干货】腾讯云分布式数据库,解决分布式事务XA一致性问题

为了保证扩容时数据不错不丢,DCDB的整个迁移过程采用移存量数据、迁移增量数据、数据检验、再追增量、切换路由、清理六个步骤循环迭代进行。该能力经过腾讯内部近千个业务验证,至今未发生过一次数据丢失或错误。

更多的高级特性,满足不同应用场景

DCDB可通过只读帐号等方案支持读写分离 ,与普通读写分离不同的是,DCDB主从节点中的每个从机都支持只读。如果配置有多个从机,将自动分配到低负载从机上,以支撑大型应用程序的读取流量。

DCDB 提供热点更新能力 ,秒杀或大型活动可能导致瞬时超大并发修改数据库某个参数值。传统的方案是将商品库的子库前置在Cache 层或业务层,通过蜕化数据强一致(后通过第三方对账确保库存和抢购一致),而仅保证单个用户看到的库存减少规律一致。稍稍研究下,我们就会发现,这种实现方案相当复杂。而 DCDB 通过在数据库层直接实现热点更新能力来做到满足业务秒杀的需求,不仅减少了出错的概率,还提升了极大的开发效率。

DCDB支持分式布事务 ,可以为银行转账、电商交易等业务提供支持有效支持,通过多种优化,目前分布式事务提供了高于开源XA(分布式事务简称)50%的性能。

DCDB 使用了两级分区方案:第一级即我们常说的水平拆分,原理是使用HASH算法,使得数据能均匀的分散到后端的所有节点;第二级分区使用RANGE算法,使得相关的数据能够落在一个逻辑分区。二级分片可以均衡数据分布和访问,为快速一键扩容提供基础支撑,也可以满足快速删除流水数据等场景。

DCDB还有全局唯一数字序列、统一参数管理、兼容MySQL函数等众多高级特性,可满足各类业务需求。

高可用与强同步(MAR)

在生产系统中,通常都需要用高可用方案来保证系统不间断运行;数据库作为系统数据存储和服务的核心能力,其可用要求高于计算服务资源。目前,数据库的高可用方案通常是让多个数据库服务协同工作,当一台数据库故障,余下的立即顶替上去工作,这样就可以做到不中断服务或只中断很短时间;或者是让多台数据库同时提供服务,用户可以访问任意一台数据库,当其中一台数据库故障,立即更换访问另外数据库即可。

由于数据库中记录了数据,想要在多台数据库中切换,数据必须是同步的,所以数据同步技术是数据库高可用方案的基础;当前,MySQL原生为异步同步,主机故障时容易造成数据丢失。因此腾讯自主研发了的基于MySQL协议的异步多线程强同步复制方案(Multi-thread Asynchronous Replication MAR),相比MySQL原生的异步复制,其性能、效率和适用性更据优势。MAR强同步方案强同步技术具有以下特点

l 确保主从节点数据实时完全一致;

l 对业务层面完全透明;

l 将串行同步线程异步化,引入线程池,但不占用工作线程,大幅度提高性能;

l 支持集中式或分布式架构;

l 支持自动成员控制,故障节点自动从集群中移除,节点恢复自动加入,无需人工干预;

l 无需共享存储设备。

强同步原理如下图,由于采用线程池能力,强同步(MAR)性能上优于其他主流同步方案,通过对比在跨可用区(IDC机房,延迟约10~20ms)同样的测试方案下,MAR技术性能优于MySQL 5.6半同步约5倍,与MySQL5.7的异步同步性能基本一致。

【干货】腾讯云分布式数据库,解决分布式事务XA一致性问题

而DCDB的每一个分片都支持基于强同步的一主多从架构,主数据库故障时备机立即顶替工作,切换过程对用户透明,且不改变访问IP。并且对数据库和底层物理设备提供7X24小时持续监控。发生故障时,DCDB将自动重启数据库及相关进程;如果节点崩溃无法恢复,将通过备份文件自动重建节点(如下图)。该功能持续保障数据库可用性在99.99%以上,以帮助业务持续稳定的运行。

【干货】腾讯云分布式数据库,解决分布式事务XA一致性问题

而且,DCDB也支持定时备份数据库实例,自动备份保留期可配置,自动备份存储在统一的安全备份存储内,提供99.99999%的数据持久性;在业务出现异常时,自动备份和恢复能力可使业务损失减少到最小。

解决性能、并发、存储等难题

众所周知, 互联网 业务普遍存在用户基数大、实时并发高等特点。部分核心交易系统数据库单表已经上亿行且访问日益变慢,制约业务发展。DCDB 提供线性水平扩展性能,能够极大提升数据库处理能力,应对超大并发、超高性能、海量数据存储的场景。需要说明的是,分布式系统虽然解决了性能并发等难题,但其架构天生带来的缺陷就是无法完全兼容MySQL等单机语法,因此迁移到DCDB可能仍需一定开发,但相对于业务能力的提升开发成本或许可以忽略。

正是因为DCDB众多优势, 腾讯云DCDB已经应用于包括腾讯充值(米大师)、 微信 支付、阅文集团(起点等)、三一重工(树根互联)、微众银行等数十万个业务,场景包括 金融 交易、春节红包、电子商务交易平台、O2O、分支IT系统向总部聚合、物联网传感器数据、大型 游戏 等各类场景; 配合强同步和高可用等能力,DCDB目前已经应用在包括股份制银行等等500多家金融客户的业务场景中。

随意打赏

分布式数据库腾讯云服务器腾讯云认证腾讯云直播腾讯云课堂腾讯微云腾讯云盘
提交建议
微信扫一扫,分享给好友吧。