如何区别即时通讯和实时通讯


实时通讯与即时通讯算法

即时通讯(im)和实时通讯(声网Agora.io)都是一套网络通讯系统,其本质都是对信息进行转发。其最大的不一样点,是对信息传递的时间规定。两者的区别能够从如下几个方面:api

1、场景缓存

常见的即时通讯场景包括文字聊天、语音消息发送、文件传输、音视频播放等。通俗的说,就是发短信。服务器

实时通讯的场景包括语音、视频电话会议、网络电话等。通俗的说,就是打电话。网络

2、产品需求点优化

即时通信:主要要求可靠,考核送达率。要是你发一条短信,结果丢了,对方没收到!你不再相信短信了吧。ui

实时通讯:主要要求低延时和接通率。
低延时:你打一通电话,每说一句话,对方得几秒钟才有回应,这电话你也讲不下去了吧。
编码

接通率:你打电话,你这边听到接通了,实际上对方的手机毫无反应,这实际上就没接通。这跟短信没送到,形成的恶劣影响是同样的。不知道会破坏多少美好姻缘。spa


3、技术环节.net

即时通讯技术环节:消息发送和确认,【消息接入端、服务端消息逻辑处理,服务端消息缓存和存储,转发,服务端用户状态管理,心跳机制,消息发送端】、消息接收和确认。

实时通讯技术环节:采集、前处理、编码、【服务端接入、转发、服务端接入】、解码、播放和渲染。

这些技术环节重合的部分是:信息转发。

4、传输协议

公共互联网上,最经常使用的通讯协议有TCP、UDP。

TCP:Transmission Control Protocol,传输控制协议是基于链接的协议,也就是说,在正式收发数据前,必须和对方创建可靠的链接。有延迟不可控的特色。

UDP:User Data Protocol,用户数据报协议,是与TCP相对应的协议。它是面向非链接的协议,它不与对方创建链接,而是直接就把数据包发送过去。 存在丢包、抖动、延迟的特征。

即时通讯系统为了保证链接的可靠性,最经常使用的是TCP协议或者类TCP链接协议。这类协议的特色是追求链接的可靠性,而形成了延迟的不可控性,超过2秒的延迟响应是常态,甚至几十分钟的延迟响应,而电信级的实时通讯标准是400ms,而基于互联网的实时通讯须要另辟蹊径,开创出新的传输解决方案。这又与应用场景相关了。发短信,延迟几秒钟送达,对使用者影响不大。

实时通讯,声网Agora.io采用 UDP 做为基础传输协议。在设计低延时的实时通讯服务时,UDP 表现要比 TCP 好得多。这是由于实时通讯中,低时延比可靠性更重要。打电话,几秒的延迟是不能忍受的。


TCP协议封装了消息的重传机制,在丢包的状况下,采用TCP协议的应用程序几乎没法优化这个重传机制,来达到低时延的效果。特别是在移动互联网络中,超过30%丢包时,TCP 的延时能够到几十分钟, 超过 50%丢包时,甚至很容易断开。 在一样丢包30%的链路上,UDP还能够传输数据,TCP就没法进行实时通讯了。

Agora.io声网基UDP协议,对丢包的状况开发了各类算法进行补偿,一方面尽可能保证和恢复数据的连续性。另一方面,当某些数据包没法恢复时,会丢弃对应的音视频数据包,而不会影响后续的实时通讯服务。此外, 采用多机房部署,尽可能缩短客户端到机房的接入,并保证机房间的RTT小于60ms和400ms内丢包率小于1%,基于以上标准,进行筛选和部署服务器,能够大大优化端到端的传输路径,也大大下降时延的几率。


5、成本

成本涉及到的环节有:服务端接入、存储和转发。(人工成本就不谈了)

两者成本会产生差别的环节有:

从服务端接入方式来看,即时通讯采用TCP协议来保证可靠性,可能会创建多个链接,相比无链接的UDP传输方式,这是一种昂贵的传输方式。实时通讯能够基于UDP协议,与服务端创建灵活的、快速的接入机制。

存储方面,实时通讯在服务端是实时转发,不会在服务端存储数据,而即时消息系统通常会将缓存转为存储数据,包括富媒体数据,会占用大量的存储空间,产生更多的存储成本。

从成本上来看,传输一样信息量的数据,基于TCP的即时通讯方式,更侧重于可靠性,会优先采用多线机房的传输方式,成本比较高;

而基于UDP的实时通讯方式,会优先选取最优路径进行传输数据,并能够动态调整传输路径,这样可以高效的利用带宽,提升传输效率,下降成本。

6、开源项目

即时通讯:XMPP,MQTT

实时通讯:WebRTC、 Tokbox


7、实时通讯有哪些开创性的应用场景

虽然前面一直在拿打电话举例子,但基于互联网的实时通讯与打电话有本质的区别。

实时通讯是富媒体通讯,不但有语音,还有视频,这就赋予了不少传统场景新的想象力。

互动直播:

传统直播是基于CDN的一对多直播,主播演、观众看。主播与观众之间的互动,仅限于送花、打赏,很难实现主播与观众对话。

电视台新闻节目,基于电视网络传播。演播厅里的主播与场外的外景主持人有对话,这实际上中间是有导播的参与。导播听到外景主持人开始说话,就马上告诉主播赶忙开始说话。给观众形成了演播厅在和外景主持人“对话”的假象。

若是基于实时通讯技术来进行直播,那么主播和观众之间的对话,就是真正意义上的对话。还能够有更多开创性的互动直播场景,好比:身处异地的双人主播辩论。

互动在线教育:

老师和学生能够实时对话,不懂就问,问了就答。这是教育的刚需,谁能够解决这个问题,谁就能大幅度的提升教学质量。

在线视频问诊

医生和患者,能够经过视频就进行诊断。患者在偏远地区,医生在国外,经过视频就能够完成初步诊断。整形美容术前咨询,医生能够经过视频对患者完成首次初诊


----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------