即时通讯和实时通讯的区别

news2024/9/22 13:30:07

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

一、场景

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

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

二、产品需求点

即时通讯: 主要要求可靠,考核送达率。假如发一条短信,结果对方没收到!你还相信短信吗?

实时通讯: 主要要求低延时和接通率。

低延时: 你打电话每说一句,对方得几秒钟才有回应,这电话你也讲不下去了吧。

接通率: 打电话时你这边显示接通了,实际上对面的手机毫无反应,就是没接通。这跟短信没送到,造成的恶劣影响是一样的。

可以参考下anyRTC的通讯技术文档,我们是覆盖全媒体的,而且我们的编解码技术在超低延时方面有很显著的效果。

三、技术环节

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

实时通讯技术环节: 采集、前处理、编码、【服务端接入、转发、服务端接入】、解码、播放和渲染。这些技术环节重合的部分是:信息转发。

四、传输协议

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

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

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

即时通讯 系统为了保证连接的可靠性,最常用的是TCP协议或者类TCP连接协议。这类协议的特点是追求连接的可靠性,而造成了延时的不可控性,超过2秒的延时响应是常态,甚至几十分钟的延时响应,而电信级的实时通讯标准是400ms,而基于互联网的实时通讯需要另辟蹊径,开创出新的传输解决方案。这又与应用场景相关了。发短信,延时几秒钟送达,对使用者影响不大。即时通讯聊天软件app开发可以加小蓝豆的v:weikeyun24咨询

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

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

基于UDP协议,加上对丢包的情况开发了各种算法进行补偿,一方面尽量保证和恢复数据的连续性。另外一方面,当某些数据包无法恢复时,会丢弃对应的音视频数据包,而不会影响后续的实时通讯服务。

五、成本

成本涉及到的环节有:服务端接入、存储和转发。

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/383451.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【RocketMQ】消息的刷盘机制

刷盘策略 CommitLog的asyncPutMessage方法中可以看到在写入消息之后&#xff0c;调用了submitFlushRequest方法执行刷盘策略&#xff1a; public class CommitLog {public CompletableFuture<PutMessageResult> asyncPutMessage(final MessageExtBrokerInner msg) {// …

docker(一)简介、环境搭建

文章目录前言一、docker简介1.什么是docker2. 什么是容器3.传统的虚拟化技术和容器之间的差别4.容器是如何运行的二、docker环境部署及测试1.环境部署&#xff1a;2.通过镜像运行容器3.拉取镜像前言 一、docker简介 1.什么是docker Docker是一个开源的应用容器引擎&#xff0…

TDEngine集群监控组件安装配置(Telegra+Grafana方案)

Tdengine的监控指标包括以下几个方面&#xff1a; 系统指标&#xff1a;CPU使用率、内存使用率、磁盘空间、网络流量等。数据库指标&#xff1a;连接数、查询数、写入数、读取数等。SQL指标&#xff1a;执行时间、执行计划、索引使用情况等。集群指标&#xff1a;节点状态、数…

生命周期:Vue,微信小程序

目录 一、vue2生命周期&#xff08;钩子函数&#xff09; 二、vue3生命周期&#xff08;钩子函数&#xff09; 三、vue-router3钩子函数&#xff08;与vue2匹配&#xff09; 1、全局钩子&#xff08;全局守卫&#xff09; 2、路由内钩子&#xff08;路由独享的守卫&#x…

Python3-字典

Python3 字典 字典是另一种可变容器模型&#xff0c;且可存储任意类型对象。 字典的每个键值 key>value 对用冒号 : 分割&#xff0c;每个对之间用逗号(,)分割&#xff0c;整个字典包括在花括号 {} 中 ,格式如下所示&#xff1a; d {key1 : value1, key2 : value2, key3…

HTTP头注入

HTTP头注入HTTP Header概述HTTP报文类型HTTP请求方法HTTP Header内容HTTP Header注入HTTP Header注入实例User-Agent注入XFF注入HTTP Header概述 HTTP报文类型 请求报文&#xff1a;由客户端发送给服务器的消息&#xff0c;其组成包括请求行&#xff0c;请求头和请求体。响应…

区块链安全正当时|《Hyperledger Fabric2.0架构安全报告》解读

2021年&#xff0c;《中华人民共和国国民经济和社会发展第十四个五年规划和2035年远景目标纲要》将区块链纳入数字产业&#xff0c;对其发展作出了重要部署。同年6月中央网信办和工信部联合印发了《关于加快推动区块链技术应用和产业发展的指导意见》&#xff0c;提出加快区块链…

Babel-好文

