IM websocket 系统架构思考

时间:2021-6-7 作者:qvyue

1 背景

IM(instant messaging 即时通讯)是互联网的通讯方式之一。最近接手了公司IM业务,有一个和ISV(Independent Software Vendors 独立软件开发商)对接项目,由于公司缺少和ISV对接IM能力,所以由我来从0到1构建整套体系。

2 目标

接入方多;消息到达快;ISV接入时称好;系统复用性高

2 系统架构设计思路

2.1 架构图

IM websocket 系统架构思考
isv im系统架构图.png

2.2 设计思路

从目标拆解,如何做到消息传递速度快?如何做到ISV接入时称好?如何做到消息不丢失?

速度快?
1.websocket协议可保持链接始终存在
2.websocket协议请求头数据少

接入时称好?
1.统一的接入方式,支持使用SDK和自行接入两种方式

消息不丢失?
1.稳定性保障

2.3 设计细节

用户发送消息流程

IM websocket 系统架构思考
用户发送消息流程图.png

isv商家发送流程简单,不过多描述

3 难点

3.1 已解决问题

长链是有状态的,在切流场景下,如何路由到保持长链机器
长链建立对于时间要求极高,如何保证长链建立时效性
客户端或者服务端重启,如何保证长链的有效性

3.2 待解决问题

服务器接受连接数量如何限制?
服务器重启时,大量客户端连接并发创建连接,数据库服务器如何承受?
多机房场景下,如何控制客户端连接负载到不同机房

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。