原标题: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)相关推荐

  1. BILIBILI 高并发实时弹幕系统那些事(项目开源、架构演变)

    原文地址:http://blog.csdn.net/hxqneuq2012/article/details/52813937 B 站建立开源工作组:ijkplayer 等多个项目开源 SegmentF ...

  2. bilibili高并发实时弹幕系统的实战之路

    声明:本文来自「七牛云主办的架构师实践日--泛娱乐+直播技术最佳实践」的演讲内容整理.PPT.速记和现场演讲视频等参见"七牛架构师实践日"官网. 嘉宾:刘丁,bilibili 架构 ...

  3. android bilibili弹幕技术解析,bilibili弹幕爬取与比对分析

    最近受人之托研究了下b站的数据爬取做个小工具,最后朋友说不需要了,本着开源共享的原则,将研究成果与大家分享一波,话不多说直接上干货 需求分析 给定up主uid和用户uid,爬取用户在该up主所有视频中 ...

  4. BILIBILI 高并发实时弹幕系统的实战之路 | 架构师实践日

    B 站直播弹幕服务架构(下面简称 GOIM )的出现就是为了解决这一系列的需求.下面将对此进行详细的介绍. B 站直播弹幕服务架构 GOIM 的出现 图  1 直播聊天系统本质上也是一种推送系统,所谓 ...

  5. 跳槽字节跳动,Alibaba高并发业务秒杀系统落地实战文档,深入剖析

    前言 最近刷到了一句耐人寻味的话,"解决雪崩问题的最好办法是不发生雪崩". 不论是在硅谷互联网公司里还是在国内的互联网平台上,曾多次遇到过海量规模的交易瞬间吞噬平台的悲惨故事. 核 ...

  6. android bilibili弹幕技术解析,bilibili弹幕定位

    // ==UserScript== // @name bilibili弹幕定位 // @namespace http://tampermonkey.net/ // @version 1.3 // @d ...

  7. android 高并发弹幕,高并发实时直播弹幕研发实践

    高并发实时直播弹幕研发实践 直播间特点 聊天室限制人数的原因 应对万级以上的实时互动 跨服务器是为了解决单一服务器接入数量限制.发布消息吞吐限制等问题: 多进程并发则是为了充分利用多核CPU以及减小一 ...

  8. 京东618技术解析之高可用多中心交易平台

    京东618技术解析之高可用多中心交易平台 分流是应对互联网业务流量峰值时保证系统高可用的常规方法,但涉及交易系统的分流是很难的.京东在备战2015年618时就开始了多中心交易的改造,让用户就近访问交易 ...

  9. 高并发实时直播弹幕研发实践

    高并发实时直播弹幕研发实践 直播间特点 聊天室限制人数的原因 应对万级以上的实时互动 跨服务器是为了解决单一服务器接入数量限制.发布消息吞吐限制等问题: 多进程并发则是为了充分利用多核CPU以及减小一 ...

最新文章

  1. [LeetCode-JAVA] Reverse Nodes in k-Group
  2. Android --- 解决 cannot connect to daemon at tcp:5037: cannot connect to 127.0.0.1:5037: 由于目标计算机积极拒绝,无
  3. 分布式数字签名令牌TokenProvider
  4. 裤子换裙子,就问你GAN的这波操作秀不秀
  5. 事务的状态(状态模式)
  6. 南充一中计算机机房被盗,四川省CCF CSP-JS第一轮认证考试在南充一中成功举行...
  7. LeetCode 221 最大正方形
  8. matlab封闭传递包求解,梯度下降和封闭形式的解决方案 - MATLAB中不同的假设线...
  9. js弹出对话框(半透明背景,兼容各浏览器)
  10. Spring Boot 集成 RabbitMQ 升级
  11. 读书笔记——并行处理器架构
  12. vue导出excel文件下载
  13. PowerShell中使用WMI或CIM
  14. 微信H5适配 解决微信调整字体大小导致Html5页面混乱
  15. [python]---药品数据分析及预测(包括数据集,源码,报告)
  16. axios.post发送小数据可以,但发送大数据出现Cross origin requests are only supported for protocol schemes: http, data,
  17. 深度学习入门---PCA,白化
  18. 机器人测钢卷直径_自动拆钢卷捆带装置的制作方法
  19. Android 7 Nougat 源码目录结构
  20. 2022QS世界大学学科排名,中国大陆上榜课程数仅次于美英,化学、材料、生物集中度最高 | 美通社头条...

热门文章

  1. 广州市专精特新补贴政策最高可达200万元
  2. CocosCreator进阶实战第一部分:头脑风暴
  3. 单片机的机器周期、震荡周期和指令周期之间的关系,工作原理。
  4. 微信错误集锦 PHP ThinkPHP 方法
  5. linux运维视频教程 linux培训视频
  6. QNAP文件传输服务器,如何通过 DLNA/UPnP 欣赏存储在 QNAP NAS 上的多媒体内容?
  7. 北航与西安交大计算机专业对比,都在关注!哈工大、西安交大、北航等五大双一流高校是否值得报考...
  8. 如何判断车与路边线距离_车身与边线30公分距离如何判断?6种方法秒懂!
  9. C#关于List的线程安全问题(一)
  10. MyEclipse has detected that less than 5% of the 31MB of Eden Space (Heap memory)