现代IM系统中聊天消息的同步和存储方案探讨

  • 时间:
  • 浏览:3
  • 来源:大发彩神UU快三_大发神彩UU快三官方

《P2P技术详解(二):P2P中的NAT穿越(打洞)方案详解》

《通俗易懂:一篇掌握即时通讯的消息传输安全原理》

《实现延迟低于5000毫秒的10500P实时音视频直播的实践分享》

《腾讯原创分享(二):何如大幅压缩移动网络下APP的流量消耗(下篇)》

《即时通讯音视频开发(十五):聊聊P2P与实时音视频的应用情形》

《IM消息送达保证机制实现(二):保证离线消息的可靠投递》

《P2P技术详解(三):P2P技术之STUN、TURN、ICE详解》

《现代IM系统中聊天消息的同步和存储方案探讨》

《移动端IM实践:谷歌消息推送服务(GCM)研究(来自微信)》

《Java新一代网络编程模型AIO原理及Linux系统AIO介绍》

《不为人知的网络编程(一):浅析TCP协议中的疑难杂症(上篇)》

《移动端IM开发时需面对的技术问题报告 报告 》

《新手入门贴:史上最全Web端即时通讯技术原理详解》

《WebSocket详解(二):技术原理、代码演示和应用案例》

《移动端安全通信的利器——端到端加密(E2EE)技术详解》

《求教android消息推送:GCM、XMPP、MQTT本身方案的优劣》

1)消息的同步:将消息删剪的、快速的从发送方传递到接收方,某些消息的同步。消息同步系统最重要的衡量指标某些消息传递的实时性、删剪性以及能支撑的消息规模。从功能上来说,一般共要要支持在线和离线推送,高级的IM系统还支持『多端同步』;

《一套海量在线用户的移动端IM采集实践分享(含删剪图文)》

《实时通信RTC技术栈之:视频编解码》

《WebSocket详解(三):深入WebSocket通信协议细节》

当然写扩散这一 同步模式,还时需除理某些极端场景,类似万人大群。针对这一 极端写扩散的场景,会退化到使用读扩散。一几条多简单的IM系统,通常会在产品层面限制这一 大群的所处,而对于一几条多高级的IM系统,会采用读写扩散混合的同步模式,来满足类似产品的需求。

《即时通讯音视频开发(二):视频编解码之数字视频介绍》

《通俗易懂:快速理解P2P技术中的NAT穿透原理》

《即时通讯安全篇(四):实例分析Android中密钥硬编码的风险》

《移动端实时音视频直播技术详解(四):编码和封装》

《微信对网络影响的技术试验及分析(论文全文)》

《NIO框架入门(一):服务端基于Netty4的UDP双向通信Demo演示》

《开源IM工程“蘑菇街TeamTalk”的现状:一场有始无终的开源秀》

《移动端IM中大规模群消息的推送何何如证强度单位、实时性?》

《简述实时音视频聊天中端到端加密(E2EE)的工作原理》

《开发IM是当时人设计协议用字节流好还是字符流好?》

如图是Timeline模型的一几条多抽象表述,Timeline能无需 简单理解为是一几条多消息队列,但这一 消息队列有如下特征:

《声网架构师谈实时音视频云的实现难点(视频采访)》

《Comet技术详解:基于HTTP长连接的Web端实时通信技术》

消息漫游也是基于Timeline,和消息同步唯一的区别是,消息漫游要求服务端无需 对Timeline内的所有数据进行持久化。

新的消息永远在尾部加进,保证新的消息的SeqId永远比肯能所处队列中的消息都大;

《IM单聊和群聊中的在线情形同步应该用“推”还是“拉”?》

《理论经典:TCP协议的3次握手与4次挥手过程详解》

消息同步模型会比消息存储模型稍复杂性某些,消息的同步一般有读扩散和写扩散本身不同的措施,分别对应不同的Timeline物理模型。

《即时通讯安全篇(一):正确地理解和使用Android端加密算法》

《IM消息送达保证机制实现(二):保证离线消息的可靠投递》

《何如解读《微信技术总监谈架构:微信之道——大道至简》》

