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

一、场景

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

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

二、产品需求点

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

实时通信:主要要求低延时和接通率。
低延时:你打一通电话,每说一句话,对方得几秒钟才有回应,这电话你也讲不下去了吧。
接通率:你打电话,你这边听到接通了,实际上对方的手机毫无反应,这实际上就没接通。这跟短信没送到,造成的恶劣影响是一样的。不知道会破坏多少美好姻缘。

三、技术环节

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

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

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

四、传输协议

公共互联网上,最常用的通信协议有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%,基于以上标准,进行筛选和部署服务器,可以大大优化端到端的传输路径,也大大降低时延的概率。

五、成本

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

二者成本会产生差异的环节有:

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

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

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

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

六、开源项目

即时通信:XMPP,MQTT
实时通信:WebRTC、 Tokbox

七、实时通信有哪些开创性的应用场景

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

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

互动直播:

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

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

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

互动在线教育:

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

在线视频问诊

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

本文作者:王俊豪 声网Agora.io  SDK工程师

即时通信和实时通信的区别相关推荐

  1. 即时通信(IM)和实时通信(RTC)的区别

    即时通信(IM=nstant messaging)和实时通信(rtc=Real-time communication)都是一套网络通信系统,其本质都是对信息进行转发.其最大的不同点,是对信息传递的时间 ...

  2. WebSocket 实现 Web 端即时通信

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:牛人 20000 字的 Spring Cloud 总结,太硬核了~ 前言 WebSocket 是HTML5开始提 ...

  3. Ricochet —— 基于 Tor 的加密即时通信工具

    Ricochet 是一个基于 Tor 的加密即时通信工具 Ricochet 是个与众不同的实时通信,不相信你的验证,你的联系列表和你的通信. 无需暴露你的认证(IP 地址)给任何人就可以进行聊天 没有 ...

  4. [译] 什么是即时通信(Instant Messaging)

    您的孩子在用它,您的同事们在用它,但是您是否尝试过即时通信呢? 在在家玩电脑的孩子,以及工作的人们当中,即时通信已成为十分流行的交流方式.Gartner组织预测,自2004年起,将有60%的实时通信会 ...

  5. 前端如何实现即时通信?

    一.ajax短轮询 短轮询的原理很简单,每隔⼀段时间客户端就发出⼀个请求,去获取服务器最新的数据,⼀定程度上模拟实现了即时通讯. 1.优点:兼容性强,实现非常简单. 2.延迟性高,非常消耗请求资源,影 ...

  6. android-使用环信SDK开发即时通信功能及源码下载

    最近项目中集成即时聊天功能,挑来拣去,最终选择环信SDK来进行开发,选择环信的主要原因是接口方便.简洁,说明文档清晰易懂.文档有android.ios.和后台服务器端,还是非常全的. 环信官网:htt ...

  7. 【新知实验室 - TRTC 实践】音视频互动 Demo、即时通信 IM 服务搭建

    一.TRTC 初识 TRTC 是什么 TRTC(Tencent RTC)腾讯实时音视频,源自于 QQ 音视频团队,是基于 QQ 音视频多年来的音视频技术积累,位于腾讯云的 RTC 云服务.TRTC 支 ...

  8. 视频会议系统EasyRTC常见的几种架构方式及应用场景:MCU/SFU、视频会议、应急指挥、即时通信

    我们这里常说的RTC可以理解为WebRTC技术,因为WebRTC技术是目前使用最广泛的即时通信技术,虽然在早期我们提到WebRTC.提到视频通话就会想到P2P的方式,但实际的视频通话方式背后的逻辑有很 ...

  9. BIO、NIO、AIO 详解和基于BIO模式下即时通信

    第一章 BIO.NIO.AIO课程介绍 身边同学写的,没发布出来,我算是转载 1.1 课程说明 ​ 在Java的软件设计开发中,通信架构是不可避免的,我们在进行不同系统或者不同进程之间的数据交互,或者 ...

最新文章

  1. 扫盲:关于Android手机内存ROM、RAM还有SD卡的解释
  2. 使用Global.asax在ASP.NET中记录错误日志
  3. windows7与虚拟机fedora 9.0文件共享
  4. 编译-C语言库FFTW支持iOS平台的静态库
  5. Ardino基础教程 8_模拟值
  6. 竖流式沉淀池集水槽设计计算_竖流式沉淀池的设计
  7. python中对象的定义_全面了解python中的类,对象,方法,属性
  8. socket 服务器
  9. 126邮件POP3,SMTP服务器与端口设置
  10. java项目 无法重命名_无法重命名数据库?
  11. 关于对比学习在医学图像理解中两篇Paper的思考
  12. python创建一个国际象棋棋盘,Jupyter Notebook:实现国际象棋棋盘
  13. 发布3天获推荐10w+,视频号内容出现新玩法?
  14. pytorch中view()和flatten
  15. Vue视频流播放器 Vue-Core-Video-Player
  16. runauto 病毒
  17. winDebug 调试
  18. 完成GitHub上squirrel 的运行(数据库的模糊测试)
  19. decibel,dBm,dBi,dBd
  20. 小傻蛋的妹妹跟随小甲鱼学习Python的第十六节016

热门文章

  1. 基于angularjs的单页面实例_angularjs实例网站
  2. eclipse jvm_一种与众不同的JVM语言:Eclipse Xtend(现在适用于Android)
  3. 实现用户输入用户名和密码登录
  4. 零基础轻松学python青少年趣味编程pdf_零基础轻松学PYTHON:青少年趣味编程(全彩版) 快学习教育编著 著...
  5. OpenGL_10 3D空间中移动图像
  6. 计算机颜色管理器,系统颜色管理完全攻略
  7. AMD首款5纳米PC处理器锐龙7000亮相,频率首破5GHz大关,单核性能提升15%
  8. mobi转为html,MOBI to HTML
  9. algorithm java_Java KeyPairGenerator getAlgorithm()用法及代码示例
  10. keypair java_Java KeyPairGenerator generateKeyPair()用法及代码示例