默认
打赏 发表评论 4
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
微信红包数据架构演变(PPT) [附件下载]
阅读(126857) | 评论(4 收藏5 淘帖1 1
微信扫一扫关注!

1、内容概述


本次演讲的主题是有关微信红包系统的数据架构摸着石头过河的经历。

微信红包业务从2014年起访问量便呈现指数级增长,体现了移动互联网时代爆发性传播的疯狂。微信红包幕后的运营开发团队一直和飞涨的用户量赛跑,在系统负荷的临界点之前上线解决方案。成功推动微信红包熬过两次春节大战,成长为本行星疑似最大的订单系统。

本次分享为从事技术工作的兄弟们讲解微信红包这个典型互联网业务的后台数据库技术架构演变的过程,微信红包的数据架构从简单到复杂的成长经历以及探索。希望借本次大会和大家交流遇到的问题、拓展数据架构方面的优化思路。

补充说明:本PPT对应的演讲内容已整理成文,详见《社交软件红包技术解密(六):微信红包系统的存储层架构演进实践》。

2、人物简介


微信红包数据架构演变(PPT) [附件下载]_1477730360.jpg
莫晓东:微信支付高级DBA,拥有丰富的数据架构和运维实战经验,擅长大规模MySQL数据库集群的架构、优化和高可用。2010年起在腾讯从事DBA工作,目前专注于微信社交支付的存储层运维和架构优化。

3、相关文章



4、演讲提纲


1)继续使用MySQL
    • MySQL支持事物,满足一致性要求。
    • 结构化存储,紧凑、连续。
    • 支持多索引。
    • 部署简单,工具支持。
    • 团队技术积累。
    • 设备改进。
    • 测试先行,实践是检验真理的第一标准。


2)性能优化
    • 业务最终一致性,cap、base
        • 允许丢失和对账、异步达成。
    • 多层Cache。
        • 定制列表服务,下单前验证预订单。
        • 接入层数据cache,标记红包抢状态。
    • 部署优化。
        • 多实例,交错部署。
    • MySQL参数优化。
    • 系统层参数优化。
    • 数据优化。
        • Sharding,水平拆分。
        • 数据冗余,维度拆分。
        • 数据预生成,摇一摇红包预先导入。
        • 字段冗余,减少访问次数。
        • 默认字符集从utf8改latin1。


3)有损服务、柔性可用、大系统小做
    • 有损服务:通过精心拆分产品流程,选择性牺牲一部分数据一致性和完整性从而保证核心功能绝大多数运行。核心功能是摇,拆,发。其它模块异常立即降级防止引起雪崩。
    • 过载保护,层层过滤、快速拒绝,把千万级别的请求减少到万级,减少DB负载。
    • 异步处理,耗时最长的入账操作,直接跳过,异步处理。
    • 柔性策略,关闭不重要的功能模块,比如查看收发历史、关闭祝福语。
    • 资源隔离,拆分红包DB为50个Set,出现故障只影响1/50。
    • 大系统小做,功能单一。逻辑层需要减少模块耦合,存储层也需要多源。
    • 故障处理,如果DB故障直接替换空白机器,未领取的红包锁定退款。


4)红包野蛮生长-问题来了
    • 红包使用量急剧增长。
        • 拆事务性能瓶颈,高峰抖动。
        • 主从同步压力,对账不及时。
        • 存储容量压力,设备已缩容。
    • 需要进行业务重构。
        • 运维和开发处于高负荷状态。
        • 先应付眼前。


5)解决问题:第一阶段,争取时间
    • 存储容量不足。
        • 使用InnoDB压缩格式,为冷热分离争取时间 。
        • 压缩率订单库44%,用户库57%。
        • 可接受的性能下降10-15%。
    • 性能问题。
        • 梳理主机SQL,索引优化、语句优化、请求精简。
        • 高峰期抖动,优化请求时间分布。
        • 新特性如线程池,4k page。
    • 主从同步延时。
        • 优化从机SQL。
        • 升级 Percona 5.5,多库同步。


6)解决问题:第二阶段,冷热分离
    • 分离依据 。
        • 分析数据访问情况占比, 实测订单3天内,访问占比98.9%。
    • 优化目标。
        • 提高性能,减少现网库表数据量。
        • 节省成本,历史数据使用低成本大容量设备。
    • 历史库方案。
        • 按日分表,proxy路由请求。低峰时段搬迁数据,现网只保留7天。
        • 改善性能,从raid10+tokudb迁移到NoRaid+myisam,解决迁移问题和优化查询性能。
    暂时解决问题,脱离容量问题,性能稳定性增加。


7)解决问题:第三阶段,必须重构
    • 表空间回收困难,现网库删除慢,历史库存储过大。
    • 字段过冗余,如果按每月约翻倍的速度增长,到年底是很惊人的。
        • 假设到年底还有6个月,如果2^6=64倍,那到2月份过年2^8=256倍。
        • 目前大约占了20T历史数据,如果几十几百倍,机器数量,业务成本无法承受。
    • 性能同样需要优化,拆红包单组DB拆峰值仅仅2000+,预计春节10w峰值,也无法完成任务。
        • 红包系统的性能瓶颈在拆事务上。


