流媒体技术初识

博客:cbb777.fun

全平台账号:安妮的心动录

github: https://github.com/anneheartrecord

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

什么是视频资源

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

流媒体:

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

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

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

在对于音视频的传输分发上,我们会经常听到HTTP渐进式、HTTP流、文件下载、实时流式传输等等专业术语,下表总结了不同传输方式的特点 image.png 需要完成一个支撑高体验大规模的流媒体系统,需要考虑的技术层面有

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

Youtube

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

架构 image.png Youtube的后端微服务是由Python Java 和Go 写的,而前端是使用JS写的,主要的数据库是由Vitess支持的MySQL,另外使用Memcache实现了缓存,并使用Zookeeper进行节点的协调

流行的视频通过CDN来提供,而一般的、较少播放的视频则从数据库中获取 视频压缩:能够使用其他编码器一半的带宽来编码视频

视频流:使用基于HTTP协议的动态自适应流,可以按照不同的速率提供给观众,客户端通过观看者的互联网速度自动适应视频渲染,从而尽可能少的减少缓冲时间

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

主-从副本

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

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

分片

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

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

灾难管理

为了防止突然掉电、火灾等情况,需要对数据进行冗余,将用户数据备份到世界不同地理区域的数据中心。丢失用户数据和服务不可用算不允许的。同时拥有多个数据中心也有助于Youtube减少系统延迟,因为用户请求会被路由到最近的数据中心

Vitess

是一个运行在MySQL之上的数据库集群方案,能够使MySQL进行水平拓展。它具有内置的分片特性,能够让开发人员拓展数据库,而不必再应用中添加任何的分片逻辑。类似于nosql的做法 image.png vitess会自动处理故障转移与备份,除了youtube,vitess还被业界的其他知名厂商使用,如github等

当你需要acid事务和强一致性的支持,同时又希望像NoSQL一样快速拓展关系型数据库的时候,Vitess就会大显身手,通过基于go编程提供的连接池,Vitess能够以很低的成本管理大量连接

部署到云中:vitess是云原生的,并且容量是逐步添加到数据库中的。它可以作为一个K8S感知的云原生分布式数据库运行

如何存储

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

本文由 mdnice 多平台发布

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值