最新要闻
- 环球快讯:智能合约在数字人民币中的应用与治理
- 2023年普通高校招生录取工作即将开始,教育部发出提醒——高校招生录取期间谨防受骗
- 世界速讯:47度高温!印度遭极端“烤验”:近期已造成多人死亡
- 网易游戏公布暑假未成年人限玩时间:大模型干预不理性消费_全球热头条
- 全球观速讯丨比NS还小却塞进AMD 7840U!AYANEO公布新掌机AIR 1S
- 焦点热门:599元 小米电视EA32上架:升级5GHz Wi-Fi、分辨率不足1080P
- 1099元起 Redmi Note 12R发布:首发第二代骁龙4
- 女子称喂奶后发现医院母婴室装有摄像头?院方回应 信息
- 毕业季,科学城幼儿园大班萌娃用画笔勾勒未来|当前热文
- 辽宁:全链条打击证券犯罪 去年以来追赃挽损7.14亿余元
- 上海电气印度业务被诈骗88亿 反被索赔21亿?官方辟谣-环球微头条
- 腾讯回应数百人部门解散:正常架构调整 不涉及人员优化 每日聚焦
- iPhone上市开售16周年:共38款机型 售价越来越贵_独家焦点
- 全国首位视障播音硕士毕业:键盘盲打完成6万字论文 9年读了百本盲书-天天热门
- 不惯着!女子人肉占车位撒泼打滚:结局舒适-世界要闻
- 我市举行天然气应急救援演练|世界快看点
手机
光庭信息跌4.57% 2021上市超募11亿2022扣非降74% 时快讯
搜狐汽车全球快讯 | 大众汽车最新专利曝光:仪表支持拆卸 可用手机、平板替代-环球关注
- 光庭信息跌4.57% 2021上市超募11亿2022扣非降74% 时快讯
- 搜狐汽车全球快讯 | 大众汽车最新专利曝光:仪表支持拆卸 可用手机、平板替代-环球关注
- 视点!美国首位女总统即将诞生?拜登恐怕要提前下岗,美政坛迎来变局?
- 当前速递!用理想仪器实现更好的颗粒 德国新帕泰克亮相CPHI & PMEC China获好评
- 微粒贷怎么申请开通 开通方法如下
- 焦点简讯:心疼!这位40岁的云南缉毒警,已是满头白发
家电
直播系统聊天技术(九):千万级实时直播弹幕的技术实践
本文由云信IM技术团队分享,原题“千万级在线直播弹幕方案”,本文有修订和改动。
1、引言
疫情期间,线上演唱会是一种很常见的直播娱乐形式,由于线下社交距离的限制,线上形式演唱会比以往更火爆,而对技术的要求也更高。
(资料图片仅供参考)
本文基于网易云信针对TFBOYS某场线上演唱会的技术支持,为你分享千万级在线用户量的直播系统中实时弹幕功能的技术实践,希望能带给你启发。
技术交流:
- 移动端IM开发入门文章:《新手入门一篇就够:从零开发移动端IM》
- 开源IM框架源码:https://github.com/JackJiang2011/MobileIMSDK(备用地址点此)
(本文已同步发布于:http://www.52im.net/thread-4299-1-1.html)
2、系列文章
本文是系列文章中的第9篇:
- 《直播系统聊天技术(一):百万在线的美拍直播弹幕系统的实时推送技术实践之路》
- 《直播系统聊天技术(二):阿里电商IM消息平台,在群聊、直播场景下的技术实践》
- 《直播系统聊天技术(三):微信直播聊天室单房间1500万在线的消息架构演进之路》
- 《直播系统聊天技术(四):百度直播的海量用户实时消息系统架构演进实践》
- 《直播系统聊天技术(五):微信小游戏直播在Android端的跨进程渲染推流实践》
- 《直播系统聊天技术(六):百万人在线的直播间实时聊天消息分发技术实践》
- 《直播系统聊天技术(七):直播间海量聊天消息的架构设计难点实践》
- 《直播系统聊天技术(八):vivo直播系统中IM消息模块的架构实践》
- 《直播系统聊天技术(九):千万级实时直播弹幕的技术实践》(* 本文)
3、弹幕整体技术方案
本次的弹幕方案以IM聊天室技术为基础,提供了登录直播间、发送弹幕、礼物消息等能力。同时按照千万级在线广播的目标,为期设计了基于CDN的弹幕广播服务。
直播间收发实时消息(也就是弹幕、礼物)的主要流程如下:
- 1)获取直播间接入地址;
- 2)登录直播间;
- 3)收发消息(弹幕、礼物)。
下面将围绕以上流程的三个阶段,在技术上分别阐述如何实现千万级在线直播实时弹幕的能力。
4、弹幕技术方案之获取直播间接入地址
为了提供稳定高可用的实时弹幕服务,需要通过GSLB(Global Server Load Balancing)服务给用户分配最佳的接入地址。
GSLB服务需要从以下几个维度综合考虑:
- 1)用户网络类型;
- 2)机房网络容量;
- 3)服务器负载;
- 4)成本。
1)用户网络类型和机房网络容量:
为了用户能够快速、稳定的登录直播间收发消息,一般要根据用户所在地理位置以及网络运营商类型综合考虑给用户分类接入服务器。
机房一般提供BGP网络、三线网络两种接入方案,分配服务根据用户IP地址分析用户的地域、运营商类型并分配最佳接入地址。
一般优先按运营商类型分配三线地址(例如电信用户分配电信接入地址),如果是小运营商或无法识别的IP地址则分配BGP地址,两种接入方式用户都可以获得稳定的网络环境。
2)服务器负载:
单台服务器能够承载的TCP长链接有限,尤其是在高并发进入直播间的情况下,握手协议需要完成链路加密工作,对系统的CPU资源消耗比较大,因此需要实现一套良好的均衡分配策略。
3)一套基于服务器负载均衡的分配策略:
长链接接入服务器周期性上报当前服务器负载到负载均衡服务集群,负载信息存储在共享缓存中,接入分配服务根据负载信息动态分配接入地址。
一般情况下用户请求直播间地址,地址分配服务会查询负载均衡服务(或者直接查询负载缓存),然后根据获取到的信息分配当前负载最低的服务器。
在千万级别的在线直播活动场景下,开播时大量用户并发进入直播间,分配服务可达50万到100万TPS,这么高的TPS下如果还用“一般分配”方案,负载均衡(缓存)服务的TPS和集群之间的机房网络带宽非常高,单台服务器亦可能因为负载信息滞后导致超负荷分配。
为解决机房内带宽和超负载分配的问题,我们对分配方案进行了优化:
- 1)长链接服务器上报负载的周期从1秒调整到5毫秒,负载均衡服务器可以更实时的同步负载信息;
- 2)“地址分配”服务不再按请求查询负载信息,而是开启单独的同步线程周期性(同样是5毫秒)同步负载数据,从而有效降低负责信息同步的TPS和网络开销;
- 3)“地址分配”服务不在按最低负载分配,而是将服务接入地址按负载排序,单个接入地址分配一定次数后按顺序分配下一个接入地址(避免低负载服务器瞬间被打爆)。
在实际方案落地中,需要结合负载、用户网络类型、机房线路容量等因素综合分配。
5、弹幕技术方案之登录直播间
登录直播间主要有两项任务:
- 1)握手;
- 2)身份认证。
1)握手:
SDK建立TCP长链接后,首先向服务器发送握手协议,主要提供SDK版本、协议版本、支持的加密算法等信息,服务器根据SDK提供的信息选择合适的协议版本以及加密算法,建立安全的通信链路。
我们支持的非对称算法包括:RSA、SM2等算法。支持的对称加密算法包括:AES,SM4等(SM2、SM4为国密算法)。
非对称加密算法对CPU资源消耗非常高,为了提高性能一般可以考虑选择合适的密钥长度,另外针对Java平台建议考虑使用JNI技术提高非对称加密计算性能。
2)身份认证:
引言中提到的该次直播活动是在线付费直播,因此身份认证包含了账号认证和业务认证两部分,即用户必须使用正确的账号密码登录App,且必须付费购买直播门票才有权限观看直播。
为优化系统性能,实时弹幕服务将“地址分配和鉴权”服务进行了特殊优化:
鉴权中心提供用户进入直播间弹幕服务的身份鉴权策略配置。在该次直播活动中采用了动态Token的鉴权机制,即根据用户账号、登录时间、分配的接入地址以及鉴权中心按时间区间生成的“随机数以及对应的Token算法”动态计算鉴权Token。
用户打开直播App,首先完成账号鉴权。在进入直播间时通过业务中心完成直播付费身份认证和弹幕服务地址分配(同步获取到弹幕服务的动态鉴权token),最后根据接入地址登录弹幕服务,弹幕服务依据鉴权中心的策略校验Token正确性。
动态Token鉴权采用进程本地计算的方式。可以在不访问用户服务的情况下完成身份鉴权,在提高登录认证的性能同时有效的降低了业务成本。
6、弹幕技术方案之收发消息(弹幕、礼物)
实时收发消息是直播间的核心业务,主要分为弹幕和礼物两类:
- 1)礼物因涉及付费等因素一般通过客户方业务服务器发送;
- 2)弹幕消息则可以通过聊天室长链接发送。
在千万级直播间场景下,因消息量太高,因此需要从消息量、消息体大小、消息比例等多个方面优化,因此我们设计了一套基于优先级队列的弹幕服务。
首先:为了节约消息产生的带宽,在大型直播项目开始阶段,就需要对消息格式进行优化,充分精简消息体大小。例如将礼物消息展示相关的资源文件提前预加载到直播App中,礼物消息转化为业务编号,可极大的减少消息大小;
其次:针对上行消息设计流控机制。为了能全局控制上行消息体量,设计了逐级流控方案。上层级根据下层级能够支撑处理能力设计相对较粗粒度的本地流控机制。在弹幕反垃圾业务阶段,因需要全局控制消息量,因此采用分布式全局流控方案;弹幕广播阶段则根据业务广播需求再一次进行消息流控。
上行消息通过反垃圾监测后被投递到弹幕服务处理。基于优先级队列的弹幕服务首先按业务划分不同的消息队列,例如:系统广播、高优先级礼物、低优先级、弹幕,然后按队列分配消息比例,最后根据单位时间(1秒)内用户需要接收到的消息量计算各个队列应该投递的消息数量。在实际投递消息的过程中,若前一个队列消息量不足,可将剩余的消息数量叠加到下一个队列,以确保每一个周期都发送足够的消息给用户。
弹幕可通过长连接或CDN广播给其他用户。为了给用户提供极致的弹幕体验,充分发挥边缘加速的优势,在千万级在线直播场景下优先选择CDN方案(如下图所示)。
基于CDN广播弹幕有两种方案:
1)基于推流的方案:类似于直播视频推流技术,即将消息伪装成视频流的形式推送到CDN,直播App以订阅数据流的方式同步弹幕信息;
2)静态文件加速方案:即弹幕服务将不同队列中的消息组装成一个静态文件,直播App周期性的到CDN服务器下载弹幕静态文件。
相对来说:
- 1)静态文件加速方案实现更简单但实时性不高(取决于弹幕同步的周期时长);
- 2)推流的方案消息实时性更高,但实现相对复杂,且需要考虑到不同终端的兼容性。
实际项目中可根据场景和终端类型灵活选择不同的方案。
为了保障服务的可靠性,可考虑融合CDN的方案,即同时将消息推送到多家CDN厂商,并结合CDN厂商的容量比例以及网络延迟情况综合调度(例如基于权重的轮巡调度策略)。
7、弹幕稳定性设计之单元化部署
ChatLink和ChatServer采用单元化部署的方案,有以下优点:
- 1)单元内依赖的核心服务单元之间相互独立,水平扩展能力好,且单元内服务故障不影响其他单元,可以有效避免整个服务不可用的问题;
- 2)跨机房部署,避免单个机房容量不足,或单机房不可用问题;
- 3)弹幕方案采用了单元无状态的设计理念,因此不需要考虑单元之间同步数据的问题。
单个直播间的“接入服务”和“弹幕服务”因需要全局控制未采用单元化部署方案,但是在实施阶段采用了跨机房部署的方案(包括依赖的存储资源、服务),可以避免单个机房故障导致服务不可用的问题。
8、弹幕稳定性设计之单点服务高可用
针对“接入服务”和“弹幕服务”,除了采用跨机房部署外,在服务设计上核心依赖的存储资源、服务,采用主备模式。
例如:心跳负载依赖的缓存服务,单个缓存实例本身高可用,但考虑到极端情况(例如缓存集群内超过一半的服务器宕机导致服务不可用),因此采用主备缓存集群方案,当主集群不可用后,业务主动切换到备用集群,可保障业务在5秒内恢复正常。
9、幕稳定性设计之系统监控与数据大盘
为了实时了解系统运行状态,在弹幕方案中实现了秒级数据大盘方案。
监控大盘围绕用户和消息主要展示以下信息:
- 1)用户地域分布变化;
- 2)上行消息量;
- 3)广播消息量;
- 4)机房出口带宽;
- 5)CDN带宽;
- 6)消息流控比例;
- 7)端侧CDN弹幕同步指标(成功比例、延迟状况)。
为了达成秒级监控的目标,数据收集采用了“业务预聚合+数据中心合并”的实时计算方案。即业务服务直接在本地进程内聚合计算指标上报到数据中心,数据中心仅需要按时间窗口合并监控指标数据即可输出到监控大盘。
10、弹幕稳定性设计之故障与应急预案演练
为确保活动顺利完成,弹幕方案还进行了多次故障与应急预案演练措施。
具体包含两个方面。
1)预设故障演练:即针对高可用设计方案的故障演练,按预设有计划的制造故障,主要验证高可用方案是否生效。
2)随机故障演练:无计划的随机制造故障,主要用于检查应急预案、异常监控报警、数据大盘等应急监测机制是否生效。
11、相关资料
[1]海量实时消息的视频直播系统架构演进之路(视频+PPT)
[2]百万在线的美拍直播弹幕系统的实时推送技术实践之路
[3]阿里电商IM消息平台,在群聊、直播场景下的技术实践
[4]微信直播聊天室单房间1500万在线的消息架构演进之路
[5]百度直播的海量用户实时消息系统架构演进实践
[6]百万人在线的直播间实时聊天消息分发技术实践
[7]直播间海量聊天消息的架构设计难点实践
[8]vivo直播系统中IM消息模块的架构实践
[9]万人群聊消息投递方案的思考和实践
[10]IM中的万人群聊技术方案实践总结
(本文已同步发布于:http://www.52im.net/thread-4299-1-1.html)
关键词:
直播系统聊天技术(九):千万级实时直播弹幕的技术实践
天天看热讯:【Oracle】使用PL/SQL实现冒泡排序
BackboneJS教程_编程入门自学教程_菜鸟教程-免费教程分享 环球关注
环球快讯:智能合约在数字人民币中的应用与治理
2023年普通高校招生录取工作即将开始,教育部发出提醒——高校招生录取期间谨防受骗
世界速讯:47度高温!印度遭极端“烤验”:近期已造成多人死亡
网易游戏公布暑假未成年人限玩时间:大模型干预不理性消费_全球热头条
全球观速讯丨比NS还小却塞进AMD 7840U!AYANEO公布新掌机AIR 1S
焦点热门:599元 小米电视EA32上架:升级5GHz Wi-Fi、分辨率不足1080P
1099元起 Redmi Note 12R发布:首发第二代骁龙4
女子称喂奶后发现医院母婴室装有摄像头?院方回应 信息
天天新资讯:k8s 深入篇———— 守护容器[九]
Spring Boot 项目设计业务操作日志功能,写得太好了!-世界即时看
毕业季,科学城幼儿园大班萌娃用画笔勾勒未来|当前热文
辽宁:全链条打击证券犯罪 去年以来追赃挽损7.14亿余元
上海电气印度业务被诈骗88亿 反被索赔21亿?官方辟谣-环球微头条
腾讯回应数百人部门解散:正常架构调整 不涉及人员优化 每日聚焦
iPhone上市开售16周年:共38款机型 售价越来越贵_独家焦点
全国首位视障播音硕士毕业:键盘盲打完成6万字论文 9年读了百本盲书-天天热门
不惯着!女子人肉占车位撒泼打滚:结局舒适-世界要闻
一次日志配置未生效问题排查记录
linux把文件压缩成.tar.gz的命令&各个压缩解压命令大全--九五小庞
MFC中使用多线程
希望所有计算机专业学生都知道这门课-世界速看
我市举行天然气应急救援演练|世界快看点
7月见!华为大动作不断:将发布新款存储 面向AI大模型 世界观焦点
凯迪拉克格局打开!赞助节目中允许宣传理想L9 还邀请李想体验新车-天天即时
辣眼睛!男子鞋底塞112张《塞尔达传说:王国之泪》卡带入境被查|天天新消息
每日热点:董丽娜,毕业快乐!
环球快播:Linux-vs-MacOS-,你更喜欢哪个系统?
世界热点评!【读财报】一季度信用卡消费者投诉透视:监管处理信用卡业务投诉超3.2万件 工商银行被投诉总量高
cad什么版本最好用_cad那个版本比较好用
对标苹果Studio Display!三星首款5K显示器开售:9999元还送1T SSD
网飞版《三体》预告播放破千万 粉丝喊话别拍砸了:国内拍技术落后?_环球新资讯
ChatGPT假装奶奶哄睡:能免费生成Win系统激活码
热讯:“泡面神器”彻底凉凉!亚马逊Kindle中国电子书店明日停运
SSD等存储要拉开涨价序幕了:有厂商财报明确!
读发布!设计与部署稳定的分布式系统(第2版)笔记15_快速失败和替换 焦点日报
“泰坦”号潜水器残骸中发现“疑似人类遗骸”-天天报道
印度狂买俄罗斯石油:买的多到转手倒卖给欧美
全球热推荐:中超卧龙凤雏诞生!任航被高畠勉培养成武士了!谢晖一语杀人诛心
pta题目集6-8_当前动态
为什么不应该给用户提示错误码-每日观察
21、MyBatis动态<if>标签的使用详解 当前快报
Blazor如何跟随“系统主题”? 环球快资讯
再次认识using 天天报资讯
黄仁勋:NVIDIA的AI产品 已经给客户打1折了_今日看点
RTX 4070换装暴力涡轮风扇 卖到6999元!瞬间降温21℃
秘鲁山谷惊现1500米长的神秘孔带:至今不知道是做什么的-全球观天下
4年亏损近30亿:美特斯邦威以3亿元出售房产自救
短讯!48GB DDR5-8200!芝奇超高频、大容量内存新增白色
热点聚焦:快餐帝国(01843.HK)年度纯利184.3万坡元 同比减少34.83%
影响43万亿美元交易!追踪美联储决策的一大利器即将消亡
阿邦拉霍:红军不能将萨拉赫卖给沙特球队,没有他球队进不了前六|全球聚看点
北方地区将继续受到40℃高温炙烤 温度远远赶超“四大火炉”
影片《消失的她》票房突破11亿元 累计2635万人观影
影帝梁朝伟迎来61岁生日 妻子刘嘉玲晒照为其庆生
《原神》枫丹地区大量内容遭泄露 米哈游将依法追究相关主体法律责任
湖南株洲一小学生暑假作业贴满免作业券 引发网友围观
环球快看:在Linux下如何使用JNI
焦点热门:python: BytesIO 中 read 用法
数码宝贝重启_数码宝贝dw6 0
全球通讯!苹果极力宣传的Apple Watch车祸检测功能频繁闹乌龙!让人头大
国外一飞机尴尬着陆:画面犹如“狗啃泥”
下月开始:Win11要强制更新了
古筝来历小故事_古筝来历
部署zabbix5.0以及使用 全球微头条
天天微速讯:Python教程(1)——python环境的下载与安装
每日焦点!郑少秋女儿辛酸成长史:8个月父亲出轨8岁患上三高,半生缺爱
【天天报资讯】有人坐吗?高级动卧票价一站8分钟420元 跟二等座差价70倍:12306回应
焦点消息!4520元贵妇级护肤品复刻版卖47元:相似度能达到99.99%
nethttp和gin 路由
文心一言 VS 讯飞星火 VS chatgpt (50)-- 算法导论6.2 2题-简讯
Golang 简单的数据对齐可提高程序速度和内存使用率_环球新消息
【前沿】尺寸接近米13!大厂新机渲染图出炉 白色打几分?|全球关注
最便宜4系来了!宝马发布i4 eDriver35四门纯电轿跑:大降4万
今日视点:胃癌几乎都是吃出来的:钟爱烧烤、熏制食物的朋友要注意
女孩用“免作业券”不写暑假作业 网友点赞:凭实力不写-要闻速递
每日聚焦:三星Galaxy S23 FE外观曝光:后置长焦三摄、边角圆润
差评第一!景区摆渡车不能兜来绕去只为钱
【Java】使用 fasterxml.jackson 进行反序列化以及部分注意事项
微动态丨可观测性是什么? 入门指南
WPF MVVM之点滴分享
Donaukit用户创建
【财经分析】东北地区国资国企改革深化推进 或迎来哪些针对性政策?
我莫得感情也莫得耳朵_我莫得感情哪里的梗
续航38小时/能水洗!万魔S50运动蓝牙耳机图赏
爸爸给女儿买RTX 4060 Ti显卡当生日礼物 小女孩表情亮了
来试试手气?《逆水寒》手游6月30日上线:官方宣布抽奖送鹤岗一套房-环球速读
每日消息!比电脑还大:24GB+1TB!今年最能打的直屏旗舰杀疯了
迅雷云盘TV版最高可领180天超级会员特权 支持4K电视超清播放-天天信息
天天微资讯!广州杨大爷退休后,喝酒不喝茅五剑,青睐三款廉价酒
强化学习从基础到进阶-常见问题和面试必知必答[8]:近端策略优化(proximal policy optimization,PPO)算法
债市日报:6月28日|全球新视野
债市日报:6月28日
农村三胞胎姐妹均高分超一本线:成绩一直很优秀
极氪001欧洲价格公布:起售价47万元 比国内贵17万
高管曾言等本土车企“烧死了”再来抢市场!起亚EV6开启盲订 每日速递
今天起 韩国人集体“年轻一两岁”:与一项法案有关
XREAL Beam投屏盒子首次亮相MWC!AR空间屏体验太酷了