腾讯云分布式数据库DCDB发布,解决容量、并发、扩展等难题

 


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

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

什么是分布式数据库DCDB?

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

性能/容量可线性增长

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

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

弹性扩展,一键扩容

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

为了保证扩容时数据不错不丢,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技术性能优于MySQL5.6半同步约5倍,与MySQL5.7的异步同步性能基本一致。

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

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

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

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

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


明星学员

曾*浩 就职于广东众望通科技股份有限公司

转正7000

谭* 就职于GEA国际集团(锆德教育资讯(深圳)有限公司广州分公司

转正8000

刘* 就职于睿盟计算机科技有限公司

转正8000

林*勇 就职于南方人才市场

转正6000

李*达 就职于云景科技

8000

吴* 就职于北京易诚互动网络技术有限公司

转正6000