8)精简和拆分-容量比想象中更宝贵,按字节计算需求
    • 库表重新设计,字段缩减,去冗余。
        • 冗余字段精简。
        • 单号精简。
        • 字段类型精简。
    • 按天分表,循环使用。
        • 确保数据单表数据不会无限增长。
        • 用truncate代替delete清理。
    • 垂直分表力度更细。
        • 小表性能更佳。
    • 主键从单号修改为自增字段。
        • 自增主键减少体积,加速插入速度。
    • 不同的内容,不同的存储。
        • 有些内容使用kv更适合。
        • 用户维度迁入列表服务。
        • 扩散读和更依赖cache。
    • 个人红包和企业红包分离。
        • 企业红包特有字段去除。


8)性能优化-异步和cache
    • 事物优化。
        – 事物语句精简和优化。
        – 入账分布式事务。
        – 提高并发度,请求排队机制。
    • 异步化。
        – 异步入账。
        – 异步用户信息。
        – 异步补拆,异步入账。
    • 语句优化。
        • 不查不需要的字段。
        • 非核心查询移到从机。
        • 大操作合并查询。
    • 先查cache。
        • 通过cache判断能不能抢。
        • 缓存常查询的内容。


9)优化效果
    • 单表行数:
        • 千万级别到十万级别。
    • 拆性能:
        • 2000/s到6000/s+。
    • QPS:
        • 1.5w到6w。
    • 为业务快速成长排除了性能瓶颈:
        • 以去年春晚的2倍设备量,支撑今年春晚10倍的处理能力,容量上节省了数百台设备的成本。
        • 元旦实例验证,超过去年春节的量,单机负载小于20%。


10)还存在问题
    • 红包系统只部署深圳。
        • 跨城流量高延时。
        • 深圳机架位不足。
    • DB宕机后的数据安全
        • 主备切换风险:主备延时,数据不一致。
        • 切换后,数据写脏。
        • 资金风险。

11)春晚准备工作-南北分布
    • 挑战。
        – 就近接入。
        – 城域容灾。
    • 南北分布设计。
        – 系统切分,相互独立。
        – 流量可调控。
        – 相互容灾。
    • 收益。
        – 故障恢复。
        – 流量均衡。
        – 降低时耗。


12)2016年新架构
    • 异地多IDC部署。
        • 上海深圳南北分布。
        • 三园区部署。
    • 层级结构。
        • 纵向分层。
        • 异步结构。
        • 多set结构。

5、讲稿截图


微信红包数据架构演变(PPT) [附件下载]_1.jpg

微信红包数据架构演变(PPT) [附件下载]_2.jpg

微信红包数据架构演变(PPT) [附件下载]_3.jpg

微信红包数据架构演变(PPT) [附件下载]_4-1.jpg

微信红包数据架构演变(PPT) [附件下载]_4-2.jpg

6、讲稿下载


微信红包数据架构演变(52im.net)_2020.pdf (801.55 KB , 下载次数: 60 , 售价: 1 金币)

附录:全站精品资源下载


[1] 精品源码下载:
Java NIO基础视频教程、MINA视频教程、Netty快速入门视频 [有源码]
轻量级即时通讯框架MobileIMSDK的iOS源码(开源版)[附件下载]
开源IM工程“蘑菇街TeamTalk”2015年5月前未删减版完整代码 [附件下载]
微信本地数据库破解版(含iOS、Android),仅供学习研究 [附件下载]
NIO框架入门(四):Android与MINA2、Netty4的跨平台UDP双向通信实战 [附件下载]
NIO框架入门(三):iOS与MINA2、Netty4的跨平台UDP双向通信实战 [附件下载]
NIO框架入门(二):服务端基于MINA2的UDP双向通信Demo演示 [附件下载]
NIO框架入门(一):服务端基于Netty4的UDP双向通信Demo演示 [附件下载]
用于IM中图片压缩的Android工具类源码,效果可媲美微信 [附件下载]
高仿Android版手机QQ可拖拽未读数小气泡源码 [附件下载]
一个WebSocket实时聊天室Demo:基于node.js+socket.io [附件下载]
Android聊天界面源码:实现了聊天气泡、表情图标(可翻页) [附件下载]
高仿Android版手机QQ首页侧滑菜单源码 [附件下载]
开源libco库:单机千万连接、支撑微信8亿用户的后台框架基石 [源码下载]
分享java AMR音频文件合并源码,全网最全
微信团队原创Android资源混淆工具:AndResGuard [有源码]
一个基于MQTT通信协议的完整Android推送Demo [附件下载]
Android版高仿微信聊天界面源码 [附件下载]
高仿手机QQ的Android版锁屏聊天消息提醒功能 [附件下载]
高仿iOS版手机QQ录音及振幅动画完整实现 [源码下载]
Android端社交应用中的评论和回复功能实战分享[图文+源码]
Android端IM应用中的@人功能实现:仿微博、QQ、微信,零入侵、高可扩展[图文+源码]
仿微信的IM聊天时间显示格式(含iOS/Android/Web实现)[图文+源码]

