直播间or语音房分布式im消息(弹幕)解决方案 推与拉

63 阅读1分钟

 在开发分布式系统中要一个直播间的,需要考虑 弹幕/礼物消息的实时性。

在多台服务器的情况下如何考虑实时性的问题?

推与拉

先梳理一下流程

用户1发送了一个弹幕 到666的直播间 ,然后在666直播间的所有人都收到这个消息

如果选择推的话需要做哪些准备什么?

消息队列

该怎么做?

开始进入拆分开发阶段

1.假设用户1在服务器A时 发送在666直播间一个消息后,服务器开始处理 开启一个协程 自旋发送 在服务器A 666直播所有人收到这个消息,

2.用消息队列往 服务器B 服务器C 服务器D 服务器E

3 当各个服务器收到这个消息队列的时候  各个服务器发送这条消息给在 666直播间的人。

图解开发步骤

如果选择拉的话需要做哪些准备什么?

消息队列 内存缓存库(go-cache/freecache)

该怎么做?

开始进入拆分开发阶段

1.假设用户1在服务器A时 发送在666直播间一个消息后,服务器开始处理 开启一个协程 将消息放入内存缓存中2秒过期时间,将有心跳请求并且在666直播间的用户,读取内存缓存(读取2秒内的数据) 然后塞入到protobbuf 响应给用户,

2.再通过消息队列的形式 把这条消息 转发给  服务器B 服务器C 服务器D 服务器E,

  1. 当各个服务器收到时 都存进内存缓存中 2秒,将有心跳请求并且在666直播间的用户,读取内存缓存(读取2秒内的数据) 然后塞入到protobbuf 响应给用户

图解开发步骤

 图解用户步骤

本文只写2种解决方案 至于选择哪种方案 还是要看具体的业务,例如 需要消息/送礼的历史记录 这些 自行参考