为数据赋能,方兴未艾 - Mysql在腾讯先驱实践专题交流精华

2018年5月9日,腾讯TEG计费平台部 TDSQL 团队邀请了 MySQL 数据库InnoDB 引擎研发负责人Sunny Bains 、Oracle Principle Software Engineer 苏斌、Oracle Principle Sales Consultant 杜修文一行访问腾讯,举行专题讲座《 What’s new in InnoDB 8.0》,详细介绍了InnoDB 8.0中新的、有趣的特性以及未来演进趋势。讲座结束后,还邀请Sunny Bains、腾讯MySQL数据库技术专家姜承尧与TDSQL团队进行了深度交流,特邀中国人民大学卢卫副教授主持了会议环节,大家主要针对腾讯公司内部MySQL的应用、腾讯分布式数据库TDSQL的业务和技术、TDSQL全时态数据库展开讨论,TDSQL团队也在会上分享了计划开源全时态数据库,贡献给MySQL社区的规划和想法。

以下为会议交流环节的详细内容。

TDSQL的总体业务和技术

分享人:aaronpan(潘安群),腾讯TEG计费平台部总监,TDSQL负责人。

分享内容主要包含三个方面:

1TDSQL诞生背景及其运营情况

TDSQL是腾讯计费平台部基于MySQL打造的一套金融级分布式数据库解决方案,旨在解决多副本强一致性、高可用、高性能、分布式、配套设施、安全保障等方面问题。2012年发布第一个版本,主要用于腾讯计费平台,包括托管了超过280亿账户数。2014年被微众银行选为其核心交易系统的数据库解决方案,成为TDSQL对外输出服务的起点,随后于2015年在腾讯云正式发布,截止目前已经为超过500+客户提供数据库服务,客户覆盖银行、保险、证券、互联网金融、计费、第三方支付、物联网、互联网+、政务等领域。而目前TDSQL整体运行的MySQL实例超过10000+。

2TDSQL的核心特性及技术架构

 High Availability and Durability

基于Raft协议,实现了MySQL的强同步复制,以解决MySQL原生半同步机制在超时退化异步以及在跨数据中心的性能下降明显的问题。目前从实际运营经验来看,我们的可用度远大于99.99%,而数据库可靠性超过99.9999999%,从没有发生过数据丢失问题。

 High Performance and Scalability

TDSQL的GroupSharding版本,可以在TPS或者容量增长的情况下,根据情况快速一键水平扩展,对业务零影响。并在性能损耗较小的情况下,提供分布式事务,及分布式Join功能,实现了分布式版本到单机版MySQL的全兼容,极大降低了客户从单机数据库迁移分布式数据库的难度。

Global Distribution

TDSQL基于强大的强同步复制,目前支持灵活的部署容灾方案,例如:常见的两地三中心、两地四中心等架构,轻松实现异地多活。

 Enterprise-Grade Security

TDSQL为了确保数据安全,与腾讯安全平台部合作,为客户提供了大量的安全特性,例如:SQL防火墙、SQL注入识别、SSL接入、审计等,实现数据访问的事前、事中、事后的全生命周期安全防护。

Easy-to-Use

TDSQL提供完善的配套设置,例如:强大的赤兔管理平台,能实现所有DBA操作WEB化;提供灵活的备份管理系统,实现任意时间点的物理或逻辑备份;提供智能的DB诊断管理工具,实现DBA的智能化等等。

3TDSQL在MySQL内核方面的加强

TDSQL在MySQL内核方面,做了大量优化工作,目前主要集中在四个方面:强同步复制、安全性、性能优化、及Bug修复

· 针对金融场景的强同步复制机制,有效解决了MySQL半同步复制在跨数据中心吞吐量下降明显的问题,能实现TPS与异步模式无差异。