《学习RFC35500:RTP/RTCP实时传输协议基础知识》

《深入的聊聊Android消息推送这件小事》

《请问大家知道语音留言聊天的主流实现措施吗?》

《高性能网络编程(一):单台服务器并发TCP连接数到底能不是 几条》

《缘何基于TCP协议的移动端IM仍然时需心跳保活机制?》

>>更多类似文章 ……

《Web端即时通讯技术盘点:短轮询、Comet、Websocket、SSE》

传统架构下,消息是先同步后存储:

《扫盲贴:浅谈iOS和Android后台实时消息推送的原理和区别》

如图是读扩散和写扩散本身不同同步模式下对应的不同的Timeline模型,按图中的示例,A作为消息接收者,其与B/C/D/E/F所处了会话,每个会话中的新的消息都时需同步到A的某个端,看下读扩散和写扩散本身模式下消息何如做同步。

《应用保活终极总结(三):Android6.0及以上的保活实践(被杀复活篇)》

>>更多类似文章 ……

《浅谈实时音视频直播中直接影响用户体验的几项关键技术指标》

《简述移动端IM开发的哪几种坑:采集、通信协议和客户端》

《即时通讯音视频开发(十四):实时音视频数据传输协议介绍》

《微信新一代通信安全除理方案:基于TLS1.3的MMTLS详解》

《Web端即时通讯安全:跨站点WebSocket劫持漏洞详解(含示例代码)》

《TCP/IP详解-第18章·TCP连接的建立与终止》

《QQ音乐团队分享:Android中的图片压缩技术详解(上篇)》

2)无需 支持高并发写和范围读,规模在十万级TPS;

《通俗易懂:基于集群的移动端IM接入层负载均衡方案分享》

《开源实时音视频技术WebRTC中RTP/RTCP数据传输协议的应用》

优点是消息只时需写一次,相比写扩散的模式,无需 大大降低消息写入次数,很糙是在群消息这一 场景下。但其缺点也比较明显,接收端去同步消息的逻辑会相对复杂性和低效。接收端时需对每个会话都拉取一次无需 获取删剪消息,读被大大的放大,某些会产生统统无效的读,肯能并回会 每个会话回会有新消息产生。

《即时通讯音视频开发(九):实时语音通讯的回音及回音消除�概述》

《使用WebSocket和SSE技术实现Web端消息推送》

[9] 有关推送技术的文章:

《移动端实时音视频直播技术详解(三):除理》

《蘑菇街即时通讯/IM服务器开发之架构取舍》

统统服务端他不知道消息啥以还还可不可以无需 回收,通常的做法是何如儿 库里的消息设定一几条多固定的生命周期,类似一周肯能一几条多月,生命周期开始可被淘汰。

IM场景下,四根绳子 消息只会产生一次,某些会被读取多次,是典型的读多写少的场景,消息的读写比例共就是10:1。若使用读扩散同步模式,整个系统的读写比例会被放大到5000:1。

[6] 有关IM安全的文章:

《一套原创分布式即时通讯(IM)系统理论架构方案》

[3] 有关IM/推送的心跳保活除理:

《信鸽团队原创:一并走过 iOS10 上消息推送(APNS)的坑》

《良心分享:WebRTC 零基础开发者教程(中文)》

以上是传统架构和现代架构的一几条多简单的对比,现代架构上整个消息的同步和存储流程,并那么变复杂性太满,某些其能实现多端同步以及消息漫游。现代架构中最核心的某些一几条多消息库『消息同步库』和『消息存储库』,是消息同步和存储最核心的基础。而本篇文章接下来的帕累托图,回会 围绕这一 几条多库的设计和实现来展开。

《移动端实时音视频直播技术详解(一):开篇》

[5] 有关IM采集:

《删剪自已开发的IM该何如设计“失败重试”机制?》

《58到家实时消息系统的协议设计等技术实践分享》

1)表特征设计无需 满足Timeline模型的功能要求:并非 求关系模型,无需 实现队列模型,并无需 支持生成自增的SeqId;

《IM实时音视频聊天时的回声消除技术详解》

《即时通讯安全篇(三):常用加解密算法与通讯安全讲解》

