默認
打賞 發表評論 32
想開發IM:買成品怕坑?租第3方怕貴?找開源自已擼?盡量別走彎路了... 找站長給點建議
從零開始搭建瓜子二手車IM系統(PPT) [附件下載]
閱讀(27856) | 評論(32 收藏18 淘帖1 3

本次分享由即時通訊網征得封宇本人的同意后,重新整理發布,感謝封宇的無私分享。


1、內容概述


本次分享由瓜子二手車技術專家封宇分享于線下活動《滴滴技術沙龍第7期:高可用業務架構設計與平臺化實踐》。

經歷高速成長,瓜子的員工數量已突破兩萬。人員規模的擴大,組織層級的加深,對內部管理形成諸多挑戰。基于效率、安全等因素的考慮,瓜子決定自研消息系統用于支持內效工具“呱呱”的即時通訊功能。

瓜子IM系統的落地,解決了瓜子內部的溝通問題,并以單聊、群聊、公眾號、紅點提示等多種形態深入到員工工作的各個環節。隨著應用的不斷深化,瓜子IM系統逐漸演變為即時消息PaaS平臺,支撐在線客服、車速拍等多條業務線的各類即時消息需求。

在本次分享中,封宇為大家一一講解了他和他的團隊是如何從零開發瓜子IM系統的。

另外:封宇分享于即時通訊網的《一套海量在線用戶的移動端IM架構設計實踐分享(含詳細圖文)》一文,受到了即時通訊網社區的一致好評,建議詳讀之。

2、人物簡介


從零開始搭建瓜子二手車IM系統(PPT) [附件下載]_WechatIMG13.jpg
封宇:瓜子二手車技術專家,中國計算機學會專業會員。主要負責瓜子即時消息解決方案及相關系統研發工作。曾供職于58同城、華北計算技術研究所,參與到家消息系統、58爬蟲系統以及多個國家級軍工科研項目的架構及研發工作。

封宇分享的其它IM技術資料:


3、相關文章


淺談IM系統的架構設計
簡述移動端IM開發的那些坑:架構設計、通信協議和客戶端
一套海量在線用戶的移動端IM架構設計實踐分享(含詳細圖文)
一套原創分布式即時通訊(IM)系統理論架構方案
從零到卓越:京東客服即時通訊系統的技術架構演進歷程
蘑菇街即時通訊/IM服務器開發之架構選擇
移動端IM中大規模群消息的推送如何保證效率、實時性?
現代IM系統中聊天消息的同步和存儲方案探討
騰訊資深架構師干貨總結:一文讀懂大型分布式系統設計的方方面面
IM消息送達保證機制實現(一):保證在線實時消息的可靠投遞
IM消息送達保證機制實現(二):保證離線消息的可靠投遞
如何保證IM實時消息的“時序性”與“一致性”?
一個低成本確保IM消息時序的方法探討
IM單聊和群聊中的在線狀態同步應該用“推”還是“拉”?
IM群聊消息如此復雜,如何保證不丟不重?
談談移動端 IM 開發中登錄請求的優化
移動端IM登錄時拉取數據如何作到省流量?
淺談移動端IM的多點登陸和消息漫游原理
完全自已開發的IM該如何設計“失敗重試”機制?
通俗易懂:基于集群的移動端IM接入層負載均衡方案分享

4、演講提綱


1)項目背景
2)問題抽象
3)系統設計
  • 核心結構圖
  • session管理
  • 協議設計
  • 消息可靠傳遞
  • 消息投遞流程
  • 拉取離線消息流程
  • 消息有序
  • 大規模群的優化
  • 高并發問題
  • 完整結構圖
4)平臺化演進
  • 多租戶與業務隔離
  • 多終端
5)Q&A

5、講稿截圖


從零開始搭建瓜子二手車IM系統(PPT) [附件下載]_1.png

從零開始搭建瓜子二手車IM系統(PPT) [附件下載]_2.png

從零開始搭建瓜子二手車IM系統(PPT) [附件下載]_3.png

從零開始搭建瓜子二手車IM系統(PPT) [附件下載]_4.png

從零開始搭建瓜子二手車IM系統(PPT) [附件下載]_5.png

從零開始搭建瓜子二手車IM系統(PPT) [附件下載]_6.png

從零開始搭建瓜子二手車IM系統(PPT) [附件下載]_7.png

從零開始搭建瓜子二手車IM系統(PPT) [附件下載]_8.png

6、講稿下載