[2] 精品文档和工具下载:
计算机网络通讯协议关系图(中文珍藏版)[附件下载]
史上最全即时通讯软件简史(精编大图版)[附件下载]
重磅发布:《阿里巴巴Android开发手册(规约)》[附件下载]
阿里技术结晶:《阿里巴巴Java开发手册(规约)-终极版》[附件下载]
基于RTMP协议的流媒体技术的原理与应用(技术论文)[附件下载]
独家发布《TCP/IP详解 卷1:协议》CHM版 [附件下载]
良心分享:WebRTC 零基础开发者教程(中文)[附件下载]
MQTT协议手册(中文翻译版)[附件下载]
经典书籍《UNIX网络编程》最全下载(卷1+卷2、中文版+英文版)[附件下载]
音视频开发理论入门书籍之《视频技术手册(第5版)》[附件下载]
国际电联H.264视频编码标准官方技术手册(中文版)[附件下载]
Apache MINA2.0 开发指南(中文版)[附件下载]
网络通讯数据抓包和分析工具 Wireshark 使用教程(中文) [附件下载]
最新收集NAT穿越(p2p打洞)免费STUN服务器列表 [附件下载]
高性能网络编程经典:《The C10K problem(英文)》[附件下载]
即时通讯系统的原理、技术和应用(技术论文)[附件下载]
技术论文:微信对网络影响的技术试验及分析[附件下载]
华为内部3G网络资料: WCDMA系统原理培训手册[附件下载]
网络测试:Android版多路ping命令工具EnterprisePing[附件下载]
Android反编译利器APKDB:没有美工的日子里继续坚强的撸
一款用于P2P开发的NAT类型检测工具 [附件下载]
两款增强型Ping工具:持续统计、图形化展式网络状况 [附件下载]

[3] 精选视频、演讲PPT下载:
美图海量用户的IM架构零基础演进之路(PPT)[附件下载]
开源实时音视频工程WebRTC的架构详解与实践总结(PPT+视频)[附件下载]
QQ空间百亿级流量的社交广告系统架构实践(视频+PPT)[附件下载]
海量实时消息的视频直播系统架构演进之路(视频+PPT)[附件下载]
YY直播在移动弱网环境下的深度优化实践分享(视频+PPT)[附件下载]
QQ空间移动端10亿级视频播放技术优化揭秘(视频+PPT)[附件下载]
RTC实时互联网2017年度大会精选演讲PPT [附件下载]
微信分享开源IM网络层组件库Mars的技术实现(视频+PPT)[附件下载]
微服务理念在微信海量用户后台架构中的实践(视频+PPT)[附件下载]
移动端IM开发和构建中的技术难点实践分享(视频+PPT)[附件下载]
网易云信的高品质即时通讯技术实践之路(视频+PPT)[附件下载]
腾讯音视频实验室:直面音视频质量评估之痛(视频+PPT)[附件下载]
腾讯QQ1.4亿在线用户的技术挑战和架构演进之路PPT[附件下载]
微信朋友圈海量技术之道PPT[附件下载]
手机淘宝消息推送系统的架构与实践(音频+PPT)[附件下载]
如何进行实时音视频的质量评估与监控(视频+PPT)[附件下载]
Go语言构建高并发消息推送系统实践PPT(来自360公司)[附件下载]
网易IM云千万级并发消息处理能力的架构设计与实践PPT [附件下载]
手机QQ的海量用户移动化实践分享(视频+PPT)[附件下载]
钉钉——基于IM技术的新一代企业OA平台的技术挑战(视频+PPT)[附件下载]
微信技术总监谈架构:微信之道——大道至简(PPT讲稿)[附件下载]
Netty的架构剖析及应用案例介绍(视频+PPT)[附件下载]
声网架构师谈实时音视频云的实现难点(视频采访)
滴滴打车架构演变及应用实践(PPT讲稿)[附件下载]
微信海量用户背后的后台系统存储架构(视频+PPT)[附件下载]
在线音视频直播室服务端架构最佳实践(视频+PPT)[附件下载]
从0到1:万人在线的实时音视频直播技术实践分享(视频+PPT)[附件下载]
微信移动端应对弱网络情况的探索和实践PPT[附件下载]
Android版微信从300KB到30MB的技术演进(PPT讲稿)[附件下载]
从零开始搭建瓜子二手车IM系统(PPT)[附件下载]
极光分享:高并发海量消息推送系统架构演进(视频+PPT)[附件下载]
微信红包系统可用性设计实践(PPT) [附件下载]
微信红包数据架构演变(PPT) [附件下载]

即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

上一篇:微信红包系统可用性设计实践(PPT) [附件下载]下一篇:Android版仿微信朋友圈图片拖拽返回效果 [源码下载]

本帖已收录至以下技术专辑

推荐方案
评论 4
此ppt没有找到高清版,当前版本有点模糊,各位见谅
赞一个!
签名: 时光会把你雕刻成你应有的样子。
厉害
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部