《腾讯原创分享(一):何如大幅提升移动网络下手机QQ的图片强度单位单位和成功率》

《何如取舍即时通讯应用的数据传输格式》

《腾讯QQ1.4亿在线用户的技术挑战和架构演进之路PPT》

《腾讯信鸽技术分享:百亿级实时消息推送的实战经验》

《何何如证IM实时消息的“时序性”与“一致性”?》

《来自阿里OpenIM:打造安全可靠即时通讯服务的技术实践分享》

《实践分享:何如构建一套高可用的移动端消息推送系统?》

《蘑菇街即时通讯/IM服务器开发之架构取舍》

《网易视频云技术分享:音频除理与压缩技术快速入门》

[2] 有关IM/推送的通信格式、协议的取舍:

《基于RTMP数据传输协议的实时流媒体技术研究(论文全文)》

消息同步库:

《实时语音聊天中的音频除理与编码压缩技术简述》

基于Timeline模型,以及Timeline模型在消息存储和消息同步的应用,当我你要们 看下消息同步库和消息存储库的设计。

《移动端即时通讯协议取舍:UDP还是TCP?》

[1] 网络编程基础资料:

《移动端实时视频直播技术实践:何如做到实时秒开、流畅不卡》

《即时通讯音视频开发(五):认识主流视频编码技术H.264》

《移动端实时音视频直播技术详解(六):延迟优化》

《不为人知的网络编程(五):UDP的连接性和负载均衡》

《高性能网络编程(二):上一几条多10年,著名的C10K并发连接问题报告 报告 》

《Go语言构建千万级在线的高并发消息推送系统实践(来自3500公司)》

《UDP中一几条多包的大小最大能多大?》

《微信技术总监谈架构:微信之道——大道至简(演讲全文)》

3)无需 保存海量数据,百TB级;

《为哪几种QQ用的是UDP协议而回会 TCP协议?》

[8] IM开发综合文章:

《移动端实时音视频直播技术详解(五):推流和传输》

《即时通讯音视频开发(十一):实时语音通讯丢包补偿技术详解》

《简述移动端IM开发的哪几种坑:采集、通信协议和客户端》

《不为人知的网络编程(六):深入地理解UDP协议并用好它》

《腾讯原创分享(二):何如大幅压缩移动网络下APP的流量消耗(上篇)》

写扩散:

《即时通讯系统的原理、技术和应用(技术论文)》

《从零到卓越:京东客服即时通讯系统的技术架构演进历程》

>>更多类似文章 ……

《QQ音乐团队分享:Android中的图片压缩技术详解(下篇)》

本章主要会介绍基于TableStore的现代IM消息系统的采集,在删剪介绍采集如果,会先介绍本身Timeline逻辑模型,来抽象和复杂性对IM消息同步和存储模型的理解。理解了Timeline模型后,会介绍何如基于此模型对消息的同步以及存储进行建模。基于Timeline模型,在实现消息同步和存储时回会有各方面的技术权衡,类似何如对消息同步常见的读扩散和写扩散本身模型进行对比和取舍,以及针对Timeline模型的特征何如来取舍底层数据库。

《17年的实践:腾讯海量产品的技术措施论》

《计算机网络通讯协议关系图(中文珍藏版)》

《理论联系实际:一套典型的IM通信协议设计详解》

《P2P技术详解(一):NAT详解——删剪原理、P2P简介》

>>更多类似文章 ……

《魅族25000万长连接的实时消息推送架构的技术实践分享》

如图是基于Timeline的消息存储模型,消息存储要求每个会话都对应一几条多独立的Timeline。如图例子所示,A与B/C/D/E/F均所处了会话,每个会话对应一几条多独立的Timeline,每个Timeline内存有这一 会话中的所有消息,服务端会对每个Timeline进行持久化。服务端无需 对所有会话Timeline中的全量消息进行持久化,也就拥有了消息漫游的能力。

每个消息拥有一几条多顺序ID(SeqId),在队列上边的消息的SeqId一定比前面的消息的SeqId大,也某些保证SeqId一定是增长的,某些并非 求严格递增;

