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

news2025/1/12 6:51:34

背景

现在的抖音、快手等一系列能支持直播的软件如何做到的同一时间万人发弹幕的功能的?

问题分析

带宽压力;
弱网导致的弹幕卡顿、丢失;
性能与可靠性。

带宽优化

  1. 启用Http压缩
    HTTP压缩是指在Web服务器和浏览器间传输压缩文本内容的方法。HTTP压缩通常采用gzip压缩算法压缩HTML、JavaScript、CSS等文件。压缩的最大好处就是降低了网络传输的数据量,从而提高客户端浏览器的访问速度。当然,同时也会增加一点服务器的负担。
  2. Response结构简化
    不理解如何进行的Response结构简化,待我查阅归来!
  3. 内容排列顺序优化
    根据gzip的压缩的压缩原理可以知道,重复度越高,压缩比越高,因此可以将字符串和数字内容放在一起摆放
  4. 频率控制
    带宽控制:通过添加请求间隔参数(下次请求时间),保证客户端的请求频率服务端可控。以应对突发的流量增长问题,提供有损的服务。
    稀疏控制:在弹幕稀疏和空洞的时间段,通过控制下次请求时间,避免客户端的无效请求。

弹幕卡顿、丢失分析

Long Polling via AJAX
客户端打开一个到服务器端的 AJAX 请求,然后等待响应,服务器端需要一些特定的功能来允许请求被挂起,只要一有事件发生,服务器端就会在挂起的请求中送回响应。如果打开Http的Keepalived开关,还可以节约握手的时间。
优点: 减少轮询次数,低延迟,浏览器兼容性较好。缺点: 服务器需要保持大量连接

WebSockets
Websockets定义为在servers和clients之间的双向连接。意味着servers和clients可以同时交流并发送数据。Web Sockets的重要一点是真实的并发和性能的优化。 在WebSocket API中,servers和clients只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

总结

最终该服务在双十二活动中,在Redis出现短暂故障的背景下,高效且稳定的支撑了70w用户在线,成功完成了既定的目标。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/179254.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络— — 二层交换机

网络— — 二层交换机 1 交换机端口 g0/3 g:1000M/s0:模块号3:接口号 每个端口网速: Ethernet 10M/s FastEthernet 100M/s GigabitEthernet 1000M/s TenGigabitEthernet 10000Mb/s 2 数据链路层(2层) Data…

python图像处理(opencv入门)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 前面我们讨论了fpga的基本操作,这些都是作为整个图像处理的基础部分进行学习的,本质上还是希望用fpga来对部分算法进行加速处理。当然,fpga实现的只是一部分算法,并不是所有的算…

【手写 Promise 源码】第二篇 - Promise 功能介绍与特性分析

一,前言 上一篇,对 Promise 进行了简单介绍,主要涉及以下几个点: Promise 简介和基本使用;Promise 和 callback 对比;Promise 的重要性和作用;Promise 使用场景:Promisify 封装&am…

Python Flask 框架设置响应头,一篇文章学明白

flask 响应头设置📖 导读📖 Python Flask 设置响应头🎉 response.headers 属性🎉 flask.abort() 函数返回特定状态码📖 Flask 中可设置的响应头参数📖 其他关于响应头的配置🎁 使用中间件&#…

[Python]调用pytdx的代码示例

安装pytdxpip install pytdx简单示范from pytdx.hq import TdxHq_API api TdxHq_API() # 数据获取接口一般返回list结构, with api.connect(119.147.212.81, 7709): # 返回普通listdata api.get_security_bars(9, 0, 000001, 0, 10) print(data)输出结果[Ordered…

康巴丝(compas)某Wi-Fi万年历无法自动校时的问题

笔者前两年购买过一块康巴丝牌的电子万年历,该万年历的最大特点可以通过Wi-Fi联网自动校时。 后来的某一天,笔者将原来的H3C AP(11AC)升级为锐捷AP(11AX)。 在之后的几个月中,发现这块电子万年…

Linux常用命令——setsebool命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) setsebool 修改SElinux策略内各项规则的布尔值 补充说明 setsebool命令是用来修改SElinux策略内各项规则的布尔值。setsebool命令和getsebool命令是SELinux修改和查询布尔值的一套工具组。SELinux的策略与规则…

【云原生】Prometheus 监控系统的初步了解与系统搭建

