在开发分布式系统中要一个直播间的,需要考虑 弹幕/礼物消息的实时性。
在多台服务器的情况下如何考虑实时性的问题?
推与拉
先梳理一下流程
用户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,
- 当各个服务器收到时 都存进内存缓存中 2秒,将有心跳请求并且在666直播间的用户,读取内存缓存(读取2秒内的数据) 然后塞入到protobbuf 响应给用户
图解开发步骤
图解用户步骤
本文只写2种解决方案 至于选择哪种方案 还是要看具体的业务,例如 需要消息/送礼的历史记录 这些 自行参考