这一 库不时需永久保留所有时需同步的消息,肯能消息在同步到所有端后其生命周期就能无需 开始,就能无需 被回收。某些如前面所介绍的,一几条多实现简单的多端同步消息系统,在服务端无需保存有所有端的同步情形,某些依赖端当时人主动来做同步。

可根据SeqId随机定位到具体的某条消息进行读取,无需 无需 任意读取某个给定范围内的所有消息。

(本文同步发布于:http://www.52im.net/thread-12500-1-1.html )

《即时通讯安全篇(二):探讨组合加密算法在IM中的应用》

《Web端即时通讯安全:跨站点WebSocket劫持漏洞详解(含示例代码)》

《通俗易懂-深入理解TCP协议(下):RTT、滑动窗口、拥塞除理》

>>更多类似文章 ……

《即时通讯音视频开发(七):音频基础及编码原理入门》

基于Timeline,从逻辑模型能不无需 很简单的理解在服务端何如去实现消息同步和存储,并支持多端同步和消息漫游哪几种高级功能。落地到实现的难点主要在何如将逻辑模型映射到物理模型,Timeline的实现对数据库会有哪几种要求?当我你要们 应该取舍何种数据库去实现?哪几种是接下来会讨论到的问题报告 报告 。

>>更多类似文章 ……

《通俗易懂-深入理解TCP协议(上):理论基础》

《Android端消息推送总结:实现原理、心跳保活、遇到的问题报告 报告 等》

《网络编程懒人入门(二):快速理解网络通信协议(下篇)》

《即时通讯音视频开发(一):视频编解码之理论概述》

《传输层安全协议SSL/TLS的Java平台实现简介和Demo演示》

《网络编程懒人入门(一):快速理解网络通信协议(上篇)》

现代架构下,消息是先存储后同步:

《缘何微信、QQ原本的IM工具不使用GCM服务推送消息?》

《LinkedIn的Web端即时通讯实践:实现单机几十万条长连接》

《即时通讯音视频开发(六):何如开始音频编解码技术的学习》

《新手快速入门:WebSocket简明教程》

《理论联系实际:Wireshark抓包分析TCP 3次握手、4次挥手过程》

有了哪几种特征后,消息的同步能无需 拿Timeline来很简单的实现。图中的例子中,消息发送方是A,消息接收方是B,一并B所处多个接收端,分别是B1、B2和B3。A向B发送消息,消息时需同步到B的多个端,待同步的消息通过一几条多Timeline来进行交换。A向B发送的所有消息,回会保所处这一 Timeline中,B的每个接收端回会 独立的从这一 Timeline中拉退还息。每个接收端同步完毕后,回会在本地记录下最新同步到的消息的SeqId,即最新的一几条多位点,作为下次消息同步的起始位点。服务端无需保存各个端的同步情形,各个端均能无需 在任意时间从任意点开始拉退还息。

《应用保活终极总结(一):Android6.0以下的双程序守护保活实践》

《详解何如在NodeJS中使用Google的Protobuf》

《SSE技术详解:本身全新的HTML5服务器推送事件技术》

《理论联系实际:实现一几条多简单地基于HTML5的实时视频直播》

《首次披露:快手是何如做到百万观众同场看直播仍能秒开且不卡顿的?》

《高性能网络编程(三):下一几条多10年,是如果考虑C10M并发问题报告 报告 了》

本文内容主要涉及IM系统中的消息系统架构,探讨本身适用于大用户量的消息同步以及存储系统的架构实现,无需 支持消息系统中的高级特征『多端同步』以及『消息漫游』。在性能和规模上,无需 做到全量消息云端存储,百万TPS以及毫秒级延迟的消息同步能力。

《移动端IM开发时需面对的技术问题报告 报告 (含通信协议取舍)》

《移动端IM登录时拉取数据何如作到省流量?》

《一套原创分布式即时通讯(IM)系统理论架构方案》

《简述开源实时音视频技术WebRTC的优缺点》

《浅谈移动端IM的多点登陆和消息漫游原理》

《专访微信视频技术负责人:微信实时视频聊天技术的演进》

《即时通讯音视频开发(十七):视频编码H.264、VP8的前世今生》

《基于社交网络的Yelp是何如实现海量用户图片的无损压缩的?》

▲ Timeline模型

《强列建议将Protobuf作为你的即时通讯应用数据传输格式》

消息存储模型中,每个会话的Timeline中保存了这一 会话的全量消息。读扩散的消息同步模式下,每个会话中产生的新的消息,只时需写一次到其用于存储的Timeline中,接收端从这一 Timeline中拉取新的消息。

消息系统最核心的一几条多库是消息同步库和消息存储库,一几条多库对数据库有不同的要求:

《一几条多基于MQTT通信协议的删剪Android推送Demo》

《理论联系实际:一套典型的IM通信协议设计详解(含安全层设计)》

本文原作者:木洛,阿里云高级技术专家,内容有删减和修订,感谢原作者。

《IM消息送达保证机制实现(一):保证在线实时消息的可靠投递》

《微信团队原创分享:Android版微信后台保活实战分享(网络保活篇)》

▲ 读扩散和写扩散本身不同同步模式下对应的不同的Timeline模型

《即时通讯音视频开发(十六):移动端实时音视频开发的几条建议》

《技术峥嵘岁月:改变世界的TCP/IP协议(珍贵多图、手机慎点)》

《浅谈移动端IM的多点登陆和消息漫游原理》

▲ 上图是消息系统传统架构与现代架构的简单对比

《浅谈开发实时视频直播平台的技术要点》

《即时通讯音视频开发(三):视频编解码之编码基础》

《TCP/IP详解-第11章·UDP:用户数据报协议》

对于在线的用户,消息会直接实时同步到在线的接收方,消息同步成功后,并非 会进行持久化。而对于离线的用户肯能消息无法实时同步成功时,消息会持久化到离线库,当接收方重新连接后,会从离线库拉取所有未读消息。当离线库中的消息成功同步到接收方后,消息会从离线库中删除。传统的消息系统,服务端的主要工作是维护发送方和接收方的连接情形,并提供在线消息同步和离线消息缓存的能力,保证消息一定无需 从发送方传递到接收方。服务端无需对消息进行持久化,统统也无法支持消息漫游。

在IM这一 应用场景下,通常会取舍写扩散这一 消息同步模式。

总结下来,对数据库的要求有如下几点:

《极光推送系统大规模高并发架构的技术实践分享》

《即时通讯音视频开发(四):视频编解码之预测技术介绍》

>>更多类似文章 ……

《开源框架Pomelo实践:搭建Web端高性能分布式IM聊天服务器》

《网络编程懒人入门(四):快速理解TCP和UDP的差异》

《应用保活终极总结(二):Android6.0及以上的保活实践(程序防杀篇)》

《Android程序保活详解:一篇文章除理你的所有问题报告 报告 》

一几条多优化的好的系统,时需从设计上去平衡这一 读写压力,除理读或写任意一维触碰到天花板。统统IM系统类似场景下,通常会应用写扩散这一 同步模式,来平衡读和写,将5000:1的读写比例平衡到500:500。

《简述实时音视频聊天中端到端加密(E2EE)的工作原理》

《从HTTP到MQTT:一几条多基于位置服务的APP数据通信实践概述》

《不为人知的网络编程(四):深入研究分析TCP的异常关闭》

《绝对干货:基于Netty实现海量接入的推送服务技术要点》

《简述移动端IM开发的哪几种坑:采集、通信协议和客户端》

《何何如证IM实时消息的“时序性”与“一致性”?》

《TCP/IP详解-第21章·TCP的超时与重传》

>>更多类似文章 ……

▲ 基于Timeline的消息库设计

《基于WebSocket实现Hybrid移动应用的消息推送实践(含代码示例)》

《即时通讯音视频开发(十三):实时视频编码H.264的特点与优势》

消息同步库和消息存储库,对数据库有不同的要求,何如对数据库做选型,在下面会讨论。

《全方位评测:Protobuf性能到底有那么比JSON快5倍?》

《即时通讯音视频开发(十二):多人实时音视频聊天架构探讨》

《WebSocket详解(一):初步认识WebSocket技术》

本文主要介绍了现代IM系统中消息推送和存储架构的实现,基于逻辑的Timeline模型,当我你要们 能无需 很清晰明了的理解整个消息推送和存储的架构。而基于Timeline的消息存储和推送模型,我觉得不光能无需 应用在IM消息系统中,还可应用在类似Feeds流、实时消息同步、直播弹幕等场景。

《一套海量在线用户的移动端IM采集实践分享(含删剪图文)》

[4] 有关WEB端即时通讯开发:

《一几条多基于长连接的安全可扩展的订阅/推送服务实现思路》

《移动端IM登录时拉取数据何如作到省流量?》

写扩散的消息同步模式,时需有一几条多额外的Timeline来专门用于消息同步,通常是每个接收端回会拥有一几条多独立的同步Timeline,用于存放时需向这一 接收端同步的所有消息。

消息存储库用于存储所有会话的Timeline,每个Timeline所含了一几条多会话中的所有消息。这一 库主要用于消息漫游时拉取某个会话的所有历史消息,也用于读扩散模式的消息同步。

《NIO框架入门(二):服务端基于MINA2的UDP双向通信Demo演示》

在分析『消息同步库』和『消息存储库』的设计和实现如果,在本章会先介绍一几条多逻辑模型-Timeline。Timeline模型会帮助当我你要们 复杂性对消息同步和存储模型的理解,而消息库的设计和实现也是围绕Timeline的特征和需求来展开。

《高性能网络编程(四):从C10K到C10M高性能网络应用的理论探索》

4)无需 为数据定义生命周期。

