如何设计一个70w在线人数的弹幕系统

简介: 如何设计一个70w在线人数的弹幕系统

原文地址:

如何设计一个 70w 在线人数的弹幕系统 ?如何设计一个 70w 在线人数的弹幕系统 ?

问题分析

1、带宽压力

2、弱网导致的弹幕卡卡顿、丢失

3、性能与可靠性

启用Http压缩

HTTP压缩是指在web服务器端和浏览器间传输压缩文本内容的方法,压缩的最大好处就是降低了网络传输的数据量,从而提高客户端浏览器的访问速度。http压缩通常是通过在reponse header指定Content-Encoding首部,告诉客户端response的压缩格式,这样客户端才能正确解压。

AJAX长轮询(Long Polling via AJAX)

客户端打开一个到服务器端的 AJAX 请求,然后等待响应,服务器端需要一些特定的功能来允许请求被挂起,只要一有事件发生,服务器端就会在挂起的请求中送回响应。如果打开Http的Keepalived开关,还可以节约握手的时间。

WebSockets

长轮询虽然省去了大量无效请求,减少了服务器压力和一定的网络带宽的占用,但是还是需要保持大量的连接。那么人们就在考虑了,有没有这样一个完美的方案,即能双向通信,又可以节约请求的 header 网络开销,并且有更强的扩展性,最好还可以支持二进制帧,压缩等特性呢?于是人们就发明了这样一个目前看似“完美”的解决方案 —— WebSocket。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话。

总结


相关文章
|
存储 前端开发 Java
Java:PO、VO、BO、DO、DAO、DTO、POJO
Java:PO、VO、BO、DO、DAO、DTO、POJO
351 0
|
移动开发 前端开发 JavaScript
使用JavaScript和Canvas进行绘图
Canvas是HTML5的绘图工具,借助JavaScript实现网页上的图形、图像及动画创作。通过Canvas元素和2D渲染上下文,开发者能绘制图形、处理图像、制作动画,甚至用于游戏开发。基本步骤包括获取Canvas元素、设置绘图属性、绘制形状、处理图像以及实现动画。同时,注意性能优化,如减少不必要的重绘和使用Web Workers。Canvas结合WebGL还能实现3D效果,与Web Audio API结合则能做音频可视化。分享你的Canvas经验,探讨更多创意应用!
249 0
|
9月前
|
存储 关系型数据库 分布式数据库
PolarDB开源数据库进阶课12 集群版转换为单机版
本文介绍了如何将“共享存储实例”转换为“本地存储实例”,实验环境依赖于Docker容器中的loop设备模拟共享存储。具体步骤包括准备本地目录、停库、拷贝数据、修改配置文件并启动实例。通过这些操作,可以实现从共享存储到本地存储的平滑转换。相关系列文章详细记录了PolarDB RAC一写多读集群的搭建与管理,提供了丰富的实战经验。
202 3
|
存储 搜索推荐 C语言
如何理解指针作为函数参数的输入和输出特性
指针作为函数参数时,可以实现输入和输出的双重功能。通过指针传递变量的地址,函数可以修改外部变量的值,实现输出;同时,指针本身也可以作为输入,传递初始值或状态。这种方式提高了函数的灵活性和效率。
|
设计模式 安全 网络安全
安全风险在WEB应用中的排名变化
【7月更文挑战第16天】本文介绍OWASP的安全风险评估,一个国际非营利组织,专注于提升Web应用安全。其Top 10项目列出最严重的安全风险,如Broken Access Control(现最严重风险),加密故障,注射漏洞,不安全设计,配置错误等。2021版新增了不安全设计、软件完整性故障和服务器端请求伪造等类别。安全问题排名考虑了发生率,以反映攻击者只需一个实例即可造成损害的风险。**
389 2
安全风险在WEB应用中的排名变化
|
运维 监控 Serverless
Serverless架构
Serverless架构
|
存储 缓存 编译器
【conan 入门教程】介绍 conanfile.py中的默认方法的作用
【conan 入门教程】介绍 conanfile.py中的默认方法的作用
965 0
|
存储 关系型数据库 MySQL
Python导入Excel数据到MySQL数据库
Python导入Excel数据到MySQL数据库
1035 1
|
人工智能 前端开发 PyTorch
构建自己 AI 翻译助手取代谷歌翻译
构建自己 AI 翻译助手取代谷歌翻译
498 0
|
Web App开发 iOS开发 MacOS
解决macOS 应用安装在下载目录时遇到的 vscode 掉登录和应用无法随机启动的问题
解决macOS 应用安装在下载目录时遇到的 vscode 掉登录和应用无法随机启动的问题
382 0