1、弹幕系统设计
场景分析:客户端针对某一视频创建了弹幕,发送后端进行处理,后端需要对所有正在观看该视频的用户推送该弹幕。
1.1、实现方式
使用短连接进行通信或使用长连接进行通信。
1.1.1、短连接实现方案
所有观看视频的客户端不断轮询后端,若有新的弹幕则拉取后进行显示
短连接实现方案的缺点:轮询的效率低,非常浪费资源(因为HTTP协议只能由客户端向服务端发起,故必须不停连接后端。
1.1.2、长连接实现方案
采用WebSocket进行前后端通信。
为什么要用WebSocket:HTTP 协议的通信只能由客户端发起,做不到服务器主动向客户端推送信息。
1.1.3、WebSocket简介
WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(Full-Duplex)通信。
全双工(Full-Duplex)通信:客户端可以主动发送信息给服务端,服务端也可以主动发送信息给客户端。
WebSocket协议优点:报文体积小、支持长连接。
1.2、弹幕系统架构设计
我们采用异步 + mq实现向数据库中存储数据。当然也可以使用定时任务将Redis中的数据存储到数据库中。