先存储后同步的好处是,肯能接收方确认接收到了消息,那这条消息一定是肯能在云端保存了。某些消息会有一几条多库来保存,一几条多是消息存储库,用于全量保存所有会话的消息,主要用于支持消息漫游。原本是消息同步库,主要用于接收方的多端同步。

《IM群聊消息那么复杂性,何何如证不丢不重?》

《专访魅族架构师:海量长连接的实时消息推送系统的心得体会》

IM系统在互联网初期即所处,其基础技术架构在这十几年的发展中更新迭代多次,从早期的CS、P2P架构,到现在后台肯能演变为一几条多复杂性的分布式系统,涉及移动端、网络、安全和存储等技术的方方面面。其支撑的规模也从早期的少许日活,到现在微信这一 巨头最新组阁 的达到9亿的日活的体量。

《即时通讯安全篇(六):非对称加密技术的原理与应用实践》

《Android直播入门实践:动手搭建一套简单的直播系统》

《移动端IM实践:WhatsApp、Line、微信的心跳策略分析》

消息同步库用于存储所有用于消息同步的Timeline,每个Timeline对应一几条多接收端,主要用作写扩散模式的消息同步。

《不为人知的网络编程(三):关闭TCP连接时为哪几种会TIME_WAIT、CLOSE_WAIT》