内容预知 前言 1. Prometheus的相关知识 1.1 Prometheus的认识与了解 1.2 Prometheus的特点 1.3 Prometheus存储引擎TSDB 的特点优势 1.4 Prometheus 的生态组件 (1)Prometheus server (2)Client Library (3&a…

主流的操作系统(带你快速了解)

📜 “作者 久绊A” 专注记录自己所整理的Java、web、sql等,IT技术干货、学习经验、面试资料、刷题记录,以及遇到的问题和解决方案,记录自己成长的点滴。 🍁 操作系统【带你快速了解】对于电脑来说,如果说…

如何安装双系统与多系统(带你快速了解)

📜 “作者 久绊A” 专注记录自己所整理的Java、web、sql等,IT技术干货、学习经验、面试资料、刷题记录,以及遇到的问题和解决方案,记录自己成长的点滴。 🍁 操作系统【带你快速了解】对于电脑来说,如果说…

开放式基金净值历史数据 API 数据接口

开放式基金净值历史数据 API 数据接口 实时净值,历史数据,多维度指数参数。 1. 产品功能 支持所有开放式基金净值历史数据查询;可定义查询指标与时间范围;支持所有开放式基金净值历史数据查询;不同的输入指标返回不同…

java-List

java-List1. 预备知识-泛型(Generic)1.1 泛型的引入1.2 泛型的分类1.3 泛型类的定义的简单演示1.4 泛型背后作用时期和背后的简单原理1.5 泛型类的使用1.6 泛型总结2. 预备知识-包装类(Wrapper Class)2.1 基本数据类型和包装类直接的对应关系2.2 包装类的使用,装箱(…

Windows压缩工具 “ Bandizip与7-zip ”(带你快速了解)

📜 “作者 久绊A” 专注记录自己所整理的Java、web、sql等,IT技术干货、学习经验、面试资料、刷题记录,以及遇到的问题和解决方案,记录自己成长的点滴。 🍁 操作系统【带你快速了解】对于电脑来说,如果说…

机器视觉在烟草领域中的应用

一个不知名大学生,江湖人称菜狗 original author: jacky Li Email : 3435673055qq.com Time of completion:2023.1.26 Last edited: 2023.1.26 目录 机器视觉在烟草领域中的应用 烟叶外观检测 烟末原料异物检测 叶梗烟丝缺陷检测 香烟过滤嘴外型检测…

(21)go-micro微服务logstash使用

文章目录一 Logstash介绍二 Logstash作用三 Logstash工作原理四 Logstash安装1.拉取镜像2.运行命令3.查看是否运行五 Logstash使用六 最后一 Logstash介绍 Logstash是具有实时流水线能力的开源的数据收集引擎。Logstash可以动态统一不同来源的数据,并将数据标准化到…

活动星投票自控好声音网络评选微信的投票方式线上免费投票

“自控好声音”网络评选投票_投票平台的陆续发展_小程序投票的好处与坏处_如何进行有效的图文投票近些年来,第三方的微信投票制作平台如雨后春笋般络绎不绝。随着手机的互联网的发展及微信开放平台各项基于手机能力的开放,更多人选择微信投票小程序平台&…

恶意代码分析实战 17 C++代码分析

17.1 Lab20-01 问题 在0x401040处的函数采用了什么参数? 首先,以①处的一个对new操作符的调用开始,这表明它正在创建一个对象。一个对象的引用会在EAX寄存器中返回最终存储在②处的var_8变量和③处的var_4变量中。var_4变量在④处被移到了E…

pytorch深度学习基础(十)——常用线性CNN模型的结构与训练

线性CNN模型的结构与训练引入包LeNet模型结构模型构建AlexNet模型结构模型构建VGG模型结构模型构建加载数据集累加器精度训练引入包 import torch from torch import nn from torchvision import datasets from torchvision import transforms from torch.utils.data import D…

基于蜣螂算法的极限学习机(ELM)分类算法-附代码

基于蜣螂算法的极限学习机(ELM)分类算法 文章目录基于蜣螂算法的极限学习机(ELM)分类算法1.极限学习机原理概述2.ELM学习算法3.分类问题4.基于蜣螂算法优化的ELM5.测试结果6.参考文献7.Matlab代码摘要:本文利用蜣螂算法对极限学习机进行优化,并用于分类问…

【华为上机真题】连续字母长度

🎈 作者:Linux猿 🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊! &…