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

架构师面试(十一):消息收发

问题

IM 是互联网中非常典型的独立的系统,麻雀虽小但五脏俱全,非常值得深入研究和探讨,继上次IM相关题目之后,我们继续讨论IM相关话题。 关于IM系统【消息收发模型】的相关描述,下面说法错误的有哪几项?

A. 通常可以将消息收发流程划分为三个阶段:生产消息阶段、推送消息阶段、消息确认阶段;

B. 消息发送方发送消息到服务端后,服务端必须先回复然后再落库,以保证消息生产的及时性和可靠性;

C. 在服务端推送消息阶段,服务端首先需要通过路由数据确认消息接收方的在线状态和连接地址,然后再推送消息;

D. 消息确认阶段,即服务端等待确认消息是否被客户端接收;若服务端等待超时,需要主动回调客户端接口完成确认,类似于 RocketMQ 的事务消息处理模型。

解析

A 选项:客户端X发消息给客户端Y,通常会经过三个阶段:生产消息阶段(客户端X发送消息到服务端,服务端经过一系列逻辑处理后发送回复包到客户端X),推送消息阶段(服务端经过一系列逻辑处理后推送消息到客户端Y),消息确认阶段(服务端等待客户端Y发送ACK数据包并进行逻辑处理)。

B 选项:消息发送方发送消息到服务端后,服务端正确的处理方式是 先落库再回复,保证消息的可靠性;否则容易出现消息没来得及落库导致消息丢失的问题。

C 选项:在服务端推送消息阶段,服务端首先需要访问中央存储(缓存)判断消息接收方是否在线,如果在线则获取其连接的fd,然后基于fd推送消息。

D选项:在线消息确认阶段,如果服务端等待客户端发送 ack 包超时时,直接重新推送消息 或 按离线处理即可,回调客户端接口流程繁琐且工作量很大,实不必要。

正确答案

BD


http://www.kler.cn/a/577873.html

相关文章:

  • ajax之生成一个ajax的demo示例
  • 网络安全 api 网络安全 ast技术
  • 【五.LangChain技术与应用】【9.LangChain ChatPromptTemplate(上):高级对话模板设计】
  • MuBlE:为机器人操作任务规划提供了逼真的视觉观察和精确的物理建模
  • 力扣hot100——多维动态规划
  • MySQL5.7.44-winx64版本Windows Server下载安装教程图解
  • three.js 在 webGL 添加纹理
  • Django系列教程(5)——Django模型详解
  • [FE] React 初窥门径(五):React 组件的加载过程(commit 阶段)
  • 【爬虫软件】抖音评论区采集工具
  • [含文档+PPT+源码等]精品基于Python实现的django电动车租赁系统
  • FPGA 实验报告:四位全加器与三八译码器仿真实现
  • Windows 图形显示驱动开发-WDDM 3.2-本机 GPU 围栏对象(八)
  • uniapp:小程序将base64图片字符串保存到手机相册
  • java环境部署
  • hbase集群archive目录过大问题处理
  • 深度学习-143-Text2SQL之基于langchain的少量样本提示词模板FewShotPromptTemplate的应用实战(二)
  • oneinstack 部署 lamp/lnmp
  • 动量法与带阻尼的二阶 ODE:从离散优化到连续动态的奇妙联系
  • 力扣热题 100:二叉树专题进阶题解析(后7道)