默认
打赏 发表评论 30
从零开始搭建瓜子二手车IM系统(PPT) [附件下载]
阅读(23819)?|?评论(30 收藏17 淘帖1 3

本次分享由亚博电竞网网征得封宇本人的同意后,重新整理发布,感谢封宇的无私分享。


1、内容概述


本次分享由瓜子二手车技术专家封宇分享于线下活动《滴滴技术沙龙第7期:高可用业务架构设计与平台化实践》。

经历高速成长,瓜子的员工数量已突破两万。人员规模的扩大,组织层级的加深,对内部管理形成诸多挑战。基于效率、安全等因素的考虑,瓜子决定自研消息系统用于支持内效工具“呱呱”的亚博电竞网功能。

瓜子IM系统的落地,解决了瓜子内部的沟通问题,并以单聊、群聊、公众号、红点提示等多种形态深入到员工工作的各个环节。随着应用的不断深化,瓜子IM系统逐渐演变为即时消息PaaS平台,支撑在线客服、车速拍等多条业务线的各类即时消息需求。

在本次分享中,封宇为大家一一讲解了他和他的团队是如何从零开发瓜子IM系统的。

另外:封宇分享于亚博电竞网网的《一套海量在线用户的移动端IM架构设计实践分享(含详细图文)》一文,受到了亚博电竞网网社区的一致好评,建议详读之。

2、人物简介


从零开始搭建瓜子二手车IM系统(PPT) [附件下载]_WechatIMG13.jpg
封宇:瓜子二手车技术专家,中国计算机学会专业会员。主要负责瓜子即时消息解决方案及相关系统研发工作。曾供职于58同城、华北计算技术研究所,参与到家消息系统、58爬虫系统以及多个国家级军工科研项目的架构及研发工作。

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 , 下载次数: 91 , 售价: 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)[附件下载]

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

推荐方案
评论 30
顶。。。PPT观摩中,,,,
引用:那只羊 发表于 2018-08-09 16:02
顶。。。PPT观摩中,,,,

封宇分享的东西,都是干货。遗憾的是,没有拿到这次分享录制的视频
签名: 《适合新手:从零开发一个IM服务端(基于Netty,有完整源码)》:http://www.52im.net/thread-2768-1-1.html
干货,已收藏
签名: 不想上班,啦啦啦
引用:JackJiang 发表于 2018-08-09 16:35
封宇分享的东西,都是干货。遗憾的是,没有拿到这次分享录制的视频

跪求一下视频
签名: 抓狂扩扩扩扩扩扩扩扩扩扩扩扩扩扩
引用:o0oi1i 发表于 2018-08-10 15:42
跪求一下视频

我问过封宇,他说视频滴滴那边有录制,但没有公开出来,所以也搞不到
签名: 《适合新手:从零开发一个IM服务端(基于Netty,有完整源码)》:http://www.52im.net/thread-2768-1-1.html
谢谢分享
很好!??谢谢分享!
学习学习
这个架构,可以优化成广域网分布式部署吗?
引用:ym_im 发表于 2018-11-29 10:49
这个架构,可以优化成广域网分布式部署吗?

别人哼哧哼哧的,不可能做的是一个局域网的应用啊
签名: 《适合新手:从零开发一个IM服务端(基于Netty,有完整源码)》:http://www.52im.net/thread-2768-1-1.html
引用:JackJiang 发表于 2018-11-29 11:12
别人哼哧哼哧的,不可能做的是一个局域网的应用啊

1、接入层全国部署以后。每个接入层都会连接所有的逻辑层,因为要有全局session,每个接入会把所有的客户端状态报给所有的逻辑层。是不是很浪费啊?如果同时在线上百万的话。每个逻辑层都得维护上百万客户端的内存hash表啊。
引用:ym_im 发表于 2018-11-29 17:33
1、接入层全国部署以后。每个接入层都会连接所有的逻辑层,因为要有全局session,每个接入会把所有的客户 ...

在线上百万,总用户量过千万了,那肯定是另外一种架构了,没必要想成那样,国内能做到这样的公司,不需要我们在这里考虑,有更牛逼的人等着接手了。架构这东西够用就好,封宇的分享是基于瓜子2手车的im业务,规模没这么大
签名: 《适合新手:从零开发一个IM服务端(基于Netty,有完整源码)》:http://www.52im.net/thread-2768-1-1.html
引用:JackJiang 发表于 2018-11-29 18:28
在线上百万,总用户量过千万了,那肯定是另外一种架构了,没必要想成那样,国内能做到这样的公司,不需要 ...

我现在开发的这套分布式的,用户一千二百万,并发最高40万。在考虑升级架构了。
引用:ym_im 发表于 2018-11-29 18:34
我现在开发的这套分布式的,用户一千二百万,并发最高40万。在考虑升级架构了。

你这im规模不小了。你打算怎么升级
签名: 《适合新手:从零开发一个IM服务端(基于Netty,有完整源码)》:http://www.52im.net/thread-2768-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,这样访问更快,递归查询。
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部