今天咱们讨论一个关于IM系统整体架构模式的问题哈!
IM系统从架构模式上包括 【介绍人模式】和 【代理人模式】;介绍人模式也叫直连模式,消息收发不需要服务端的参与,即客户端之间直连的方式;代理人模式也叫中转模式,消息收发需要服务端进行中转。
下面关于这两类模式的描述说法正确的有哪几项呢?
A、介绍人模式需要解决 P2P 打洞技术问题;
B、代理人模式方便对消息内容进行风险管控;
C、介绍人模式不利于实现消息漫游,影响用户体验;
D、从性能上比较,介绍人模式比代理人模式的性能更优。
参考答案:ABC
解析:
A选项:早期的很多IM软件大都采用了介绍人模式,也就是要通信的两个客户端进行直连的模式;如果这两个客户端在同一个局域网中,建立连接是非常方便的(比如现在仍在普遍使用的“飞鸽传书”);如果这两个客户端是在不同的局域网中(局域网中的客户端是没有公网IP的),怎么建立连接呢?这个时候往往需要P2P打洞技术。这个地方有一个非常有意思的面试题目:几乎所有的客户端都是没有公网独立IP的,但我们上网时,那些服务器程序回复的数据包是怎么找到我们的客户端的呢?(大家可以自行学习一下 NAT 技术哈!)
B选项:代理人模式对消息内容可以方便地进行风控管理,这个是非常容易理解的;毕竟在介绍人模式下进行风控管理,用户体验、代价和复杂度都太大了!(大家想一下,为什么?)
C选项:介绍人模式下,消息都保存在客户端本地;换一个终端设备,消息如何漫游呢!
D选项:收发消息的性能损耗,除了网络传输外,还有对连接的管理和维护、网络异常情况的处理、消息落库、复杂的业务处理、程序逻辑框架等等;介绍人模式下,所有的客户端既是客户端也是服务端,在活跃的聊天场景(比如群聊)中,所有的客户端形成了一种网状的通信模式;在极端情况下,每一个客户端要处理其他所有的客户端请求,此时客户端的性能是很难提升的;而如果将压力转移到扩展性非常好的服务端,也就是代理人模式,整个IM的性能就会提升很多。当然,我们是工程派,对性能的论断没有一个实验环境进行完整的实验是不合理;这个地方重点强调的是:介绍人模式不会因为看似网络传输减少了一个环节,其性能就比代理人模式要优!
扩展一下哈!
我们对这两种IM的架构方案进行抽象:
IM的介绍人模式其实就是【边缘计算方案】,充分利用每个客户端节点的计算能力进行业务逻辑处理;
IM的代理人模式其实就是【中心计算方案】,充分利用中心服务器的计算能力进行业务逻辑处理。
作者:棕生 | 公众号——架构之魂
版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。