· 性能优化方面,引入percona线程池,并对其调度算法进行优化;此外还对GroupCommit、InnoDB Buffer Pool、以及锁机制等方面做了大量优化。从我们的测试数据来看,效果还是很明显的,尤其是在跨数据中心的情况下,TDSQL的强同步复制相较于半同步复制有着很明显的优势。

· TDSQL修复了大量MySQL的Bug并提交Patch,其中相当一部分是XA相关。

对于TDSQL在内核这块的优化,Sunny Bains表达了强烈兴趣,尤其包括性能优化的具体实现也都了解得非常细,他表示TDSQL这些优化工作非常impressive and fantastic!

TDSQL全时态数据库

分享人:blueseali(李海翔),腾讯TEG计费平台部专家

基于MVCC的全时态数据库T-TDSQL,让一切历史兼可追遡,让数据库引擎为数据赋予事务时间时态、DML等事件、操作者所属等系统类数据,以此追查数据变迁、数据间关系等,让数据变得{智能},从而可知: 1 .什么人在何时于数据上做了什么事情; 2. 数据库系统内并发的事务群体行为。

T-TDSQL进而可在云数据库服务中留存有价值数据,为全数据分析和AI调优系统打下基础。

与TDSQL相比T-TDSQL新增一些特性和功能,对比如下图:

下文将从TDSQL原创技术的出发点、T-TDSQL的核心技术、T-TDSQL的典型应用、T-TDSQL的核心理念几方面展开介绍。

1TDSQL原创技术的出发点

金融数据在TDSQL数据库中进行结算、对账、审计、风控数据分析、构建用户画像等业务。

从技术的角度看,现有的对账业务存在问题:

· 应用开发复杂

· 数据逻辑割裂

· 实时特性丢失

· 数据管理复杂

现代的数据库系统只保留数据的当前值,历史态数据被丢弃。而不论是当前数据,还是历史上曾存在过的数据,都具有重要价值。

基于此原因,为解决上述业务的问题,腾讯公司基于TDSQL研发了全时态数据库 T-TDSQL,由数据库系统统一管理海量的全时态数据。

TDSQL的全态数据

T-TDSQL认为:数据的状态属性,标识数据的生命周期轨迹。数据的生命周期分为三个阶段,每个阶段刻画数据的不同状态属性,以标识数据的生命周期轨迹。

· 当前态:数据项的最新版本的数据,处于当前阶段。处于当前阶段的数据的状态,称为当前态。

· 历史态:数据项在历史上的一个状态,其值是旧值。处于历史阶段的数据的状态,称为历史态。

· 过渡态:数据处于从当前态向历史态转变的过程中。处于过渡态的数据,称为半衰数据。

这三个状态,涵盖了一个数据项的生命周期,合称为数据全态(full-state),或称为全态数据。

TDSQL时态属性

数据的双时态属性,分别为有效时间属性、事务时间属性。有效时间属性表示数据表示的对象在时间属性上的情况。事务时间属性表示数据的某个状态的时间发生时刻。

2T-TDSQL的核心技术

T-TDSQL核心技术一,数据模型

此模型中,全态数据体现在了数据项的历史版本上;时态数据不仅有事务时态、还有有效时间时态。而全态数据的历史态数据,不仅可以追溯数据库系统的操作发生时间,还可以追溯发生的操作类型,这使得用户在T-TDSQL系统中可以实现“一切过往兼可追溯”的梦想。

T-TDSQL核心技术二,历史数据转储时机

T-TDSQL用全态的数据概念,巧妙地利用MySQL的回滚段和Purge机制,实现了历史态数据的转储。一个原理图如下:

 T-TDSQL核心技术三,一致性快照点

T-TDSQL基于MySQL实现了新的数据一致性快照点的构建,因而可以获取任何时间段(包括历史发生过的时间)上的任何状态的数据。

3 T-TDSQL的典型应用

在互联网金融业务中,对账业务是一个经典的业务。通过实现事务时态功能,T-TDSQL能快速、精细、实时地获取这些数据。

(1)对账业务

