android bilibili弹幕技术解析,bilibili高并发实时弹幕系统的实战之路(1)
原标题:bilibili高并发实时弹幕系统的实战之路(1)
来源:
主要从直播弹幕系统必备的高稳定、高可用、低延迟这三个方面出发,主要分享了bilibili直播弹幕服务架构上的最新实践。以下为正文:
高并发实时弹幕是一种互动的体验。对于互动来说,考虑最多的地方就是:高稳定性、高可用性以及低延迟这三个方面。
高稳定性,为了保证互动的实时性,所以要求连接状态稳定;
高可用性,相当于提供一种备用方案,比如,互动时如果一台机器挂了,此时必须保证可以和另外一台机器连接,这样就从侧面解决了,用户连接不中断的问题;
低延迟,弹幕的延迟周期控制在1秒以内,响应是比较快的,所以可以满足互动的需求。
B站直播弹幕服务架构(下面简称GOIM)的出现就是为了解决这一系列的需求。下面将对此进行详细的介绍。
图 1
直播聊天系统本质上也是一种推送系统,所谓推送系统就是,当你发送一条消息时,它可以将这个消 息推送给所有人。对于直播弹幕来说,用户在不断的发送消息,不断的进行广播,当一个房间里面有10万人时,一个消息就要发出10万次请求。在GOIM出现 之前,也用过另一个名为Gopush的项目,这个项目推出的目的就是进行推送。在此之后,基于一些针对性的应用场景,GOIM对Gopush进行了优化, 从而出现在我们视野当中。GOIM主要包含以下几个模块
(图1)
1. Client
客户端。与Comet建立链接。
2. Comet
维护客户端长链接。在上面可以规定一些业务需求,比如可以规定用户传送的信息的内容、输送用户信息等。Comet提供并维持服务端与客户端之间的链接,这里保证链接可用性的方法主要是发送链接协议(如Socket等)
3. Logic
对消息进行逻辑处理。用户建立连接之后会将消息转发给Logic,在Logic上可以进行账号验证。当然,类似于IP过滤以及黑名单设置此类的操作也可以经由Logic进行。
4. Router
存储消息。Comet将信息传送给Logic之后,Logic会对所收到的信息进行存储,采用register session的方式在Router上进行存储。Router里面会收录用户的注册信息,这样就可以知道用户是与哪个机器建立的连接。
5. Kafka(第三方服务)
消息队列系统。Kafka是一个分布式的基于发布/订阅的消息系统,它是支持水平扩展的。每条发布到Kafka集群的消息都会打上一个名为Topic(逻辑上可以被认为是一个queue)的类别,起到消息分布式分发的作用。
6. Jop
消息分发。可以起多个Jop模块放到不同的机器上进行覆盖,将消息收录之后,分发到所有的Comet上,之后再由Comet转发出去。
以上就是GOIM系统实现客户端建立链接,并进行消息转发的一个具体过程。一开始这个结构并不完善,在代码层面也存在一些问题。鉴于这些问题,B站提供了一些相关的优化操作。在高稳定性方面,提供了内存优化、模块优化以及网络优化,下面是对这些优化操作的介绍。
责任编辑:
android bilibili弹幕技术解析,bilibili高并发实时弹幕系统的实战之路(1)相关推荐
- BILIBILI 高并发实时弹幕系统那些事(项目开源、架构演变)
原文地址:http://blog.csdn.net/hxqneuq2012/article/details/52813937 B 站建立开源工作组:ijkplayer 等多个项目开源 SegmentF ...
- bilibili高并发实时弹幕系统的实战之路
声明:本文来自「七牛云主办的架构师实践日--泛娱乐+直播技术最佳实践」的演讲内容整理.PPT.速记和现场演讲视频等参见"七牛架构师实践日"官网. 嘉宾:刘丁,bilibili 架构 ...
- android bilibili弹幕技术解析,bilibili弹幕爬取与比对分析
最近受人之托研究了下b站的数据爬取做个小工具,最后朋友说不需要了,本着开源共享的原则,将研究成果与大家分享一波,话不多说直接上干货 需求分析 给定up主uid和用户uid,爬取用户在该up主所有视频中 ...
- BILIBILI 高并发实时弹幕系统的实战之路 | 架构师实践日
B 站直播弹幕服务架构(下面简称 GOIM )的出现就是为了解决这一系列的需求.下面将对此进行详细的介绍. B 站直播弹幕服务架构 GOIM 的出现 图 1 直播聊天系统本质上也是一种推送系统,所谓 ...
- 跳槽字节跳动,Alibaba高并发业务秒杀系统落地实战文档,深入剖析
前言 最近刷到了一句耐人寻味的话,"解决雪崩问题的最好办法是不发生雪崩". 不论是在硅谷互联网公司里还是在国内的互联网平台上,曾多次遇到过海量规模的交易瞬间吞噬平台的悲惨故事. 核 ...
- android bilibili弹幕技术解析,bilibili弹幕定位
// ==UserScript== // @name bilibili弹幕定位 // @namespace http://tampermonkey.net/ // @version 1.3 // @d ...
- android 高并发弹幕,高并发实时直播弹幕研发实践
高并发实时直播弹幕研发实践 直播间特点 聊天室限制人数的原因 应对万级以上的实时互动 跨服务器是为了解决单一服务器接入数量限制.发布消息吞吐限制等问题: 多进程并发则是为了充分利用多核CPU以及减小一 ...
- 京东618技术解析之高可用多中心交易平台
京东618技术解析之高可用多中心交易平台 分流是应对互联网业务流量峰值时保证系统高可用的常规方法,但涉及交易系统的分流是很难的.京东在备战2015年618时就开始了多中心交易的改造,让用户就近访问交易 ...
- 高并发实时直播弹幕研发实践
高并发实时直播弹幕研发实践 直播间特点 聊天室限制人数的原因 应对万级以上的实时互动 跨服务器是为了解决单一服务器接入数量限制.发布消息吞吐限制等问题: 多进程并发则是为了充分利用多核CPU以及减小一 ...
最新文章
- [LeetCode-JAVA] Reverse Nodes in k-Group
- Android --- 解决 cannot connect to daemon at tcp:5037: cannot connect to 127.0.0.1:5037: 由于目标计算机积极拒绝,无
- 分布式数字签名令牌TokenProvider
- 裤子换裙子,就问你GAN的这波操作秀不秀
- 事务的状态(状态模式)
- 南充一中计算机机房被盗,四川省CCF CSP-JS第一轮认证考试在南充一中成功举行...
- LeetCode 221 最大正方形
- matlab封闭传递包求解,梯度下降和封闭形式的解决方案 - MATLAB中不同的假设线...
- js弹出对话框(半透明背景,兼容各浏览器)
- Spring Boot 集成 RabbitMQ 升级
- 读书笔记——并行处理器架构
- vue导出excel文件下载
- PowerShell中使用WMI或CIM
- 微信H5适配 解决微信调整字体大小导致Html5页面混乱
- [python]---药品数据分析及预测(包括数据集,源码,报告)
- axios.post发送小数据可以,但发送大数据出现Cross origin requests are only supported for protocol schemes: http, data,
- 深度学习入门---PCA,白化
- 机器人测钢卷直径_自动拆钢卷捆带装置的制作方法
- Android 7 Nougat 源码目录结构
- 2022QS世界大学学科排名,中国大陆上榜课程数仅次于美英,化学、材料、生物集中度最高 | 美通社头条...
热门文章
- 广州市专精特新补贴政策最高可达200万元
- CocosCreator进阶实战第一部分:头脑风暴
- 单片机的机器周期、震荡周期和指令周期之间的关系,工作原理。
- 微信错误集锦 PHP ThinkPHP 方法
- linux运维视频教程 linux培训视频
- QNAP文件传输服务器,如何通过 DLNA/UPnP 欣赏存储在 QNAP NAS 上的多媒体内容?
- 北航与西安交大计算机专业对比,都在关注!哈工大、西安交大、北航等五大双一流高校是否值得报考...
- 如何判断车与路边线距离_车身与边线30公分距离如何判断?6种方法秒懂!
- C#关于List的线程安全问题(一)
- MyEclipse has detected that less than 5% of the 31MB of Eden Space (Heap memory)