当前位置: 首页 > news >正文

架构师面试(十九):IM 架构

问题

IM 系统从架构模式上包括 【介绍人模式】和 【代理人模式】。介绍人模式也叫直连模式,消息收发不需要服务端的参与,即客户端之间直连的方式;代理人模式也叫中转模式,消息收发需要服务端进行中转。

下面关于这两类模式描述的说法正确的有哪几项呢?  

A. 介绍人模式需要解决 P2P 打洞技术问题;

B. 代理人模式方便对消息内容进行风险管控;

C. 介绍人模式不利于实现消息漫游,影响用户体验;

D. 从性能上比较,介绍人模式比代理人模式的性能更优。

解析

A选项:早期的很多IM软件大都采用了介绍人模式,也就是要通信的两个客户端进行直连的模式;如果这两个客户端在同一个局域网中,建立连接是非常方便的(比如现在仍在普遍使用的“飞鸽传书”);如果这两个客户端是在不同的局域网中(局域网中的客户端是没有公网IP的),怎么建立连接呢?这个时候往往需要P2P打洞技术。这个地方有一个非常有意思的面试题目:几乎所有的客户端都是没有公网独立IP的,但我们上网时,那些服务器程序回复的数据包是怎么找到我们的客户端的呢?(大家可以自行学习一下  NAT 技术!)介绍人模式见下图。

B选项:代理人模式对消息内容可以方便地进行风控管理,这个是非常容易理解的;毕竟在介绍人模式下进行风控管理,用户体验、代价和复杂度都太大了!(大家想一下,为什么?)代理人模式见下图。

C选项:介绍人模式下,消息都保存在客户端本地;换一个终端设备,消息如何漫游呢!

D选项:收发消息的性能损耗,除了网络传输外,还有对连接的管理和维护、网络异常情况的处理、消息落库、复杂的业务处理、程序逻辑框架等等;介绍人模式下,所有的客户端既是客户端也是服务端,在活跃的聊天场景(比如群聊)中,所有的客户端形成了一种网状的通信模式;在极端情况下,每一个客户端要处理其他所有的客户端请求,此时客户端的性能是很难提升的;而如果将压力转移到扩展性非常好的服务端,也就是代理人模式,整个 IM 的性能就会提升很多。当然,我们是工程派,对性能的论断没有一个实验环境进行完整的实验是不合理;这个地方重点强调的是:介绍人模式不会因为看似网络传输减少了一个环节,其性能就比代理人模式要优!

扩展一下:

我们对这两种 IM 的架构方案进行抽象: 

IM 的介绍人模式其实就是【边缘计算方案】,充分利用每个客户端节点的计算能力进行业务逻辑处理;

IM 的代理人模式其实就是【中心计算方案】,充分利用中心服务器的计算能力进行业务逻辑处理。

参考答案

ABC

相关文章:

  • 某视频的解密下载
  • 地理信息科学(GIS)专业的就业出路与转型新方向,传统就业领域VS新兴技术赛道
  • docker模拟Dos_SYN Flood拒绝服务攻击 (Ubuntu20.04)
  • MyBatis 的一次缓存与二次缓存
  • 任务型多轮对话(二)| 意图识别
  • pta 乐子人游戏
  • 调用feapder作为子程序时setting.py文件不起作用
  • C++标准库新部件:解锁编程新姿势
  • win注册表提示没有权限进行修改的解决方式
  • (十)方法的定义 方法的作用域
  • 玩客云 armbian 安装mqtt服务端
  • 关于IPC sensor条纹问题分析
  • 在Kubernetes 1.26 上使用 StatefulSet 部署 MySQL8
  • 一文速通Python并行计算:00 并行计算的基本概念
  • 【论文笔记】生成对抗网络 GAN
  • 深入探究 JVM 堆的垃圾回收机制(二)— 回收
  • 【人工智能】Ollama 的 API 操作指南:打造个性化大模型服务
  • 《鸟哥的Linux私房菜基础篇》---5 vim 程序编辑器
  • 探秘文件系统变RAW:数据拯救全解析
  • 一道原创OI题(普及-)——ZCS的随机游走
  • 女冰队长于柏巍,拒绝被年龄定义
  • 马上评|扩大高速免费救援范围,打消出行后顾之忧
  • 神十九都带回了哪些实验样品?果蝇等生命类样品已交付科学家
  • 航海王亚洲巡展、工厂店直销……上海多区推出“五五购物节”活动
  • 上海市十六届人大常委会第二十一次会议表决通过有关人事任免事项
  • 葡萄牙总理:未来几小时内将全面恢复供电