作者 | 阿里文娱技术

责编 | 胡巍巍

出品 | CSDN(ID:CSDNnews)

 

背景

DCP 全拼是 Digital Cinema Package,中文是数字电影包,用于存储和转换数字影像的音频、 图像和数据流,是影院放映设备使用的媒体文件包。一部普通 2D  电影的 DCP  大小一般在 40G~60G 之间,一部普通 3D 电影要乘以 2 倍,如果是 IMAX 或者 4k 的电影,DCP 的大小达 到 200G 以上也是正常的。

本文揭秘超过 200G 的超大数字电影包如何高效通过 TMS 传输到各个影厅。现在影院拷贝 DCP 到各影厅的方式主要是使用 TMS(影院放映管理系统)的传输影片功

能,由 TMS 负责把 DCP 传输到各个影厅,但是这种传输的效率不高,数据源只有 TMS,所以各影厅拷贝影片都要到 TMS 上拉取,带宽就成为了瓶颈。

目前使用 TMS 向播放服务器传输 DCP 的模式

使用类 P2P 方式传输

从图 1 可以看出,影厅的播放服务器拉取 DCP 后,它们的带宽就处于空闲状态,那么我们 完全可以使用类似于 P2P(对等网络传输)传输方式解决,这样就可以用现有设施提高影院内 DCP 的分发效率,起到降本提效的效果。

P2P 示意图

根据上面的 P2P 方式,改造影院内传输 DCP 的模型:

改进后的 TMS 向播放服务器传输 DCP 的模式

上图主要叙述的是传输协调器协调各个影厅寻找传输源拉取 DCP 的过程。本改进方案的特 点是增加了一个传输协调器作为共享状态机,协调各影厅拷贝 DCP 的路径,计算出传输路径最 优解。传输协调器的核心功能是:

1)收集各厅播放服务器网络情况;

2)标记 DCP 在各厅播放服务器的存储情况;

3)根据网络情况,计算并派发传输任务到各厅播放服务器。而且使用了本方案的传输方式,传输效率会有极大的提升。例如有一个 DCP 的文件总大小

为 400GB,总共 10 个影厅,带宽为 1000Mbps≈125MB/s,那么使用传统 TMS 传输方式,起码

要 400102410÷125÷60÷60=9.10 小时,差不多一个工作日的时间。而如果使用新方式,仅 需要 3 小时,可以提升 3 倍,而且随着影厅的增多,效率提升指数增加。

 

进一步改进方案

由图 3 了解到,虽然上述方案把带宽浪费的问题解决了,但是架构上还有一些问题:传输 协调器就是一个单点,它挂了,传输就出问题了;数据只能有一个数据来源,来源挂了,传输 就停止了,而且重新传输要从头开始。这时候我们要如何解决?

这两个问题可以使用传输协调器去中心化部署及文件分片断点续传方式下载解决:

1.传输协调器去中心化部署

我们可以把传输协调器部署到各个影厅,每个传输协调器是一个几乎无状态节点,节点之 间无任何信息同步,每当一个影厅的 DCP 传输完成后,就广播到各个传输协调器中。但发送拷 贝指令的方式就需要改造一下,由 TMS 统一发送下载影片的指令到各个影厅的传输协调器,然 后传输协调器就负责询问邻近节点是否有可下载的 DCP,存在则下载,不再需要 TMS 的传输 协调器为影厅指定下载地址。新的网络拓扑图如下:

进一步改进后的网络拓补图

2.文件分片断点续传方式下载 DCP

上一节的方案中,拷贝 DCP 还是使用播放服务器原生指令操作的,限制很大,不支持多数 据源及文件分片操作。既然播放服务器不支持,那么我们就需要自己开发一个中介角色,需要 支持多数据源及文件分片操作,并且具备拷贝 DCP 到播放服务器硬盘的能力,而部署在影厅的 传输协调器恰好可以承担这个职责。多数据源及文件分片方案示意图如下:

多数据源及文件分片方案示意图

上述两种技术方案可以合并使用。小结:虽然这种方式并不能提升多大的速度,但是在系统容错性方面有所提升,用户体验更好了。

总结

通过上述章节可以看出,我们通过将 P2P、FTP、断点续传、文件分片等技术的融合,产生 了一个专用于局域网传输 DCP 的技术方案。我们借鉴 P2P 的思想,实现了影厅的片源在局域网 内共享的效果,克服了传统 TMS 传输 DCP 单数据源的缺点;使用 FTP 作为传输手段,兼容现 有影厅的传输模式;使用断点续传、文件分片提升系统的容错性。

这个方案其实是很典型的组合创新法,用的技术都是已有并且是很经典的,但通过将它们 重新梳理整合,使其在性能上发生质的变化,以产生出新的价值。本文的方案正是使用这种方 法诞生的,在设计这个方案的过程中,我也学会了组合创新法的一些皮毛,以后还要继续努力 学习这种方法。

【End】

推荐阅读 

☞开源的未来 10 年:中国开源社区建立是关键

☞DDoS 攻击爆发!医疗在线教育成重点,代理攻击成常态

☞国外程序员也撸猫,Linux 之父谈在家办公体验!

☞GitHub 疑遭中间人攻击,无法访问,最大暗网托管商再被黑!

☞看完这一篇,你就对 Spring Security 略窥门径了 | 原力计划

