【融云分析】选择IM云服务,需要看哪些核心技术指标?

IM(即时通讯)云服务已发展数年,不少企业与开发者都倾向于选择第三方IM云服务,短平快地为应用添加即时通讯能力,但如何选择服务商却是个难题,单从简单的功能介绍来看无法判断,因为IM云服务接入后,更重要的是检验服务是否稳定。近期艾瑞发布的《全球互联网通信云行业研究报告》指出,通信云行业的竞争壁垒将在于核心技术关键指标,包括质量和性能指标。

IM领域,艾瑞认为核心质量指标为可靠性,即消息的不丢失和不重复。此外IM服务还需要考量并发处理能力等性能指标等。在艾瑞报告中,融云是被评定为IM领域市场占有率第一的互联网通信云服务商,也是业内唯一承诺消息不丢、不重、不乱序的厂商。下面便来从技术上剖析下,融云利用了哪些手段实现稳定可靠的IM云服务。

 

一、基于融云私有通讯协议,实现服务的可靠性与安全性。

1.可靠性

即时通讯系统的可靠性体现在消息的可达率,也是IM最基本的质量要求:融云是业内唯一承诺消息可靠性100%的厂商。融云基于私有通讯协议,可实现:弱网环境下,消息发送方消息只要发送到服务器端,则服务器端能确保消息不丢、不乱、不重。

“不丢”是因为消息接收方客户端与服务器端通过推拉相结合的方式,确保消息一定能收到接收方客户端。“不乱”是因为在协议层面上针对每个数据包都做了序号标识处理。“不重”是当消息接收方收到消息后,因网络问题导致消息收到的回执未能发送给服务器端,服务器端超时处理会进行消息的重发,当客户端再次收到同一条消息时,会抛弃一条,只给用户显示一条。

2.安全性

基于融云自有知识产权的连接加密技术,可以防止黑客中间人方式进行数据窃听,数据在传输过程中不可破解,NAV导航服务与CMP连接管理服务的安全算法一致,每个客户端从导航服务获取到加密校验值(SM2标准),均按照安全算法与所连接的CMP服务进行安全协商,针对校验值CMP会进行合法性验证(SM3标准),协商的校验值不能在其他CMP连接管理服务上使用,消息在传输之前,通过SM4对数据进行加密,并且通过加密连接传输将信息发送到发送方所在CMP连接管理服务。之后,由发送方所在CMP连接管理服务进行解密并将解密后的消息发给消息服务,依据协议内容,由消息服务负责将信息传递给接收方所在CMP连接管理服务,而后CMP连接管理服务依据接收方的密钥进行信息加密,通过加密连接下发信息。

二、基于分布式微服务架构,保障亿级高并发性。

对于IM云服务,海量消息并发的稳定性也至关重要,比如一些场景出现同时在线人数飙升,需要实现自动水平扩展,应对海量并发。融云IM云服务采用分布式的微服务架构可以实现亿级消息的高并发,主要分为网关服务和应用服务两大类,各服务通过Zookeeper完成服务注册以及服务发现。所有的服务均可以采用集群化的方式部署,服务间的数据调用采用一致性哈希的方式进行集群负载。

 

1.服务的高可用性

服务节点通过Zookeeper在集群中同步自己节点状态,各节点可以快速的发现其他节点变化。通过哈希算法的散列特性,可以将请求均匀的分配到应用节点上,以达到均衡服务器资源利用的目的。

当同一服务节点的个数为N+1(N>0)时,某一个服务节点发生关闭或宕机,其余节点会立刻收到问题节点的状态变化通知,将其从一致性哈希环中将其剔除,后续请求将不会分配到此节点上,而剩余节点依然可以继续提供服务。通过一致性哈希的特性,问题节点的请求可以均匀的分布到其他节点上,不会出现连锁雪崩现象。

2.服务的可扩展性

“服务的启动及发现流程”为例,所有的服务都可以在线添加。而服务完成注册及发现流程后既可以对外提供服务。

三、基于全球多节点覆盖,保障全球服务的稳定性

