默認
打賞 發表評論 1
想開發IM:買成品怕坑?租第3方怕貴?找開源自已擼?盡量別走彎路了... 找站長給點建議
微信紅包數據架構演變(PPT) [附件下載]
閱讀(5472) | 評論(1 收藏2 淘帖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).pdf (772.35 KB , 下載次數: 13 , 售價: 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版仿微信朋友圈圖片拖拽返回效果 [源碼下載]

本帖已收錄至以下技術專輯

推薦方案
評論 1
此ppt沒有找到高清版,當前版本有點模糊,各位見諒
簽名: 《IM里“附近的人”功能實現原理是什么?如何高效率地實現它?》http://www.uktmgv.tw/thread-2827-1-1.html
打賞樓主 ×
使用微信打賞! 使用支付寶打賞!

返回頂部
曾氏料二肖中特