im即时通讯-社交软件_红包数字金额_红包技术解密、(6):支付宝、微信、聊呗、诚信红包系统存储层架构的演进实践 实现可抢红包聊天软件平台

时间:2020-10-20

即时通讯云


 1.介绍

 

 春节期间,南方企业一直有“取笑老板”的习俗。每年春节后的第一天,腾讯大厦都会排起长队,集体上楼去找老板领取红包。根据广东的习俗,已婚同事也会给未婚同事发红包,腾讯员工会在春茶时间寻找红包。

 

 这催生了一个内部项目,通过支付宝、微信、聊呗、诚信收发红包,将公司所有员工的娱乐活动与最活跃的即时通讯平台支付宝、微信、聊呗、诚信结合起来。起初,这个项目并不打算出国,但在入口被不小心打开后,它成了一个非凡的产品。在2014年,它开始爆炸,年发行量是前一年的几倍。根据腾讯发布的数据,到2016年春节,它已经是一个每秒10万次支付和每天近10亿个订单的系统。

 

 支付宝、微信、聊呗、诚信红包的本质是用户账户中小额资金的流通,它有三个主要步骤:发送、抢劫和拆除。在这个过程中,对交易有很高的要求,所以订单应该基于传统的关系数据库管理系统,这是它的优势。最终订单存储在互联网行业最常见的MySQL数据库中。支持事务,成熟稳定,我们的团队在MySQL上有长期的技术积累。然而,传统数据库的可扩展性有限,需要通过体系结构来解决。

 

 补充说明:相关语音请参见支付宝、微信、聊呗、诚信红包数据架构演进【附件下载】。

 

 第二,分享者

 

 社交软件红包解密技术(6):支付宝、微信、聊呗、诚信红包系统存储层架构的演进实践

 莫晓东:支付宝、微信、聊呗、诚信支付高级DBA,具有丰富的数据架构和运维经验,擅长大规模MySQL数据库集群的架构、优化和高可用性。自2010年起,他在腾讯担任数据库管理员,现在专注于支付宝、微信、聊呗、诚信社交支付的存储层操作和架构优化。

 

 第三,一系列文章

 

 系列文章目录:

 

 

 社交软件红包解密技术(一):全面解密QQ红包的技术方案——架构、技术实现等。

 社交软件红包解密技术(二):支付宝、微信、聊呗、诚信解密摇号红包技术从0到1的演进

 “社交软件红包技术解密(三):支付宝、微信、聊呗、诚信抖红包雨背后的技术细节

 社交软件红包技术解密(4):支付宝、微信、聊呗、诚信红包系统如何应对高并发

 社交软件红包解密技术(五):如何实现支付宝、微信、聊呗、诚信红包系统的高可用性

 社交软件红包解密技术(六):支付宝、微信、聊呗、诚信红包系统存储层架构的演进实践(*本文)

 社交软件红包解密技术(七):支付宝红包海量高并发技术实践

 社交软件红包解密技术(八):全面解密微博红包的技术方案

 社交软件红包解密技术(九):谈设计、容灾、运维、架构等。手问春节红包

 社交软件红包解密技术(十):2020年春节红包手q客户端技术实践

 

 其他相关文章:

 

 

 技术的过去:“QQ群”和“支付宝、微信、聊呗、诚信红包”是怎么来的?》

 QQ 18年:解密8亿个月前的QQ后台服务接口隔离技术

 "每月活动8.89亿次的超级即时通讯支付宝、微信、聊呗、诚信如何进行安卓兼容性测试?"

 “开源图书馆:后台框架的基石,支持支付宝、微信、聊呗、诚信8亿用户在一台机器上拥有数百万的连接(源代码下载)”

 "支付宝、微信、聊呗、诚信技术总监谈建筑:支付宝、微信、聊呗、诚信之路——走向简(演讲全文)"

 “支付宝、微信、聊呗、诚信技术总监谈建筑:支付宝、微信、聊呗、诚信之路——走向简(PPT讲座)[附件下载]”

 如何解读《支付宝、微信、聊呗、诚信技术总监谈建筑:支付宝、微信、聊呗、诚信之路——通向简》

 支付宝、微信、聊呗、诚信大用户后台系统存储架构(视频+PPT)[附件下载]

 “支付宝、微信、聊呗、诚信异步转型实践:8亿月度活动和单机连接背后的后台解决方案”

 "支付宝、微信、聊呗、诚信朋友圈海量技术PPT[附件下载]"

 “架构方式:3名程序员在支付宝、微信、聊呗、诚信朋友圈(有视频)中平均每天发布10亿条消息。”

 “快速裂变:见证支付宝、微信、聊呗、诚信强大后台架构从0到1的演变(一)”

 “快速裂变:见证支付宝、微信、聊呗、诚信强大后台架构从0到1 (2)的演变”

 支付宝、微信、聊呗、诚信“红包照片”背后的技术问题

 "支付宝、微信、聊呗、诚信技术共享:支付宝、微信、聊呗、诚信的海量即时聊天信息序列号生成实践(算法原理)"

 "支付宝、微信、聊呗、诚信技术共享:支付宝、微信、聊呗、诚信大规模即时通讯聊天信息序列号生成实践(灾难恢复计划)"

 

 

 4.前端流量控制

 

 分发十亿个红包有什么困难?

 

 

 1)大量用户同时发送红包,每秒钟瞬间产生数万个请求,除夕夜可能达到数百万次;

 2)如果这种数量级的请求直接到达后台而没有整理,它肯定会导致后端服务过载甚至崩溃。

 

 其主要思想是缩短关键业务流程,分离可以通过异步和缓存解决的问题,降低系统压力,加快响应速度,并在存储层前面建立一个屏障。

 

 CGI无状态:

 

 访问层是无状态的,逻辑层是无状态的,因此可以很容易地水平扩展。但它依赖于MySQL事务来确保事务的完整性,确保简化红包系统并减少瓶颈的存在。

 

 静态资源:

 

 使用腾讯强大的基础资源来优化部署,并尝试将动态内容转化为静态资源。静态资源与CGI是分开的。静态资源通过CDN就近访问,减少了用户和CGI之间的交互,减少了内部网、访问延迟和数据请求。

 

 异步业务流程:

 

 支付宝、微信、聊呗、诚信红包的发送、抢夺和拆解背后有很多内部环境。简化了关键流程,非关键流程和后续业务逻辑进入异步队列进行处理,减少了用户的等待时间,大大降低了高峰雪崩的概率。许多非关键的环节不会影响主流程。

 

 过载保护:

 

 

 前端保护后端。如果它可以在前端处理,它将不会传递到后端:

 1)前端需要根据后端能力进行削峰限流;

 2)客户端、接入层和逻辑层逐层控制流量;

 3)前端更容易处理容错,并充分保护存储层。

 

 支付宝、微信、聊呗、诚信过载保护策略已提前嵌入客户端,当连接失败或超时时会给出相应的提示,减少了用户重复请求的次数。接入层限制频繁发送请求的客户端的响应速度,并将系统负载分为几个级别,并在达到不同阈值时引导客户端使用不同的速度限制速率;在异常情况下,异步限流和减速可以减轻服务器端的压力,防止过载。

 

 多级读缓存:

 

 发送一组红色数据包,抓取红色数据包的请求远远大于发送红色数据包。如果你收到了,你可以完全拒绝。逻辑层增加了缓存,所有可以缓存的请求都被缓存,进一步减少了存储层的流量。

 

 订购写缓存:

 

 订单系统中有许多请求不能真正完成整个流程。创建这些废弃订单不仅浪费存储资源,还会挤压逻辑层和数据层的处理能力,影响其他事务。订单可以在付款完成前存放在缓存中,然后在付款完成后保存。

 

 社交软件红包解密技术(6):支付宝、微信、聊呗、诚信红包系统存储层架构的演进实践_1.jpg

 

 5.存储层的高可用性设计

 

 随着数百倍的业务增长,存储层很难简单地无限扩展。一方面,设备加倍的成本是巨大的,另一方面,存储层的瓶颈积累可能不能解决问题。

 

 读写分离:

 

 写请求需要在主机上,实时读取也需要在主机上。有大量的查询对延迟不太敏感并且影响性能,这些查询可以放入从机。读写分离策略是MySQL分布式系统的引入,简洁地提高了系统容量。

 

 水平分割:

 

 数据水平分割的本质是将数据库分成表格;选择一个数据表,根据主纬度分割数据。实现存储层的并行扩展。单个数据库机器的负载被有效地降低,并且服务不可用的可能性也被降低。单个数据库的停机只会使一些数据无法访问。主要需要考虑路由规则的选择,以促进容量的扩展和收缩以及数据的均衡分布。

 

 垂直分割:

 

 除了水平分段,行中的数据还可以通过属性进一步分隔。核心表中只保留最关键的字段,以确保数据文件简短紧凑。以红包为例,昵称、问候语等长信息不属于核心数据,可以分割到其他机器上,进一步增强核心数据库的容量。不同的数据适合不同的存储类型。这种高重复率的长串更适合NoSQL存储,大大节省了存储空间和性能。

 

 时间的空间:

 

 根据不同的维度组织表格,如订单属性和用户属性;适应不同的请求场景,避免复杂的查询。不同维度的表可以通过协调来对齐,非核心表可以适当冗余,以减少多个请求。

 

 锁的优化:

 

 许多人争夺红包,这是由数据库保证的,并且必须有竞争MySQL行锁。核心内容必须尽可能简洁,以免陷入僵局。对于相同顺序的所有请求,在逻辑层进程被预先排队后,尝试通过一个连接将请求发送到数据库。

 

 冷热分离:

 

 核心数据库存储高频数据,其他数据可以低成本地定期移动到冷数据库。这样,最好的固态硬盘设备可以用于核心数据库,而快速设备容量又小又贵,因此不可能在全部数据上使用它。同时,它可以确保数据表的容量不会一直累积,大型表也会导致性能下降。

 

 社交软件红包解密技术(6):支付宝、微信、聊呗、诚信红包系统存储层架构的演进实践_2.jpg

 

 6.多住在不同的地方

 

 当系统足够大时,有必要考虑异地部署的问题,以使数据尽可能接近用户。此外,进一步的高可用性不能局限于同一地区,必须跨数据中心和城市生活,以抵御系统风险。由于城市间的延迟长达数十毫秒,支付宝、微信、聊呗、诚信红包的远程活动被设计成多个数据中心相互独立。非灾难灰度不会在线从其他数据中心导入数据。

 

 附近通道:

 

 以支付宝、微信、聊呗、诚信红包系统的异步部署为例,第一个优势是用户可以就近访问,减少了跨城市的流量。根据发送方的区域标志数据登陆到不同的数据中心,实现不同区域的业务闭环。

 

 数据分离:

 

 由于当前网络技术的限制,使用光纤不能保证跨城市数据的同步延迟。因此,支付宝、微信、聊呗、诚信红包跨城市数据中心不能实时同步数据。不同的区域承载着商业交通,这在地理上是平衡的。不同区域的订单数据独立存储。

 

 不同地方的容灾能力:

 

 在区域性故障的情况下,我们需要一种机制来确保服务的可用性。使用异步部署,如果深圳出现系统故障,我们可以直接将请求连接到上海。每个数据中心都是独立部署的,如果某个系统达到最大容量,它可以跨区域转移。

 

 7.服务损失和灵活降级

 

 我们遇到的最常见的问题是大量的请求。根据CAP理论,要通过分布式系统实现大规模请求,一致性和高可用性不能同时得到保证,因此必须进行权衡。我们首先保证可用性,同时实现最终的一致性。有以下原则。

 

 有损服务:

 

 为了追求高可用性,可以牺牲一些数据的一致性和完整性来确保核心功能。在一定资源的前提下,满足用户的核心需求。支付宝、微信、聊呗、诚信红包的核心是攫取和拆解红包。系统必须确保核心步骤尽可能平滑,但当出现瓶颈时会立即降级,以防止系统崩溃。然而,为了确保数据最终能够对齐,财务属性的系统数据安全性是很困难的。

 

 灵活可用:

 

 灵活可用性是一种受有害服务价值支持的方法,它结合特定场景提供不同级别的用户体验,以确保尽可能成功地返回关键数据。把握每个场景中用户的核心需求,设计满足不同层次核心需求的方式。系统必须首先实现容灾和自动切换;第二,逻辑资源应该被隔离;当服务过载时,它必须被自动和快速地拒绝。

 

 8.结束语

 

 本文简要介绍了支付宝、微信、聊呗、诚信红包存储层服务的设计准则。在企业从起步到腾飞的过程中,其背后巨大的服务能力将对其最终的成败产生深远的影响。在互联网的爆炸式增长中,大众服务的能力决定了项目的成败,因此有必要在项目的早期阶段为大众服务做好准备。