從零開始搭建瓜子IM系統(滴滴技術沙龍第7期)(52im.net).pdf (1.47 MB , 下載次數: 113 , 售價: 3 金幣)

附錄1:全站精品資源下載


[1] 精選視頻、演講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)[附件下載]

[2] 精品源碼下載:
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端社交應用中的評論和回復功能實戰分享[圖文+源碼]

[3] 精品文檔和工具下載:
計算機網絡通訊協議關系圖(中文珍藏版)[附件下載]
史上最全即時通訊軟件簡史(精編大圖版)[附件下載]
重磅發布:《阿里巴巴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工具:持續統計、圖形化展式網絡狀況 [附件下載]

附錄2:更多IM技術文章


[1] 有關IM架構設計的文章:
淺談IM系統的架構設計
簡述移動端IM開發的那些坑:架構設計、通信協議和客戶端
一套海量在線用戶的移動端IM架構設計實踐分享(含詳細圖文)
一套原創分布式即時通訊(IM)系統理論架構方案
從零到卓越:京東客服即時通訊系統的技術架構演進歷程
蘑菇街即時通訊/IM服務器開發之架構選擇
騰訊QQ1.4億在線用戶的技術挑戰和架構演進之路PPT
微信后臺基于時間序的海量數據冷熱分級架構設計實踐
微信技術總監談架構:微信之道——大道至簡(演講全文)
如何解讀《微信技術總監談架構:微信之道——大道至簡》
快速裂變:見證微信強大后臺架構從0到1的演進歷程(一)
17年的實踐:騰訊海量產品的技術方法論
移動端IM中大規模群消息的推送如何保證效率、實時性?
現代IM系統中聊天消息的同步和存儲方案探討
IM開發基礎知識補課(二):如何設計大量圖片文件的服務端存儲架構?
IM開發基礎知識補課(三):快速理解服務端數據庫讀寫分離原理及實踐建議
IM開發基礎知識補課(四):正確理解HTTP短連接中的Cookie、Session和Token
WhatsApp技術實踐分享:32人工程團隊創造的技術神話
微信朋友圈千億訪問量背后的技術挑戰和實踐總結
王者榮耀2億用戶量的背后:產品定位、技術架構、網絡方案等
IM系統的MQ消息中間件選型:Kafka還是RabbitMQ?
騰訊資深架構師干貨總結:一文讀懂大型分布式系統設計的方方面面
>> 更多同類文章 ……

[2] 有關IM/推送的心跳保活處理:
應用保活終極總結(一):Android6.0以下的雙進程守護保活實踐
應用保活終極總結(二):Android6.0及以上的保活實踐(進程防殺篇)
應用保活終極總結(三):Android6.0及以上的保活實踐(被殺復活篇)
Android進程保活詳解:一篇文章解決你的所有疑問
Android端消息推送總結:實現原理、心跳保活、遇到的問題等
深入的聊聊Android消息推送這件小事
為何基于TCP協議的移動端IM仍然需要心跳保活機制?
微信團隊原創分享:Android版微信后臺保活實戰分享(進程保活篇)
微信團隊原創分享:Android版微信后臺保活實戰分享(網絡保活篇)
移動端IM實踐:實現Android版微信的智能心跳機制
移動端IM實踐:WhatsApp、Line、微信的心跳策略分析
Android P正式版即將到來:后臺應用保活、消息推送的真正噩夢
>> 更多同類文章 ……