腾讯计费业务,采用将账户余额表(user)和账户流水表(water)按小时/天为周期比对的方式,来发现账户余额与交易流水的不一致,从而对错误交易进行修正。

对于固定时间段对账,主要存在以下问题:

a. 时效性差

b. 对账不精准

c. 对账不灵活

(2)对账优化

T-TDSQL基于增量计算的功能将账户余额表(user)和账户流水表(water)精准比对,进行流水级别的细粒度对账,从而即时发现交易错误,并立即定位到错误交易。

优化后的对账的核心思想是:总账算摘要、细账笔笔精。

优化后的对账的效果是:总账快对、细账精确、不受时限、任意对账。

· 对账步骤1-总账对账:

读取时间段内的所有账户表数据块,对每个数据块内数据采用与传统对账方式类似的公式来确认账户情况。如果有数据块内的总账不平,意味着有细账错误,要进行步骤2、3所描述的精准对账。

· 对账步骤2-精准对账-对账过程:

执行如下SQL,将账户余额和对应账户流水“快照差连接”,结果集将含有{交易前余额,交易后余额,交易变动}。

· 对账步骤3-精准对账-精准之意:

对步骤2结果里的每一条返回记录进行“交易后余额-交易前余额=交易变动”的试算,即可确认交易是否有误。

4T-TDSQL的核心理念,为数据赋能

在TDSQL团队看来,“数据富有价值,历史数据富有价值”。在(金融/腾讯/互联网/一切…)业务中,挖掘数据的价值,更是富有意义。

用户和业务创造了数据,数据库承担数据的管理职责,是否数据库系统也可以参与到数据的创造环节中来呢?

在TDSQL团队看来,全时态这一概念,正是数据库系统参与到数据创造环节的最佳契机。为数据赋于了事务时态、赋于了DML操作过程中的事件源,甚至可能为数据之间赋于关系,这使得数据库系统也成为了数据的创造者。

这就是我们、TDSQL团队在技术和业务背后的驱动要素:为数据赋能。

分享过程中, Sunny Bains向我们介绍MySQL确实存在时态的需求,几年前曾有过相关的理论研究,但尚未原型产出。Sunny Bains对T-TDSQl整体感觉印象深刻,同时重点讨论了利用UNDO Log进行数据转储的实现细节、功能和性能,对此评价为:A fantastic service that everyone wants;T-TDSQL的设计是解决此类问题最好的方案之一。Sunny Bains表示,现在一部分MySQL用户急切地需要T-TDSQL的数据赋能的功能。会后,Sunny Bains建议苏斌作为T-TDSQL项目和社区的接口人,密切和TDSQL团队交互,期待能把全时态特性早日提交到MySQL。

MySQL在腾讯支付与金融行业的应用实践

分享人:idavidjiang(姜承尧),Oracle  MySQL  ACE成员,腾讯MySQL数据库技术专家。

FiT的前身为财付通,2005年开始支持腾讯相关支付业务。随着腾讯移动支付与金融业务地不断崛起,FiT在金融领域扮演者越来越重要的角色,支撑的核心业务包括且不限于微信支付、手Q红包、微黄金、理财通、零钱通等。

FiT从早期的财付通开始,一直使用开源的MySQL作为其后台核心关系型数据库,支撑整个支付的在线交易。从早期的单机架构,共享存储架构,到现在的分布式架构,FiT MySQL的发展就是整个MySQL架构在互联网公司的不断演进。

金融场景,特别是支付场景,对数据安全性和数据库性能的要求是非常苛刻的。从数据安全角度看,在DB层面不允许有任何数据的丢失。在MySQL 5.5版本之前,并没有太好的应对方案,因此业务侧需要做很多兜底的方案。随着MySQL半同步机制的不断完善,数据一致性问题在MySQL侧已经能比较好的解决,但业务侧还是需要有很多兜底机制,确保数据库内核bug不会导致数据的错乱,比如在MySQL 5.7版本的时候就发现新的并行复制可能引起的主从数据不一致问题(此bug已于5.7.19版本修复)。