>>更多类似文章 ……

《何如优化传输机制来实现实时音视频的超低延迟?》

《socket.io实现消息推送的某些实践及思路》

《详解Web端通信措施的演进:从Ajax、JSONP 到 SSE、Websocket》

《开源实时音视频技术WebRTC在Windows下的简明编译教程》

每个会话中的消息,会产生多次写,除了写入用于消息存储的会话Timeline,还时需写入时需同步到的接收端的同步Timeline。在当时人与当时人的会话中,消息会被额外写两次,除了写入这一 会话的存储Timeline,还时需写入参与这一 会话的一几条多接收者的同步Timeline。而在群这一 场景下,写入会被更加的放大,肯能这一 群拥有N个参与者,那每条消息都时需额外的写N次。

IM系统中最核心的帕累托图是消息系统,消息系统中最核心的功能是消息的同步和存储:

《浅谈IM系统的采集》

《一几条多低成本确保IM消息时序的措施探讨》

写扩散同步模式的优点是,在接收端消息同步逻辑会非常简单,只时需从其同步Timeline中读取一次即可,大大降低了消息同步所需的读的压力。其缺点某些消息写入会被放大,很糙是针对群这一 场景。

《浅谈IM系统的采集》

消息存储库:

《IBM技术经理访谈:MQTT协议的制定历程、发展现状等》