[3] IM開發綜合文章:
移動端IM開發者必讀(一):通俗易懂,理解移動網絡的“弱”和“慢”
移動端IM開發者必讀(二):史上最全移動弱網絡優化方法總結
從客戶端的角度來談談移動端IM的消息可靠性和送達機制
現代移動端網絡短連接的優化手段總結:請求速度、弱網適應、安全保障
騰訊技術分享:社交網絡圖片的帶寬壓縮技術演進之路
小白必讀:閑話HTTP短連接中的Session和Token
IM開發基礎知識補課:正確理解前置HTTP SSO單點登陸接口的原理
移動端IM中大規模群消息的推送如何保證效率、實時性?
移動端IM開發需要面對的技術問題
開發IM是自己設計協議用字節流好還是字符流好?
請問有人知道語音留言聊天的主流實現方式嗎?
IM消息送達保證機制實現(一):保證在線實時消息的可靠投遞
IM消息送達保證機制實現(二):保證離線消息的可靠投遞
如何保證IM實時消息的“時序性”與“一致性”?
一個低成本確保IM消息時序的方法探討
IM單聊和群聊中的在線狀態同步應該用“推”還是“拉”?
IM群聊消息如此復雜,如何保證不丟不重?
談談移動端 IM 開發中登錄請求的優化
移動端IM登錄時拉取數據如何作到省流量?
淺談移動端IM的多點登陸和消息漫游原理
完全自已開發的IM該如何設計“失敗重試”機制?
通俗易懂:基于集群的移動端IM接入層負載均衡方案分享
微信對網絡影響的技術試驗及分析(論文全文)
即時通訊系統的原理、技術和應用(技術論文)
開源IM工程“蘑菇街TeamTalk”的現狀:一場有始無終的開源秀
QQ音樂團隊分享:Android中的圖片壓縮技術詳解(上篇)
QQ音樂團隊分享:Android中的圖片壓縮技術詳解(下篇)
騰訊原創分享(一):如何大幅提升移動網絡下手機QQ的圖片傳輸速度和成功率
騰訊原創分享(二):如何大幅壓縮移動網絡下APP的流量消耗(上篇)
騰訊原創分享(三):如何大幅壓縮移動網絡下APP的流量消耗(下篇)
如約而至:微信自用的移動端IM網絡層跨平臺組件庫Mars已正式開源
基于社交網絡的Yelp是如何實現海量用戶圖片的無損壓縮的?
騰訊技術分享:騰訊是如何大幅降低帶寬和網絡流量的(圖片壓縮篇)
騰訊技術分享:騰訊是如何大幅降低帶寬和網絡流量的(音視頻技術篇)
為什么說即時通訊社交APP創業就是一個坑?
字符編碼那點事:快速理解ASCII、Unicode、GBK和UTF-8
全面掌握移動端主流圖片格式的特點、性能、調優等
>> 更多同類文章 ……

[4] 有關WEB端即時通訊開發:
新手入門貼:史上最全Web端即時通訊技術原理詳解
Web端即時通訊技術盤點:短輪詢、Comet、Websocket、SSE
SSE技術詳解:一種全新的HTML5服務器推送事件技術
Comet技術詳解:基于HTTP長連接的Web端實時通信技術
新手快速入門:WebSocket簡明教程
WebSocket詳解(一):初步認識WebSocket技術
WebSocket詳解(二):技術原理、代碼演示和應用案例
WebSocket詳解(三):深入WebSocket通信協議細節
WebSocket詳解(四):刨根問底HTTP與WebSocket的關系(上篇)
WebSocket詳解(五):刨根問底HTTP與WebSocket的關系(下篇)
WebSocket詳解(六):刨根問底WebSocket與Socket的關系
socket.io實現消息推送的一點實踐及思路
LinkedIn的Web端即時通訊實踐:實現單機幾十萬條長連接
Web端即時通訊技術的發展與WebSocket、Socket.io的技術實踐
Web端即時通訊安全:跨站點WebSocket劫持漏洞詳解(含示例代碼)
開源框架Pomelo實踐:搭建Web端高性能分布式IM聊天服務器
使用WebSocket和SSE技術實現Web端消息推送
詳解Web端通信方式的演進:從Ajax、JSONP 到 SSE、Websocket
MobileIMSDK-Web的網絡層框架為何使用的是Socket.io而不是Netty?
理論聯系實際:從零理解WebSocket的通信原理、協議格式、安全性
微信小程序中如何使用WebSocket實現長連接(含完整源碼)
>> 更多同類文章 ……

即時通訊網 - 即時通訊開發者社區! 來源: - 即時通訊開發者社區!

上一篇:美圖海量用戶的IM架構零基礎演進之路(PPT) [附件下載]下一篇:極光分享:高并發海量消息推送系統架構演進(視頻+PPT)[附件下載]

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

推薦方案
評論 32
頂。。。PPT觀摩中,,,,
引用:那只羊 發表于 2018-08-09 16:02
頂。。。PPT觀摩中,,,,

封宇分享的東西,都是干貨。遺憾的是,沒有拿到這次分享錄制的視頻
簽名: 《Java的BIO和NIO很難懂?跟著代碼示例,重新理解它們!》:http://www.emxvra.tw/thread-2846-1-1.html
干貨,已收藏
簽名: 不想上班,啦啦啦
引用:JackJiang 發表于 2018-08-09 16:35
封宇分享的東西,都是干貨。遺憾的是,沒有拿到這次分享錄制的視頻