从性能角度看,支付对响应时间要求更为严苛。一笔支付操作,在FiT侧的TPS需控制在15ms内完成(目前是8ms),超过20ms则前端会出现阻塞的情况,甚至导致整个支付业务不可用的情况,在微信支付的体量下,这是不可接受的。为此,业务和DBA从整体架构上做了大量优化工作,例如:将一个事务10多条的SQL优化为4条SQL,严格的索引数量控制,SQL语句本身的优化,在线支付业务和批量对账业务的读写分离等。通过这么多年整个团队对业务和架构的不断优化,2017年FiT支付业务达到了5个9的可用性,相信即使放在全球,这个成绩都足以让每个人感到骄傲。

然而对于FiT数据库架构还是有值得继续优化的方向。由于历史和架构等原因,之前数据库跨机房高可用需要依赖外部业务组件,今年开始会逐步推广新的分布式数据库高可用管理平台FMHA,打造基于名字服务的跨机房数据库复制架构,做到数据库级的容灾能努力。即使跨IDC,或跨城发生数据库切换,也能做到对于业务透明。

此外,为提升数据安全性以及服务器资源利用率,核心账户数据库系统会将原双向复制架构升级为单机多实例,并在未来FiT的数据库架构中,逐渐往云化的方向演进。另外,MySQL数据库层原生支持容灾后,会打破很多原有的架构设计思想,比如条带化。这是未来的挑战,需要业务侧同学和数据库架构的同学一起讨论,共同打造更好的支付体验。

Paxos已然成为分布式一致性算法的事实标准。毫无疑问,基于Paxos算法的MGR(MySQL Group Replication)将会成为未来金融行业数据库的标配,FiT也在逐步探索MGR在金融场景的应用,一些规模较小的金融业务已开始接入MGR,今年开始将有更多的业务依赖MGR实现更为可靠的一致性体验。对于MGR的探索,未来将会投入更多的人力。

MySQL 8.0的发布让人惊喜,带了诸如原子DDL、更好地并行复制机制、直方图功能等功能,性能提升亦非常明显,官方测试结果可以有30%~100%的提升,这给我们带了很多信心,同时也带来了很多挑战。无论怎样,未来FiT将基于分布式MySQL数据库架构,打造更好的在线支付与金融用户体验。

分享过程中,Sunny Bains对Fit主备机制给予肯定,回应了姜承尧对MySQL社区版的期待,比如社区版的线程池技术,并向我们表示了由腾讯游戏团队贡献的“Instant Column”功能将在MySQL 8.0.12上线。Sunny Bains认为这是一次非常成功的交流会,并在社交网络上表达了对腾讯TDSQL团队技术实力的称赞。

小结:

腾讯TDSQL团队一路走来始终不忘初心:追求极致体验,打造最好用的金融级数据库。未来我们将继续致力于推进全时态数据库项目和MySQL社区的深入合作,争取在更多项目上为MySQL社区做贡献。用TDSQL的开源精神和实际工作,连接开源社区和TDSQL的用户,连接技术和产品,连接我们的极致服务和用户的良好体验。力争做出一流的TDSQL产品、提供一流的服务、为社区贡献一流的代码和技术。

特别鸣谢 · 嘉宾

卢卫:中国人民大学信息学院副教授,新加坡国立大学博士后,中国人民大学博士。卢卫博士拥有多年海外留学和工作经历,先后于2007年在澳大利亚昆士兰大学数据与知识工程研究(DKE)团队和2010年在新加坡国立大学数据库研究团队进行学术访问。2011年在中国人民大学获得博士学位后,于2011年7月至2014年9月在新加坡国立大学计算机学院从事博士后研究工作。卢卫博士是2012年中国人民大学优秀博士学位论文奖和CCF优秀博士学位论文奖的获得者之一。卢卫博士近年来主要从事数据库基础理论与系统开发以及分布式计算等相关领域研究。相关成果发表在包括数据库和数据挖掘领域顶级会议(ACM SIGMOD、VLDB、ICDE)和顶级期刊(VLDB Journal 和TKDE)上,Google学术引用单篇论文高达230次,主持国家自然科学基金项目和北京市科委重大项目子课题各一项,参与包括国家863重大专项、国家重点研发计划、国家自然科学基金项目等多个项目。