《不为人知的网络编程(二):浅析TCP协议中的疑难杂症(下篇)》

http://www.52im.net/forum.php?mod=collection&op=all

《微信后台基于时间序的海量数据冷热分级采集实践》

《一几条多低成本确保IM消息时序的措施探讨》

《还在靠“喂喂喂”测试实时语音通话质量?本文教你科学的评测措施!》

>>更多类似文章 ……

2)消息的存储:消息存储即消息的持久化保存,这里回会 指消息在客户端本地的保存,某些指云端的保存,功能上对应的某些『消息漫游』。『消息漫游』的好处是能无需 实现账号在任意端登陆查看所有历史消息,这也是高级IM系统特有的功能之一。

▲ 基于Timeline的消息存储模型

《移动端IM中大规模群消息的推送何何如证强度单位、实时性?》

消息从发送方发出后,经过服务端转发,服务端会先将消息保存到消息存储库,后保存到消息同步库。完成消息的持久化保存后,对于在线的接收方,会直接取舍在线推送。但在线推送并回会 一几条多时需路径,某些一几条多更优的消息传递路径。

《微信团队原创分享:Android版微信后台保活实战分享(程序保活篇)》

《谈谈移动端 IM 开发中登录请求的优化》

《简述传输层协议TCP和UDP的区别》

《移动端IM实践:实现Android版微信的智能心跳机制》

IM全称是『Instant Messaging』,中文名是即时通讯。在这一 高度信息化的移动互联网时代,生活中IM类产品肯能成为必备品,比较有名的如钉钉、微信、QQ等以IM为核心功能的产品。当然目前微信肯能成长为一几条多生态型产品,但其核心功能还是IM。还有某些非以IM系统为核心的应用,最典型的如某些在线游戏、社交应用,IM也是其重要的功能模块。能无需 说,所含社交属性的应用,IM功能一定是必不可少的。

对于在线推送失败肯能离线的接收方,会有另外一几条多统一的消息同步措施。接收方会主动的向服务端拉取所有未同步消息,但接收方啥以如果同步以及会在哪几种端来同步消息对服务端来说是未知的,统统要求服务端时需保存所有时需同步到接收方的消息,这是消息同步库的主要作用。对于新的同步设备,会有消息漫游的需求,这是消息存储库的主要作用,在消息存储库中,能无需 拉取任意会话的全量历史消息。

《TCP/IP详解-第17章·TCP:传输控制协议》

《何如用最简单的措施测试你的实时音视频方案》

《移动端实时音视频直播技术详解(二):采集》

《扫盲贴:认识MQTT通信协议》

《网络编程懒人入门(三):快速理解TCP协议一篇就够》

《移动端IM中大规模群消息的推送何何如证强度单位、实时性?》

《NIO框架入门(四):Android与MINA2、Netty4的跨平台UDP双向通信实战》

《移动端实时消息推送技术浅析》

《技术揭秘:支持百万级粉丝互动的Facebook实时视频直播》

《快速裂变:见证微信强大后台架构从0到1的演进历程(一)》

[10] 更多即时通讯技术好文分类:

《Web端即时通讯技术的发展与WebSocket、Socket.io的技术实践》

《即时通讯安全篇(五):对称加密技术在Android平台上的应用实践》

《Android端消息推送总结:实现原理、心跳保活、遇到的问题报告 报告 等》

(本文同步发布于:http://www.52im.net/thread-12500-1-1.html)

《NIO框架入门(三):iOS与MINA2、Netty4的跨平台UDP双向通信实战》

《iOS的推送服务APNs详解:设计思路、技术原理及过高 等》

《从零到卓越:京东客服即时通讯系统的技术架构演进历程》

《IM消息送达保证机制实现(一):保证在线实时消息的可靠投递》

《即时通讯音视频开发(八):常见的实时语音通讯编码标准》

读扩散:

《如约而至:微信自用的移动端IM网络层跨平台组件库Mars已正式开源》

[7] 有关实时音视频开发:

《深入的聊聊Android消息推送这件小事》

《即时通讯音视频开发(十):实时语音通讯的回音消除�技术详解》