关于后端:流媒体技术初识

36次阅读

共计 2010 个字符,预计需要花费 6 分钟才能阅读完成。

博客:cbb777.fun

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

github: https://github.com/anneheartrecord

下文中我说的可能对,也可能不对,鉴于笔者程度无限,请君自辨。有问题欢送大家找我探讨

什么是视频资源

所谓视频资源,在播放和底层存储的时候其实就是一张一张图,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 多平台公布

正文完
 0