ES6的很多语法在浏览器甚至node环境中无法执行&#xff0c;babel就是一个广泛使用的转码器&#xff0c;可以将ES6代码转化成ES5代码定义一个文件夹&#xff0c;cmd进入到其中&#xff0c;运行npm install -g babel-cli安装&#xff0c;然后可以通过babel --version查看是否安装…

odoo15 登录界面的标题自定义

odoo15 登录界面的标题自定义 原代码中查询:<title>Odoo<title> <html> <head><meta http-equiv="content-type" content="text/html; charset=utf-8" /><title>Odoo</title><link rel="shortcut icon…

Jvm调优实战笔记

一、基础命令jps 查看所有java进程jinfo 进程号 查看该线程相关信息3、jstat 统计信息&#xff08;数据跟踪信息&#xff09;jstat -gc 进程号 查看该线程在内存中每一块占用的大小jstat -gc 进程号 时间&#xff08;毫秒&#xff09; 更新频率4、jstack 跟踪线程jstack 进程号…

Ethercat系列(10)用QT实现SOEM主站

首先将SOEM编译成静态Lib库可以参考前面的博文(83条消息) VS2017下编译SOEM(Simle Open EtherCAT Master)_soem vs_CoderIsArt的博客-CSDN博客make_libsoem_lib.bat "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build" x86用QT创建…

【C++】多态虚表

多态——多种形态多态的分类&#xff1a;1.静态多态&#xff1a;函数重载和运算符重载&#xff08;复用函数名&#xff09;2.动态多态&#xff1a;派生类和虚函数实现运行时多态静态多态和动态多态的区别&#xff1a;静态多态的函数地址早绑定——编译阶段确定函数地址动态多态…

页面访问升级出错怎么解决

相信大家在访问网站的时候时常会遇到页面访问界面升级&#xff0c;暂时不可能进行访问操作&#xff0c;可能遇到这种情况很多小伙伴们都不知道怎么版&#xff0c;其实互联网网页在正常使用过程中是不会出现这种问题的。那么如果遇到页面访问界面升级怎么办?页面访问界面升级通…

TryHackMe-Binex

Binex 枚举计算机并获取交互式 shell。利用 SUID 位文件&#xff0c;使用 GNU 调试器利用缓冲区溢出并通过 PATH 操作获得根访问权限。 端口扫描 循例 nmap SMB枚举 题目给了提示&#xff1a;Hint 1: RID range 1000-1003 Hint 2: The longest username has the unsecure pa…

面试中问你查看日志的命令,可不能只说tail,cat,more

首选&#xff0c;如何查看日志&#xff1a; 很多初级测试人员&#xff0c;在进行执行测试用例这个步骤时&#xff0c;发现bug&#xff0c;不能更加的准确去定位bug&#xff0c;在这样的情况下就可以打开Linux服务器&#xff0c;敲命令查看操作进行中的实时日志&#xff0c;当系…

用arthas轻松排查线上问题

你是否在项目中会碰到以下一些问题&#xff1a; 在代码中打印各种日志来排查&#xff0c;比如方法的入参&#xff0c;出参&#xff0c;及在方法体中打印日志判断走哪行代码还有你觉得代码没问题&#xff0c;可是运行出现却是以前的bug&#xff0c;感觉代码没修改&#xff0c;或…

120.(leaflet篇)区域下钻,区域钻取

听老人家说:多看美女会长寿 地图之家总目录(订阅之前建议先查看该博客) 文章末尾处提供保证可运行完整代码包,运行如有问题,可“私信”博主。 效果如下所示: 下面献上完整代码,代码重要位置会做相应解释 <!DOCTYPE html> <html>

【RocksDB】Ubuntu20.04下编译rocksdb

前言&#xff1a; 我在刚学rocksdb的时候是在2022年&#xff0c;但是网上的资源很少&#xff0c;查了好久才把rocksdb安装成功&#xff0c;在这里向大家分享一下我的经历&#xff0c;安装过程中也报了很多错误&#xff0c;希望大家不要迷路 首先 在虚拟机里面安装依赖的包以…

python List和常用的方法

List&#xff1a;列表中包含多个数据&#xff0c;数据之间使用逗号分隔&#xff0c;索引从0开始。 空列表&#xff1a; dir&#xff1a;查看列表的所有方法 List常用方法&#xff1a;insert、append&#xff0c;extend、del、remove、pop、clear、count、index 增加insert(索引…

健身房戴耳机的人都喜欢戴哪款耳机健身、最好用健身耳机推荐

对于喜欢健身和运动人群来说&#xff0c;耳机可谓是重中之重了&#xff0c;带上耳机 听着喜欢的音乐&#xff0c;沉浸在自己的世界中&#xff0c;训练状态直接拉满…但是能适合运动佩戴的耳机真的不多&#xff0c;这类耳机要同时具备舒适度、防水性、稳固性、高续航等等性能&am…