跪求一下視頻
簽名: 抓狂擴擴擴擴擴擴擴擴擴擴擴擴擴擴
引用:o0oi1i 發表于 2018-08-10 15:42
跪求一下視頻

我問過封宇,他說視頻滴滴那邊有錄制,但沒有公開出來,所以也搞不到
簽名: 《Java的BIO和NIO很難懂?跟著代碼示例,重新理解它們!》:http://www.emxvra.tw/thread-2846-1-1.html
謝謝分享
很好!  謝謝分享!
學習學習
這個架構,可以優化成廣域網分布式部署嗎?
引用:ym_im 發表于 2018-11-29 10:49
這個架構,可以優化成廣域網分布式部署嗎?

別人哼哧哼哧的,不可能做的是一個局域網的應用啊
簽名: 《Java的BIO和NIO很難懂?跟著代碼示例,重新理解它們!》:http://www.emxvra.tw/thread-2846-1-1.html
引用:JackJiang 發表于 2018-11-29 11:12
別人哼哧哼哧的,不可能做的是一個局域網的應用啊

1、接入層全國部署以后。每個接入層都會連接所有的邏輯層,因為要有全局session,每個接入會把所有的客戶端狀態報給所有的邏輯層。是不是很浪費啊?如果同時在線上百萬的話。每個邏輯層都得維護上百萬客戶端的內存hash表啊。
引用:ym_im 發表于 2018-11-29 17:33
1、接入層全國部署以后。每個接入層都會連接所有的邏輯層,因為要有全局session,每個接入會把所有的客戶 ...

在線上百萬,總用戶量過千萬了,那肯定是另外一種架構了,沒必要想成那樣,國內能做到這樣的公司,不需要我們在這里考慮,有更牛逼的人等著接手了。架構這東西夠用就好,封宇的分享是基于瓜子2手車的im業務,規模沒這么大
簽名: 《Java的BIO和NIO很難懂?跟著代碼示例,重新理解它們!》:http://www.emxvra.tw/thread-2846-1-1.html
引用:JackJiang 發表于 2018-11-29 18:28
在線上百萬,總用戶量過千萬了,那肯定是另外一種架構了,沒必要想成那樣,國內能做到這樣的公司,不需要 ...

我現在開發的這套分布式的,用戶一千二百萬,并發最高40萬。在考慮升級架構了。
引用:ym_im 發表于 2018-11-29 18:34
我現在開發的這套分布式的,用戶一千二百萬,并發最高40萬。在考慮升級架構了。

你這im規模不小了。你打算怎么升級
簽名: 《Java的BIO和NIO很難懂?跟著代碼示例,重新理解它們!》:http://www.emxvra.tw/thread-2846-1-1.html
引用:JackJiang 發表于 2018-11-29 18:36
你這im規模不小了。你打算怎么升級

現在架構是接入層全國部署,邏輯層集群部署在一起。之前機房故障,邏輯層掛掉了。現在主要是考慮去中心化了。
引用:ym_im 發表于 2018-11-29 17:33
1、接入層全國部署以后。每個接入層都會連接所有的邏輯層,因為要有全局session,每個接入會把所有的客戶 ...

首先瓜子現在沒有那么多同時在線用戶。其次全局session是采用的redis集群存儲,用的hash分庫。邏輯層現在沒有狀態,客戶端的hash路由表是從redis集群里查的。每個接入層會連接所有邏輯層,但是指會把客戶端狀態報給1個邏輯層。
這塊的優化你有什么建議呢?
我有點疑問。

是所有的邏輯層都在本地配一個redis集群。所有客戶端都是按照hash id分配到固定的邏輯服務器,但是可以連接任意接入服務器。客戶端根據自己的ID被接入層上報到自己對應的邏輯層這個架構嗎?

還是所有邏輯層連接一個redis集群。那樣所有的邏輯層和redis集群就得在同一個局域網。這樣中心化太嚴重了。這個機房斷網,整個系統就不能用了。
引用:封宇_ynOMz 發表于 2018-11-30 11:52
首先瓜子現在沒有那么多同時在線用戶。其次全局session是采用的redis集群存儲,用的hash分庫。邏輯層現在 ...

我之前也是依賴redis比較多,但是還是比較影響性能的。最后再redis上面又增加一層內存hash,這樣訪問更快,遞歸查詢。
打賞樓主 ×
使用微信打賞! 使用支付寶打賞!

返回頂部
777彩票走势图表