《即时消息技术剖析与实战》学习笔记8——IM系统如何保证长连接的可用性

本文介绍了即时消息(IM)系统中,为了确保长连接的可用性,采用心跳机制的重要性。心跳机制能够及时发现并处理网络中断,减少服务端资源浪费,支持客户端断线重连,并防止运营商因无数据交换而切断连接。心跳检测方式包括TCP Keepalive、应用层心跳和智能心跳,每种都有其优缺点。通过心跳机制,IM系统能保持连接的高可用状态。
摘要由CSDN通过智能技术生成

假设有以下突发意外情况:

  • 用户进入信号不好的地方,手机没有网络信号了
  • 上网的路由器突然掉线了
    这个时候,比如微信发消息,消息就会转圈圈,甚至变成红色叹号……
    上面情况都会导致“长连接”不可用。

我们知道,为了让消息能更加实时、可靠、快速地触达到接收方,大部分 IM 系统会通过“长连接”的方式来建立收发双方的通信通道,长连接一旦建立,就一直存在,除非网络被中断。

有了这基于 TCP 长连接的通信协议,在用户上线连接时,可以在服务端维护好连接到服务器的用户设备和具体 TCP 连接的映射关系,服务端也能通过这个映射关系随时找到对应在线的用户的客户端。对于发送方来说,发送消息也能通过“长连接”通道把消息给到 IM 服务端。

一、什么是心跳机制

但长连接并不是永久可用的,当长连接在中间链路出问题时,为了不使用户感知到,应快速通知连接的两端,并重新建立新的可用连接,从而使长连接一直保持“高可用”状态,这个能够快速、不间断识别连接可用性的机制,称为“心跳机制”。

“心跳机制”会持续地往连接发送“模拟数据”,一方面是为了试探连接的可用性,另一方面也是为了保证数据的持续流通,让连接在没有真正业务数据收发的情况下,不会被中间的网络运营商以为连接没有被使用而切断连接。

二、心跳机制的优点
1. 降低服务端开销

消息之所以能够实现“服务端推送”,是因为针对每一台上线的设备,都会在 IM 服务端维护相应的 用户设备<->网络连接 这样的映射关系,除此之外,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值