☞为何你的 SaaS 想法总是失败?没想清楚这 4 个原因可能会继续失败!

你点的每一个在看,我认真当成了喜欢

为提升 DCP 传输效率,阿里工程师竟然这样做!相关推荐

  1. 如何提升团队的研发效率?阿里工程师这么做

    阿里妹导读:随着业务走向国际化.意想不到的挑战接踵而来--团队迎来一位位金发碧眼工程师,业务支持与优雅代码相互摩擦,沟通协作.研发模式.文化氛围,如何适应这些新的变化?今天,我们邀请Aliexpres ...

  2. 如何评估深度学习模型效果?阿里工程师这么做

    小叽导读:复杂的深度模型中,如果效果不好,是因为网络设计的欠缺?还是数据天然缺陷?是训练代码的bug?还是Tensorflow自身的问题?基于此,阿里工程师推出了DeepInsight深度学习质量平台 ...

  3. 如何把照片压缩到20k一下_如何将图像压缩10倍?阿里工程师有个大胆的想法!...

    小叽导读:如何将单张图片由120k 压缩到了平均13k?阿里工程师做到了!并且将欧式距离计算平均耗时做到9微秒.今天,阿里巴巴技术专家萧冷将公开从初步尝试到优化的过程,希望对你有所帮助.背景在手机上用 ...

  4. 阿里工程师养了只“二哈”,专治讨厌的骚扰电话

    前几天的3.15晚会上曝光了利用智能机器人,一天打4万个骚扰电话,从而赚取利润的黑色产业链. 阿里的工程师恼了,技术是用来让人们生活变美好的,不是被利用来走向阴暗的. 机器人的问题交给机器人! 工程师 ...

  5. 如何评估深度学习模型效果?阿里工程师这么做 1

    复杂的深度模型中,如果效果不好,是因为网络设计的欠缺?还是数据天然缺陷?是训练代码的bug?还是Tensorflow自身的问题?基于此,阿里工程师推出了DeepInsight深度学习质量平台,致力于解 ...

  6. 今晚为阿里工程师疯狂打call!

    2019 天猫双11 96秒成交额破100亿 全球最大流量洪峰 每秒订单峰值54.4万笔 阿里巴巴核心系统  100%上云 我们扛住了! 1心1役 把不可能变成可能 今晚为阿里工程师疯狂打call 在 ...

  7. 每天审核淘宝性感图的工程师,竟然还做了这个

    作者|胡佳洁(佳婕) .黄锦池(尘漠),曲烈(汤问) 出品|阿里巴巴新零售淘系技术部 导读:获取高置信标注的大规模数据集是有监督学习算法的一个难点问题,训练集中的噪声标签会严重降低模型的精度.通过所提 ...

  8. 《阿里工程师的自我修养》笔记

    对标行业精英,有太多值得学习的地方.当你觉得写了2年3年代码技术还是停滞不前的时候,是时候多学习下优秀的人的经验了. 以下是近日读<阿里工程师的自我修养>的笔记,有些概念性的东西是需要结合 ...

  9. 多元高斯分布异常检测代码_数据科学 | 异常检测的N种方法,阿里工程师都盘出来了...

    ↑↑↑↑↑点击上方蓝色字关注我们! 『运筹OR帷幄』转载 作者:黎伟斌.胡熠.王皓 编者按: 异常检测在信用反欺诈,广告投放,工业质检等领域中有着广泛的应用,同时也是数据分析的重要方法之一.随着数据量 ...

最新文章

  1. JS中全局对象的属性和方法
  2. 弱监督学习下商品识别:CVPR 2018细粒度识别挑战赛获胜方案简介
  3. OpenCV的数据类型——基础数据类型
  4. 聊天机器人-ChatterBot初试
  5. python tar 多目录压缩脚本,使用tarfile(Python)只压缩给定目录中的文件
  6. define macro in xcode project
  7. 服务网与Kubernetes上的Istio分5步
  8. minimax算法和Alpha-Beta pruning实现英式跳棋
  9. 微信小程序怎样生成体验版二维码?微信小程序怎么转化为二维码?
  10. MATLAB 计算 确定系数R2
  11. javascript编写1加到100函数
  12. APP开发者常用的4种推广渠道
  13. mysql 主从1146_MySQL5.7主从复制slave报Last_Errno: 1146错误解决
  14. MySQL数据库输入密码后闪退问题的解决方法
  15. 编写高质量的代码——从命名入手
  16. CSS 变形(CSS3) transform
  17. 【学习笔记】OFDM中信道估计技术分析与实现
  18. 阿里云 Windows Server 2012 R2 使用FileZilla Server 快速搭建FTP服务器
  19. 在一个字符串中查找另一个字符串出现的位置
  20. Java实现冒泡算法及优化冒泡算法

热门文章

  1. selenium与chromedriver的操作
  2. 随机初始化(代码实现)
  3. c++ primer 6.5.1节练习答案
  4. [转载]Java Socket实战之二 多线程通信
  5. 绑定图片路径处理img 或asp:image
  6. DNN的Friendly URL剖析及应用
  7. 在PaddlePaddle框架下通过两层全连接网络实现IRIS数据分类
  8. [论文阅读] Adaptive Context Selection for Polyp Segmentation
  9. 正向代理、反向代理和透明代理的详解
  10. Clion添加Posix消息队列的-lrt连接