Sunny Bains:Currently Director of Software Development and leads the InnoDB team. Joined Oracle/InnoDB in 2006 and is the architect and author of multi-threaded purge, auto-increment scalability,  multiple buffer pools,  the“kernel” mutex split in v5.6, the redesign of the transaction system that makes InnoDB scale for read only loads in 5.7.  Implemented the Full Text Search, transportable table-spaces, and numerous optimisations in the InnoDB design. Prior to joining Oralce/InnoDB wrote a full ACID compliant storage engine from scratch for a (proprietary) distributed database that is used in the airline industry with automatic failover etc. and has to satisfy very strict service level guarantees.

原文发布于微信公众号 - 腾讯TEG科技云端(TEGYunduan)

原文发表时间:2018-05-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏EAWorld

基于微服务架构的技术实践(附PPT)

? 大家好,今天分享的是“基于微服务架构的技术实践”,标题有点土,希望内容对大家有用。这个是我上周在CSDN北京沙龙上分享的内容的改版,加入了一些设计部分,...

7037
来自专栏云计算D1net

按需所取、弹性分配的云计算

云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问, 进入可配置的计算资源共享池(资源包括网络、服务器、存储、应用软件,服务),这些资源...

3404
来自专栏数据和云

“去O”不如“减O”

去IOE的话题最近很火,而来自四川电信的客户访问,其中有一段颇有借鉴意义:去“O”不如减“O”。 我可以稍微总结一下: 时至今日,Oracle数据库仍然是最好的...

2966
来自专栏数据猿

【案例】农业银行大数据平台项目——海量数据复杂运算处理

数据猿导读 随着数据量的不断增大、接入的系统越来越多,系统加工效率逐步降低,满足内部数据分析和监管机构的监管数据不断增加的需求,农业银行在2013年开始建设完全...

40510
来自专栏阿杜的世界

【转】交易系统在分布式环境下的问题探讨

众所周知在互联网公司,如果你没有对你的系统进行分库分表,那你怎么好意思跟人打招呼?但是分库分表带来的难题也是众所周知的,除了多机查询(分批查询、合并结果等等)等...

483
来自专栏大数据和云计算技术

简单梳理跨数据中心数据库

有2年没有摸数据库了,重新学习下。数据库是IT系统的基石,小到一个个人站点,大到类似Google,阿里,腾讯这种大公司,里面都运行着各种各样的数据库,成千上万的...

3957
来自专栏腾讯技术工程官方号的专栏

TEG Cheers | 腾讯技术工程运维技术沙龙精彩回顾(内置现场视频)

521
来自专栏即时通讯技术

Dubbo正式进入Apache开源孵化器

2018年2月9日,Apache 基金会的邮件列表上发起了讨论是否接纳阿里的 Dubbo 项目进入 Apache 孵化器的投票。

621
来自专栏CSDN技术头条

分布式NewSQL数据库实践——民生银行经典案例

此前,金融信息化建设主要依托原有集中型 IT 架构进行维护扩展,系统规模及复杂程度呈指数级增长,各类瓶颈逐渐暴露,日益增长的数字金融需求同旧式的系统架构缺陷之间...

1207
来自专栏EAWorld

独家系列:让我们遇见未来——为何在云平台中使用REST作为架构设计风格

? 在我们设计新一代企业云平台的时候,需要集成大量的、依赖不同开源项目的、来自不同业务领域、不同开发团队、甚至外部合作伙伴的服务,那么如何对这些服务做统一抽象...

3245

扫码关注云+社区