分布式数据库案例分享:腾讯移动支付平台米大师
近日,腾讯云分布式数据库TDSQL宣布对外商用,这是腾讯第一款真正意义上对外商用的分布式数据库。它定位于在线联机交易处理场景下、高安全性的企业级云数据库,十余年来一直应用于腾讯充值、米大师、理财通等腾讯内部计费业务。
近日,腾讯云分布式数据库TDSQL宣布对外商用,这是腾讯第一款真正意义上对外商用的分布式数据库。它定位于在线联机交易处理场景下、高安全性的企业级云数据库,十余年来一直应用于腾讯充值、米大师、理财通等腾讯内部计费业务。
TDSQL兼容MySQL语法,拥有诸如强一致性、高可用、线程池、审计、异地容灾等高级功能,同时具有云数据库的易扩展性、简单性和性价比。并在多个项目中通过银监、保监的可靠性、信息安全等检查,目前应用于安心保险、微众银行、汇通天下等企业。在这里分享腾讯官方唯一数字业务支付平台——米大师(以下简称Midas)的实践案例。
Midas为腾讯移动APP(iOS、Android、Win phone等)、PC客户端、Web等不同场景提供一站式计费解决方案,目前已经覆盖了国内外30多个计费渠道,包括Q币/Q点、微信支付、手Q支付、财付通、银行卡、手机充值卡、QQ卡、IAP、Google Play、MOL等,承接腾讯所有数字业务计费需求。提供安全、流畅、便捷的付费体验,已服务付费用户过亿,日收入流水过亿。
云上故事
Midas后台数据库存储的特点:
需保障7*24小时不间断的对外提供服务,对数据库的可用性要求比较高。
数据内容主要为用户的资金账户、交易流水、交易订单等金融类数据,对数据库的一致性和安全性有很高要求。
数据总量超过300T(2015年数据),且在不断增长;高峰时段数据访问TPS超过50万。
Midas后台MySQL之痛点:
Midas为腾讯内外几万款产品提供支付营销服务,业务变更非常频繁。单机版MySQL的变更流程相对是比较重的,虽然有不少工具可以提高效率,但没有形成完整的体系,很多仍然需要DBA手工操作衔接,工作效率低并且很容易出错。
数据量极大,超过300T(2015年数据),MySQL单机根本无法支撑这么大的数据量和性能要求,之前试用过多种中间件集成方案,但可用性无法保障,经常出现某个分片无故故障。
数据库故障检测与容灾切换方案复杂,尤其在分布式情况下,数据的分布逻辑与业务逻辑深度耦合,一旦现网出现问题需要进行切换,牵扯面非常大,前端的数据访问逻辑、后端的数据消费逻辑等都得一起相应变更,稍有遗漏就可能酿成大事故。同时,灾难过后的恢复也相当繁琐,为保障数据的一致性需要大量的手工确认工作。可以说,DBA每天的工作繁琐且如履薄冰。
缺乏快速、高效的容量伸缩方案。Midas面对的互联网产品,流量极不均衡,如做营销活动时的瞬间流量可能是平时的几十倍。原来的方案,变更流程长,针对大的流量需求甚至要提前1到2个月准备、手工操作多,且容易出错。即便如此,也只能应付计划内的流量冲击,对计划外的流量冲击基本上只能限流,伤害用户体验且措施业务时机。此外,很容易造成闲时资源浪费,忙时资源不足。
TDSQL的解决之道
支持水平拆分(自动分库分表)
TDSQL支持自动的分库分表,结合数据的统一调度机制,实现按需的容量伸缩。因为TDSQL通过网关屏蔽了内部的分库分表细节,对于开发人员来说,不再需要关心如何切分数据、如何路由请求等待,只需直接面向逻辑库表进行编程、专注业务逻辑的实现即可,大大降低了程序的复杂度。
自动容灾切换
Midas提供在线的移动支付服务,对后台存储数据库的可用性要求非常高。之前,容灾切换需要业务检测和配合,与业务程序深度耦合,而且切换过程复杂,甚至需要人工介入。业务恢复后还需要对切换过程中可能出现的错误数据进行手工修复,运维起来非常痛苦。
TDSQL数据节点和网关实现跨三个IDC部署,可自动检测实例的运行状态。当发现主节点不可用时,会自动触发主备容灾切换流程,保障在主机故障、网络故障、IDC故障等灾难情况下数据库的高可用性。这个容灾切换过程对业务完全透明,且无需人工干预,在确保用户体验的同时,也极大的简化了运维工作。
数据高一致性保障
Midas后台的数据是Q币Q点等资产类数据,对交易数据的一致性要求不亚于银行,对数据的丢失或错乱零容忍。TDSQL在MySQL原有异步复制和半同步复制的基础上创新的使用了多线程强同步复制机制,确保每一笔交易在返回用户应答前,在集群中至少有两个拷贝,然后再通过一系列切换机制保障在节点故障发生切换时,数据不会丢失或错乱。
集群化管理
Midas支付服务面向腾讯所有移动支付业务,后台数据量超过300T,MySQL实例数超过500个。并且,移动支付业务的请求量会因上线新功能或者做营销活动等原因,峰值请求量激增至平时的几倍甚至几十倍。之前,需要提前知晓业务测的动向,由DBA提前手工扩容,扩容过程繁杂,且中间过程手工操作多,极容易出错。
TDSQL在集群层面实现了自动部署、自动容量伸缩、自动备份恢复、数据定点回档以及多维监控等功能。当扩容需求时,DBA只需要在前台点击按钮发起扩容流程,即可自动完成扩容工作;当业务请求高峰过去后,可进行相应的缩容操作,把资源释放出来,减少资源的浪费。TDSQL的集群化运营体系,极大提升了DBA的工作效率,同时大大降低了手工操作可能带来的失误。
客户反馈:TDSQL提供了一个高性能、高可用的数据库解决方案,大大方便了系统的构建和运维工作。
作者:郝志刚
腾讯高级工程师,负责腾讯公司计费业务的数据库开发和维护工作,5年TDSQL数据库运营及相关平台建设工作,有丰富的数据库运营经验,擅长数据库架构、性能调优。
更多推荐
所有评论(0)