长连接平台架构
Go实现IM
长连接平台:
分为四个部分,rev,sender,registor,online(接受者,发送者,注册中心,在线列表)
im:负责处理业务逻辑
rev负责数据的接收发送
架构设计
主进程负责接收消息(epoll)将消息放入阻塞队列,主进程开启多个消费者(work协程)读取阻塞队列消息处理,向用户中心获取产品注册的队列(队列1,队列2),将处理后的消息发送到对应队列(消费队列,异常队列)。
im负责消息业务处理
功能
将消息从队列(队列1,队列2)获取后进行业务处理,将需要返回的消息内容发送到接收队列(sender接收队列)。
sender负责数据转发
架构设计
主进程开启多个(消费者work协程)消费task(任务消息),消息内容包含要发送的目的rev信息,调用rpc方法将消息发送到指定rev,开启多个(生产者work协程)订阅接收队列(sender接收队列)中将消息封装成task供(消费者work协程)进行消费。
registor负责注册各种服务
功能
注册中心负责记录长连平台各个服务的信息,以便各个服务相互之间能找到对方。
各个服务的注册信息存放在redis中。
各个服务使用redis的发布订阅模式获取注册中心的所有信息 。
online 在线列表
功能
online模块负责记录成功登陆长连平台的用户信息。主要是用户是再哪个recv登陆的。
赏
请到客户端“主题--自定义配置--配置”中填入leancloud_appID和key