- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
58同城Webim实现与优化
58同城Webim实现与优化
沈剑
shenjian@58.com
关于我-58沈剑
前百度-高级工程师
58同城-高级架构师
58同城-技术委员会执行主席
58同城-技术学院优秀讲师
58同城-业界技术分享嘉宾
58同城-C2C技术部负责人
58同城-程序员一枚
关于58im及Webim-58帮帮
日请求量:十亿级别(哪些请求量最大?)
数据库量:亿级别
日消息量:千万级别
同时在线:百万级别
机器数量:50左右
目录-58Webim实现与优化
Webim实现难点
Webim架构简介
Webim如何实现消息推送
58Webim消息实时性优化
58Webim消息可达性优化
(1 )个人消息
(2 )离线消息
(3 )群消息
58Webim状态一致性优化
58Webim匿名聊天不熟客识别
58Webim多TAB同步优化
一、Webim难点
基于推送的系统
消息实时性
消息可达性
状态一致性
匿名登录,熟客识别
多TAB同步
二、Webim架构简述
Web接入层
逻辑处理层
消息路由层 (哪里和传统系统架构丌一样?)
数据存储层
三、Webim如何实现消息推送
WebSocket
FlashSocket
Http长轮询 (今天重点讲解)
四、58Webim消息实时性优化
WebSocket ,FlashSocket实时
为什么人们会误解Http长轮询丌实时?
(1 )什么是轮询?
(2 )轮询存在什么问题?
(3 )缩短轮询时间能否解决时延问题?
什么是真正的Http长轮询?
什么是消息连接?
特性一:夯住
特性二:超时后再起发起
四、58Webim消息实时性优化
特性三:消息到达,实时返回,再次发起
特性四:无连接则入消息池,有连接后实时返回,再次发起
四、58Webim消息实时性优化
结论
(1 )webim的实时性不是通过缩短轮询时间来保证的
(2 )webim的实时性是通过夯住http消息连接来保证的
五、58Webim消息可达性优化(单人聊天)
Webim是基于通知的系统,3种报文类型
普通消息投递流程
存在的问题?
(1 )发送方收到msg:R包丌代表接收方收到消息
(2 )msg:N包有可能丢失
五、58Webim消息可达性优化(单人聊天)
58Webim消息可达性优化
优化一:应用层ACK保证可达性
核心技术:一条消息发送的6个请求
存在的问题?
(1 )msg:N包可能丢失?
(2 )ack:N包可能丢失?
五、58Webim消息可达性优化(单人聊天)
没有收到ack:N意味着什么?
优化二:发送方等待ack队列,ack超时时消息重传
“因为网络原因,消息发送失败”意味着什么?
超时不重传存在的问题?
存在的问题?
(1 )消息的重复
(2 )目标用户丌在线ack怎么办?
优化三:接收方去重
五、58Webim消息可达性优化(单人聊天)
总结
(1 )im系统是通过超时、重传、应用层确认、去重的机制来保证消息的可靠投递,丌丢丌重
(2 )im系统的消息丌重复,只是业务层的丌重复,系统层的丌可能丌重复
(3 )切记,一个“你好”的发送,包含上半场msg:R/A/N不下半场ack:R/A/N的6个报文
五、58Webim消息可达性优化(离线消息)
离线消息拉取的过程:返回并删除离线消息
存在的问题?
(1 )离线消息返回过程中丢包
优化方案:增加应用层拉取离线消息的ack
新的问题?
(1 )拉取离线消息的ack丢失,会拉取到重复的离线消息
优化方案:业务层离线消息去重
结论:通过应用层ack和应用层去重保证离线消息拉取的可达性
五、58Webim消息可达性优化(群聊天)
什么是群聊?1 - N
群聊的难点?
(1 )能直接应用层ack么?
(2 )能让发送方重发么?
(3 )能让服务器重发么?服务器需要记录状态么?
群聊如何保证可达性,两种方案:
(1 )基于登录时间
(2 )基于ack ,并降低ack频率
(2.1 )基于时间降频
(2.2 )基于消息条数降频
您可能关注的文档
最近下载
- 《公共行政学》期末复习题.doc VIP
- 公路工程竣交工验收培训课件.pptx VIP
- 小学生品德发展与道德教育 【第1章】 品德发展与道德教育概述 教学PPT课件.pptx VIP
- 吸湿器说明书(中英文)明远(46).doc VIP
- 学习解读《SLT 631水利水电工程单元工程施工质量验收标准 第 4 部分:堤防与河道整治工程》课件.pptx
- 以德育之笔——2025年秋季学期学校德育工作安排表 第二版.docx VIP
- 新概念2册1-36课测试卷.pdf VIP
- 企业会计准则讲解2010版.doc
- 入党志愿书(全电子版).pdf VIP
- 2025年秋季统编版七年级上册道德与法治全册教学课件.pptx
文档评论(0)