# 《分布式IM系统》即时通讯后端服务-第05节:即时通讯后端服务心跳处理器的设计与实现

作者:冰河
星球:http://m6z.cn/6aeFbs (opens new window)
博客:https://binghe.gitcode.host (opens new window)
文章汇总:https://binghe.gitcode.host/md/all/all.html (opens new window)
源码获取地址:https://t.zsxq.com/0dhvFs5oR (opens new window)
课程视频:https://t.zsxq.com/15bXHo0dr (opens new window)

沉淀,成长,突破,帮助他人,成就自我。

  • 本节难度:★★☆☆☆
  • 本节重点:对即时通讯后端服务的心跳处理器进行设计和实现,并对用户终端发送心跳的流程进行设计,掌握消息处理器的设计方法和落地实现方案。并能够将其灵活应用到自身实际项目中。
  • 课程视频:https://t.zsxq.com/15bXHo0dr (opens new window)

大家好,我是冰河~~

心跳保活是维持连接有效性的一种重要措施,在很多场景下都可以使用心跳机制来维持连接的有效性。例如:通过心跳机制来维持长连接的有效性。在服务治理层面,通过心跳机制检测注册中心服务的有效性,通过心跳机制检测服务实例是否下线等等。

# 一、前言

在前面的文章中,我们对即时通讯后端服务登录处理器进行了设计与实现,并对整个消息处理器的大体框架源码进行了设计和实现。在即时通讯后端服务中,最主要也是最核心的功能就是消息的收发,消息总体上会分成:登录消息、心跳消息、单聊消息和群聊消息,每种消息都会通过消息处理器进行处理。

# 二、本节诉求

对即时通讯后端服务心跳处理器进行设计与实现,实现即时通讯后端服务的整体心跳机制,并结合心跳机制通过一定的规则延长用户在线状态的有效性,也就是延长分布式缓存中存储的与用户终端建立连接的即时通讯后端服务ID的有效性。同时,向用户终端响应心跳消息。

# 三、流程设计

用户通过终端登录分布式IM即时通讯系统后,用户终端会与即时通讯后端服务建立长连接,用户终端无论是向即时通讯后端服务发送登录消息,还是向即时通讯后端服务发送心跳消息,整体流程如图5-1所示。


发送心跳消息的流程与发送登录消息的流程大体相似,都是即时通讯后端服务接收到消息后,调用消息处理器工厂的方法从IOC容器中获取对应的消息处理器,进而处理相应的消息。

# 四、类结构设计

由于我们之前已经对消息处理器的大体框架进行了设计和实现,并且在消息处理器的设计和实现中,我们考虑到的后续的扩展性,所以,在原来的基础上新增心跳处理器是非常方便的,整体类图如图5-2所示。


可以看到,整体类结构比较简单,我们只需要新增一个HeartbeatProcessor类,实现MessageProcessor接口,并在ProcessorFactory工厂类中进行配置即可。

# 五、编码实现

# 查看全文

加入冰河技术 (opens new window)知识星球,解锁完整技术文章与完整代码