IM云服务依赖于广域IP网络进行实时消息传递,通信质量对网络稳定性比较敏感,主要体现在网络延时、网络丢包和连通率等多方面。若实现跨地域跨国家的高质量通信,则需要降低网络延时与网络丢包的出现以及提高连接率。融云通过搭建全球通信加速网络解决上述问题,通过专线网络有效控制延迟、丢包等问题,以及搭建了更多的边缘节点解决了地域连通率等问题。

融云在全球设立了多数据中心,具备3000多个加速点,通信网络已经覆盖全球所有国家及地区233个),可为客户随时随地保障至少3个就近节点提供接入,少次跳转就能链接到目的地,连接速度更快,连通效率更高。此外,通过海外链路优化,可实现更智能的链路调度,向客户端同时提供多条可选链路,自动切换的解决模式,有效解决客户通信跨地域、跨国家的“网络延迟”及“丢包”等问题。通过实时监控全球网络,基于融云分布全球的数据中心与节点建设,向客户提供链路接入方案。

 

通过融云全球通信网络加速,欧洲用户直接访问北美数据中心网络延时一般在350~500ms之间,丢包率6%,网络连接成功率只有90%;采用融云全球链路加速后,欧洲用户直接访问北美数据中心,网络延时可缩短至200~250ms之间,丢包率几乎为0,最高不超过0.1%;再借助融云全球智能动态网络优化策略,网络连接成功率可提升到99.5%以上。

结语IM即时通讯做不好将是一个填不完的“坑”,尤其是用户量起来后,收发消息延迟等等各种问题都会出来,严重影响用户的体验,试错成本也非常大。IM的稳定性背后需要厂商多年的技术积累,才能帮助用户“坑”跳过去,实现一个稳定可靠的服务。目前市场上的服务很多,竞争越激烈,使用即时通讯云的企业或者开发者必须做到“火眼金睛”,对以上因素进行综合性判断,然后做出一个好的选型。

注册融云账号查看更多详情

转载于:https://www.cnblogs.com/rongcloud/p/11212188.html

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

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

相关文章

Nginx 配置详解

序言 Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的。从2004年发布至今,凭借开源的力量,已经接近成熟与完善。 Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。支持FastCGI…

protocol buffers使用说明

