我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Twitch所主要采用的技术有哪些

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Twitch所主要采用的技术有哪些

本篇内容主要讲解“Twitch所主要采用的技术有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Twitch所主要采用的技术有哪些”吧!

Twitch是一个面向视频游戏的实时流媒体视频平台,由Justin Kan和Emmett Shear联合创立,它是Justin.tv旗下专注于游戏相关内容的独立运营站点。根据其内部分析师透露,Twitch每月的访问量超过3800万,有超过2000万个游戏玩家汇聚到这个平台,每个访问用户在网站的日平均停留时间为1.5小时。网站支持28个国家和地区的语言,包括中文简体和繁体。
Twitch的直播模式完全不同于YouTube等点播批处理方式,直播对技术要求更高更难,这也是目前国内电视直播还依赖有线网络的原因,而互联网上的电视直播业务在直播效果上要大打折扣,而Twitch则是在利用互联网技术实现流畅不间断直播上探索了一条成功道路。
Twitch直播视频和是YouTube的批处理视频不同是:后者将所有视频存储在磁盘上,稍后根据要求进行重播,而直播视对频视频存储写和视频读播放是同时进行的,因此需要一个完全不同的体系架构。下面是其技术堆栈:

Usher - 这是其核心系统,用来实现对视频流播放的业务逻辑服务器
Twice - 可定制的web缓存系统(http://code.google.com/p/twicecache/)
XFS - 文件系统 将视频以秒为单位存储该系统中,
HAProxy - 软件负载平衡.
LVS stack 和 ldirectord - 保证高可用性.
Ruby on Rails - 应用服务器
Nginx - web 服务器
PostgreSQL - 存储用户和其他元数据
MongoDB - 用于存储用户操作事件实现内部分析
MemcachedDB - 用于处理高密集写操作如浏览数量
Syslog-ng - 日志服务
RabitMQ - 用于 job 系统.
Puppet - 用于构建服务器.
Git - 源码控制.
Wowza - Flash/H.264 视频服务器, 许多定制的模块使用Java编写
S3 - small image storage.

跟着 YouTube 等一众厂商的脚步,现在连游戏直播服务 Twitch 也"开始"弃用 Flash 改用 HTML5 了。根据官网的消息,Twitch 目前已经完成了第一步骤,先将旧的 Flash 模块改成了 HTML5 + Javascript 的组合,重新设计了播放控制界面。既然说到这是第一步,这代表了其实 Twitch 的视频本身还是以 Flash 为基础的架构,所以接下来才是要渐渐地将播放器完全置换为从里到外都是 HTML5 基础。新的界面已经可以在 Channel 页面上看到,并且已经逐步地向使用者开始推送,所以看到界面变得比较不同可别以为走错网站了喔。

有一个问题就是:为什么视频直播那么困难?好像只需要大量的带宽,让这一切在内存中,围绕流进行视频组合就可以了,其实没那么简单。是什么让视频直播有如此这样的挑战力?

视频不能像打嗝一样存在中断, 如果视频超过网络容量哪怕几分之一秒,每一个观众在同一时刻将看到屏幕上显示“正在缓冲...“。拥有网络容量是非常重要的。

需要CDN实现溢流overflow Usher会处理这个逻辑,一旦用户量超过最大容量,新的播放者将被发往CDN服务器。

当观众快速发现任何问题就会立即交谈聊天。用户期望能够优雅地处理这些问题。他们必须等到一台服务器上的每个人观众完成浏览后才能让这台服务器维护模式。这是一个非常缓慢的维护过程。会话必须从未中断。通常的网站可以有许多错误只是很少人会注意到,而直播系统则不同。

下面看看Twitch如何应对这些挑战?
他们最大的问题是控制快闪的人群,所谓快闪人群,就是当很多人在同一时间想看同样的事情。这是一个庞大的传入流量。因此,他们需要创建一个方法来在所有的视频服务器和数据中心之间实现实时适应性负载。该机制是Usher。

Usher是一个他们开发的软件,用来管理负载平衡 授权和播放等其他业务逻辑。Usher对每个流视频都要计算出有多少服务器在发送它们,这样确保最佳负载。 它实时决定如何在这些服务器之间复制流,复制依据的规则有:
所有服务器的单独负载
优化的延迟
一个流在哪些服务器上
用户的IP地址,这样能够分辨用户来自哪个国家
根据路由route数据库寻找离用户IP最近的ISP.
根据请求来自的数据中心,试图将这个请求发往同一个数据中心的视频服务器。

使用这些优化指标可以引导优化每个发往服务器的请求,以保证更好的延迟和性能优化。他们还有很多的监控调校表盘和非常细粒度的控制。

每个服务器可以充当一个边缘服务器(该服务器的视频直接发送到观众)和源服务器(视频从一个广播流进该服务器)。基于一个流可适用一台服务器或网络中的每台服务器上的负载策略,不断进行动态的调整。

服务器之间复制流的连接如同树形结构,流的数量不断被取样,如果某个流的新增浏览有快速增加,这个流就会被复制到其他服务器,这个过程不断重复,构建出一个树形(banq注:根据构造定律树形是最有效生命系统特征),最终可能涵盖了某个网络中所有服务器,这个过程每三秒执行一次。

整个视频流从其源服务器到拷贝到其他服务器直至复制到用户都时刻在内存中,其中没有任何磁盘存储。

使用 RTMP协议(视频流播放协议),每个流都需要一个独立的会话,这会带来昂贵的开销,但是广播多播和P2P技术没有使用, 很多下游的ISP不支持多播,只是利用多播在内部服务器进行视频复制,内部带宽相当廉价,但是也没有太多好处,因为无法细粒度控制在服务器间复制。

Usher根据HTTP请求,决定哪个服务器来处理请求的视频,而视频服务器一般是被动的,Usher在其之前控制整个服务器的拓扑结构。

视频流不是来自磁盘,视频是归档存储在磁盘,源服务器会被挑选出来处理一个上传进来的新的视频流,记录这个流在本地磁盘,每一秒视频被保存和归档,归档存储服务器是使用XFS文件系统。架构能够处理数千个并发流视频传入写。每个视频流缺省保存7天,视频文件可能跨磁盘分区保存。

从其他重量协议迁移到HTTP流协议是快乐的,能够使用现有技术进行很好地扩展,但是有一个问题必须积极面对,就是延迟和实时性问题,通常人们认为不超过5-30秒就是实时的了,但是这个不适用成千上万人实时通讯交互,不能有1/4秒的延迟。

以上是介绍了视频广播复制系统,他们还有一套Web架构,两个架构图如下:
Twitch所主要采用的技术有哪些

Twitch所主要采用的技术有哪些

到此,相信大家对“Twitch所主要采用的技术有哪些”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Twitch所主要采用的技术有哪些

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Twitch所主要采用的技术有哪些

本篇内容主要讲解“Twitch所主要采用的技术有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Twitch所主要采用的技术有哪些”吧!Twitch是一个面向视频游戏的实时流媒体视频平台,由J
2023-06-10

数据采集技术主要有哪几种

数据采集技术主要有手工采集方法、自动化采集方法、网络采集方法和机器学习方法这四种。随着信息时代的到来,数据的重要性愈发突显。不论是企业经营决策、市场调查,还是学术研究,都离不开数据的支持。而数据采集技术就是获取、收集、整理和存储数据的过程。
2023-07-10

Quora开发的主要技术有哪些

本篇内容介绍了“Quora开发的主要技术有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先来看一下Quora网站开发主要利用到的技术:
2023-06-10

大数据技术栈,主要有哪些

往大数据方向发展需要学哪些技术?网上一搜真是指不胜屈。对于小白来说,实在是一头雾水,到底哪些是当下流行的?哪些是必须要先学会的?流行?主次搞不清。为了解决这些疑惑,羚羊专门花了些时间,  挨个技术去研究对比归类,大概总结出以下的技术点:文件存储: Hadoop
大数据技术栈,主要有哪些
2021-09-27

服务器虚拟化技术主要有哪些

服务器虚拟化技术主要有:1、硬件虚拟化技术,是在单台服务器上承载多种不同系统,对硬件资源进行虚拟化,是企业普遍采纳的技术方案;2、并行虚拟化技术,可以通过优化系统以降低额外损耗,效率更高;3、操作系统虚拟化技术,提供了一个更为精简的架构体系
2023-02-08

计算机硬件的主要技术指标有哪些

这篇文章主要介绍了计算机硬件的主要技术指标有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。计算机硬件的主要技术指标是:1、机器字长,;2、运算速度;3、存储容量,指存放二
2023-06-14

php后端开发主要掌握的技术有哪些

这篇文章主要介绍“php后端开发主要掌握的技术有哪些”,在日常操作中,相信很多人在php后端开发主要掌握的技术有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php后端开发主要掌握的技术有哪些”的疑惑有所
2023-07-05

采用了ssl协议技术的网站有哪些优势

采用了SSL协议技术的网站具有以下优势:1. 数据加密:通过SSL加密,网站上的数据传输变得安全可靠。这意味着第三方无法窃取或篡改传输的数据,确保用户的个人信息和敏感数据的安全。2. 身份验证:SSL证书可以验证网站的身份,并确保用户正在与
2023-08-25

Java技术主要有哪些应用方向?这里揭晓!

随着互联网的发展,越来越多的人开始学习Java。那么Java到底有哪些技术应用呢?首先是Android应用。许多Android的应用都是由Java程序员开发的。虽然 Android运用了不同的JVM以及不同的封装方式,但是代码还是用Java
2023-06-02

网站主机的数据库技术有哪些

今天小编给大家分享一下网站主机的数据库技术有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。SQL Server 或 Or
2023-06-12

虚拟主机技术的优缺点有哪些

虚拟主机技术的优点包括:1. 低成本:虚拟主机可以在一台物理服务器上运行多个虚拟服务器,因此可以减少硬件和维护成本。2. 灵活性:虚拟主机可以根据需求进行扩展和缩减,可以根据流量和资源需求调整虚拟机的配置。3. 资源隔离:虚拟主机可以为每个
2023-08-16

小程序开发需要的技术有哪些

这篇文章给大家分享的是有关小程序开发需要的技术有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。微信成为一种生活方式的目标已经实现,可以说微信已是移动互联网中的独立生态王国,现在微信要借小程序收割线下的流量!无
2023-06-15

NumPy的主要用途有哪些

NumPy是Python中用于科学计算的一个库,它的主要用途包括:1. 数组操作:NumPy提供了多维数组对象(ndarray),可以进行高效的数组操作,包括创建、索引、切片、变形、合并等。2. 数学函数:NumPy提供了各种数学函数,如三
2023-10-11

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录