博客:cbb777.fun

全渠道账号:安妮的心动录

github: github.com/anneheartre…

下文中我说的可能对,也可能不对,鉴于笔者水平有限,请君自辨。有问题欢迎大家找我评论

什么是视频资源

所谓视频资源,在播映和底层存储的时分其实便是一张一张图,30帧为一秒三十张图,60帧为一秒60张图等。一连串的图片按照必定帧率播映出来,刚开始的时分没有声音,所以音频信息就需求在各个帧进行准确设置,播映才可以音画同步。

流媒体:

核算机科技在历经了文件(File)、页面(Web)年代之后,今天来到了以流(Streams)为单位的年代,而这个流的最典型的运用便是“流媒体”技能,它指的是在网络上选用流式传输技能来发布音频、视频以及其他多媒体文件。

所谓的流式传输便是将音频、视频多媒体文件经过必定的算法,编码压缩成一个个很小的压缩包,流媒体服务器经过特定网络协议进行连续、实时的传送,用户端接受到压缩包后由播映软件实时解压缩实现播映的过程。而所谓的流媒体则特指一切选用这种流式传输的媒体文件。

今天咱们经过互联网看视频、直播、盒子看电视算如此便利,背后就有着流媒体体系的支撑。

在关于音视频的传输分发上,咱们会经常听到HTTP渐进式、HTTP流、文件下载、实时流式传输等等专业术语,下表总结了不同传输方式的特点

流媒体技术初识
需求完成一个支撑高体会大规模的流媒体体系,需求考虑的技能层面有

  1. 云核算根底服务相关技能:根据云架构的核算、网络、存储、CDN等底层根底服务现已变成了必须。硬件虚拟化、网络虚拟化可以最大程度保障音视频播映的稳定性;一起CDN内容分发网络可以有效应对高并发和徒增流量的需求,对流媒体传输的所有环节进行针对性优化,大幅度下降延时,目标存储满意了流媒体数据的大规模存储要求
  2. 音视频相关技能:音视频的编解码、4K、VR等音视频核心技能才能
  3. 场景化需求:秀场娱乐直播的实时录制,实时水印,实时鉴黄;连麦,版权保护等等

Youtube

Youtube是怎么存储海量音视频数据的? Youtube是仅次于谷歌的第二大热门网站,在19年5月,每分钟会有500小时的视频内容上传到该渠道

架构

流媒体技术初识
Youtube的后端微服务是由Python Java 和Go 写的,而前端是运用JS写的,主要的数据库是由Vitess支撑的MySQL,另外运用Memcache实现了缓存,并运用Zookeeper进行节点的协调

盛行的视频经过CDN来供给,而一般的、较少播映的视频则从数据库中获取 视频压缩:可以运用其他编码器一半的带宽来编码视频

视频流:运用根据HTTP协议的动态自习惯流,可以按照不同的速率供给给观众,客户端经过观看者的互联网速度主动习惯视频渲染,然后尽可能少的削减缓冲时刻

Vitess的诞生 随着网站越来越大,恳求量越来越多,不得不对数据库进行水平拓宽

主-从副本

副本会增加到数据库实例中,读取恳求会被路由到主数据库和副本上,其中主节点可写又可读,从节点只可读。

但是这种场景中,有可能会从副本中读取到陈腐的数据,如果在主节点将信息更新到副本之前,一个恳求读取了副本的数据,那么观看者就会得到陈腐的数据。但是一般没什么大问题,由于在一段时刻的运转后,不同节点的数据会答到最终一致

分片

当QPS继续增大,就该对数据库进行分片了,分片并不是一个简单的过程,它大大的增加了体系的复杂性

数据库分片之后,数据被涣散到多台机器上,这增加了体系写入的吞吐量,不再是只要一个主节点能承担写的使命,一起,每台机器都创建了单独的副本,以实现冗余和吞吐

灾祸办理

为了防止忽然掉电、火灾等情况,需求对数据进行冗余,将用户数据备份到国际不同地舆区域的数据中心。丢失用户数据和服务不可用算不允许的。一起具有多个数据中心也有助于Youtube削减体系延迟,由于用户恳求会被路由到最近的数据中心

Vitess

是一个运转在MySQL之上的数据库集群方案,可以使MySQL进行水平拓宽。它具有内置的分片特性,可以让开发人员拓宽数据库,而不必再运用中增加任何的分片逻辑。类似于nosql的做法

流媒体技术初识
vitess会主动处理故障转移与备份,除了youtube,vitess还被业界的其他闻名厂商运用,如github等

当你需求acid事务和强一致性的支撑,一起又希望像NoSQL一样快速拓宽联系型数据库的时分,Vitess就会大显身手,经过根据go编程供给的连接池,Vitess可以以很低的本钱办理很多连接

布置到云中:vitess是云原生的,而且容量是逐渐增加到数据库中的。它可以作为一个K8S感知的云原生散布式数据库运转

怎么存储

视频会存储在谷歌数据中心的硬盘里,由GFS和BigTbale办理, GFS是谷歌开发的一个散布式文件体系,用于办理散布式环境中的大规模数据,而BigTable是建立在GFS上的低延迟散布式数据存储体系,用于处理散布在千万台机器上的PB级别的数据

本文由mdnice多渠道发布