一、什么是protocol buffers Protocol buffers是一个灵活的、高效的、自动化的用于对结构化数据进行序列化的协议,与XML相比,Protocol buffers序列化后的码流更小、速度更快、操作更简单。你只需要将要被序列化的数据结构定义一次(译注:使用…

jeeCMS首页加载流程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gyshun/article/details/79669293 如果JEECMS部署完毕之后,在浏览器中输入http://localhost:8080/jeecms,系统直接会按照以下步骤执行: 首…

车子突然溜坡追尾 驾校教练说挂P挡拉手刹不会溜坡

昨天4:44,朱先生来电:刚才登云路一个烧烤店门口,一辆车停在自己的车位上的,不知什么原因,突然溜坡撞上前面的一辆出租车。稀奇的是,这个溜坡的驾驶员全程都是车上睡觉睡着的,什么都不知道。记者…

VSCode 汉化、设置为 中文语言显示 、中文界面

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 Vscode是一款开源的跨平台编辑器。默认情况下,vscode使用的语言为英文(us),如何将其显示语言修改成中文了&#…

c++执行vbs脚本

#include<fstream> using namespace std;int main() {fstream out("StartIE.vbs",ios::out);out<<"AppName\"启动IE\"\n\Set WshellWScript.CreateObject(\"WScript.Shell\")\n\Set ieWScript.CreateObject(\"InternetEx…

Python-21-socket编程

一、基础知识 1. C/S架构 C/S架构即客户机/服务器模式。 它可以分为客户机和服务器两层&#xff1a; 第一层: 在客户机系统上结合了界面显示与业务逻辑&#xff1b; 第二层: 通过网络结合了数据库服务器。 简单的说就是第一层是用户表示层&#xff0c;第二层是数据库层。 这里…

解决:VScode 汉化后 、设置中文后 还显示英文的问题

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 按f1 搜索 Configore Display Language 设置 zh-cn 关闭软件重启。 如果重启菜单等还是英文的&#xff0c;在商店查看已安装的插件&…

自动挡怎么开-自动挡汽车怎么开?

汽车改用自动变速器后&#xff0c;驾驶员的操作更加简便、驾驶更加平顺&#xff0c;因此装备自动变速器的新型轿车尤其受到了人们的青睐。不过&#xff0c;很多驾驶者初开自动挡车时&#xff0c;由于对自动变速器的结构和原理不是很了解&#xff0c;行车时经常是一个D挡走完全程…

CreateThread函数

创建一个在调用进程的虚拟地址空间内执行的线程。 要创建在另一个进程的虚拟地址空间中运行的线程&#xff0c;请使用 CreateRemoteThread函数。 语法 HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes,SIZE_T dwStackSize,LPTHREAD_START…

nginx 的请求处理、请求的处理流程

nginx的请求处理 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 nginx使用一个多进程模型来对外提供服务&#xff0c;其中一个master进程&#xff0c;多个worker进程。master进程负责…

如何控制油门更准确?

学员问&#xff1a;平时练车还不错&#xff0c;可是一换车就容易加大油门&#xff0c;有什么方法能很好的控制油呢&#xff1f;&#xff1f; 如何控制油门更准确&#xff1f;和调的座位有关系吗&#xff1f;&#xff1f; 答&#xff1a;油门跟刹车被视为汽车控制的灵魂。汽车发…

使用线程——创建线程

CreateThread函数创建一个进程的新的线程。创建线程必须指定新线程要执行的代码的起始地址。通常&#xff0c;起始地址是程序代码中定义的函数的名称&#xff08;有关更多信息&#xff0c;请参阅ThreadProc&#xff09;。此函数采用单个参数并返回DWORD值。一个进程可以让多个线…

location

location (地址)&#xff1a; 是浏览器 window 上的一个对象&#xff0c;不仅能处理当前页面的网络地址&#xff0c;还可以实现页面间的跳转 页面的跳转&#xff1a; 为什么使用它&#xff1f; 使我们也可以通过脚本语言&#xff0c;也能实现 a 链接&#xff0c;同样的效果&…

linux :Docker 方式 安装 zookeeper、阿里服务器上 Docker 运行 zookeeper

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 查找官方镜像&#xff0c;并下载镜像&#xff1a; # 搜索镜像&#xff1a; docker search zookeeper# 拉取镜像&#xff1a;docker …

使用线程池功能

此示例创建自定义线程池&#xff0c;创建工作项和线程池计时器&#xff0c;并将它们与清理组关联。该池由一个持久性线程组成。它演示了以下线程池函数的使用&#xff1a; CloseThreadpool CloseThreadpoolCleanupGroupCloseThreadpoolCleanupGroupMembersCloseThreadpoolWait…

制动刹车片六个养护要点

刹车片属于消耗品&#xff0c;在使用中会逐渐磨损&#xff0c;当磨损到极限位置时&#xff0c;必须更换&#xff0c;否则将降低制动的效果&#xff0c;甚至造成安全事故。 制动刹车片关乎生命安全&#xff0c;必须谨慎对待。 大多数轿车采用前盘后鼓式制动器结构&#xff0c;一…

Learn day4 函数参数\变量\闭包\递归

1.函数描述 # ### 函数 """ (1)函数的定义:功能 (包裹一部分代码 实现某一个功能 达成某一个目的) (2)函数特点:可以反复调用,提高代码的复用性,提高开发效率,便于维护管理 """# (3) 函数的基本格式 """ # 函数的定义处 def fun…

Java 中去除字符串中空格的方法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1、方法分类 str.trim(); //去掉首尾空格str.replace(" ",""); //去除所有空格&#xff0c;包括首尾、中间str.re…

使用重定向的输入和输出创建子进程

本主题中的示例演示如何使用控制台进程中的CreateProcess函数创建子进程。它还演示了一种使用匿名管道重定向子进程的标准输入和输出句柄的技术。请注意&#xff0c;命名管道也可用于重定向进程I / O. 所述CreatePipe函数使用SECURITY_ATTRIBUTES结构来创建可继承句柄读写两个…