10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

用 Amazon Web Service 实现视频文件转换程序

  • 2007-07-29
  • 本文字数:1267 字

    阅读完需:约 4 分钟

过去InfoQ 已经报道过,Amazon 的基础服务平台在节省成本方面上了一级新台阶,也让某些类型的应用得以利用它的可伸缩的计算和存储平台。最近有一个示例程序向我们演示了如何利用Amazon 的三个关键Web Services 构建一个视频文件转换服务:即简单存储服务(Simple Storage Service,S3)、简单队列服务(Simple Queue Service,SQS)和弹性计算云(Elastic Compute Cloud、EC2)这三个服务。

S3 用于存储要转换的文件:

“Amazon S3 不但是存储要转换的视频文件的最佳场所,也是存储我们的转换服务产生的输出文件的最佳场所。除了快速和可靠,我们还完全不需要担心磁盘空间不足的问题。”

为了实现服务的可伸缩性和高可用性,服务被设计成消息驱动的,其中利用了 SQS 的可靠消息传递。这保证了客户请求按照它们被接收到的顺序执行。

ConvertVideo 服务是用 Python 编写的,其中使用了 Boto 类库,这个库提供了一系列用于集成 Amazon Web Service 的类。为了向 EC2 提供这个服务,必须先创建并注册一个 AMI(Amazon Machine Image)文件,以便按需创建服务的实例。

在客户端,Boto 库提供了一个命令行接口,可以用来上传一个目录下的所有文件到一个 S3“桶”,并为每个文件发送一条 SQS 消息。一旦文件上传完毕,一个服务实例就会被启动来处理队列中的消息。

为了测试可伸缩性,我们现在用一个服务实例转换 50 个视频文件:

  • 平均处理时间:17.820000
  • 消耗时间:896
  • 产出:3.348214 事务 / 分钟

下一步我们用 10 个服务实例处理 500 个视频文件:

  • 平均处理时间:17.794000
  • 消耗时间:928
  • 产出:32.327586 事务 / 分钟

额外增加的服务实例使得产出以可预测的方式线性增长:

果然,平均处理时间和消耗时间几乎一样,而总体产出则大约是上一个例子的 10 倍,这正是我们所期望的结果。

教程还详列了转换 500 个视频文件的成本:

存储 2.5 GBytes $0.38/ 月 传输 2.5 GBytes $0.50 消息 1000 $0.10 计算资源 8 个实例~20 分钟 $0.80 总计: $1.78 转换 500 个视频共花费约 $1.78,也就是说转换每个视频文件的成本低于 $0.004。

AWS 基础设施看起来非常适合于像文件转换这样的计算服务,不过有人对这个缺少数据库的平台的实用性提出了疑问。Dare Obasanjo 在他的博文《 Amazon EC2 + S2 不够好》中对缺少数据库表示惋惜,他正在试验一个 Facebook 应用:

“看起来要实现这个相当简单直接的应用超出了目前 EC2 + S3 的能力。S3 主要适用于文件存储,虽然它为图片和 CSS 样式表的低成本存储提供了一个不错的选择,但在存储关系型数据和结构化数据上它不是一个好的选择。”

当然,Amazon 在大规模服务上有丰富的经验。在《 Google 西雅图可伸缩性会议总结》一文中,Robin Harris 就 Verner Wogels(Amazon 的 CTO)的名言:“数据库是恐龙”发表了评论。也许 Dynamo ——Amazon 将在 SOSP 2007 上演示的可伸缩数据存储——会是 AWS 拼图中缺失的那一块。

查看英文原文: Using Amazon Web Services to Implement a Video File Conversion app

2007-07-29 22:001390
用户头像

发布了 225 篇内容, 共 72.3 次阅读, 收获喜欢 52 次。

关注

评论

发布
暂无评论
发现更多内容

springboot连接Nexus私服

小鲍侃java

11月日更

使用命令模式重构播放器控制条

Tom弹架构

Java 架构 设计模式

TDengine助力顺丰科技大数据监控改造

TDengine

tdengine 时序数据库

Go语言学习查缺补漏ing Day4

Regan Yue

Go 语言 11月日更

盲盒开发

阿里P8手敲出来这份565页凤凰架构分布式手册,惨遭GitHub直接封杀

热爱java的分享家

Java 面试 编程语言 经验分享 凤凰架构

ArkUI 3.0让多设备开发更简单|HDC2021技术分论坛

HarmonyOS开发者

HarmonyOS

渗透实战:内网域渗透

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

主客体命名法

少个分号

模块四课后作业 - 设计千万级学生管理系统的考试试卷存储方案

渐行渐远

架构实战营

太顶了!华为高工用一份423页的网络协议笔记把计算机网络讲清了

热爱java的分享家

Java 面试 程序人生 网络协议 经验分享

ICCV 2021口罩人物身份鉴别全球挑战赛冠军方案分享

阿里云CloudImagine

阿里云 计算机视觉 视频云 ICCV2021 ICCV

这一次,飞书改变「飞书」

ToB行业头条

热爱代码且发量惊人,一名反“内卷”研发工程师的日常

尔达Erda

程序员 开发者 技术人生 成长笔记

CSS布局(二)之多列布局

Augus

CSS 11月日更

架构师书籍推荐:2021年必看的架构师图书

华章IT

架构师

等级保护对象是指什么?是指整个单位吗?

行云管家

云计算 网络安全 等保 等级保护 等保2.0

云账户是什么意思?有什么用?

行云管家

云计算 公有云 私有云 混合云 云资源

修复SecurityException: getDataNetworkTypeForSubscriber问题

Changing Lin

11月日更

关于风险管理,如何将思维从项目升维到项目群?

光环PMO社群

项目管理 项目经验

百万关注的CSRF攻击是什么意思?

喀拉峻

黑客 网络安全 安全 信息安全

React性能优化

CRMEB

人脸识别实战:使用Python OpenCV 和深度学习进行人脸识别

AI浩

人脸识别

CODING 项目协同 2.0 —— 让协作有条不紊

CODING DevOps

DevOps 研发管理 CODING 项目协同

赋能“数字金融”,CODING 再下数城

CODING DevOps

研发管理 数字化转型 CI/CD 代码管理 可视化软件

.Net6 miniAPI JWT鉴权授权的多种实现

面向对象的猫

netcore NET6

前端如何低门槛开发iOS、Android、小程序多端应用

YonBuilder低代码开发平台

Shopee 末端物流智能提效之路

Shopee技术团队

人工智能 算法 后端 供应链 物流

【语言】Java 日期 API 的使用技巧

恒生LIGHT云社区

Java 编程语言

一文解析数据库的三生三世

Zilliz

数据库 oracle 数据库设计 Milvus

用Amazon Web Service实现视频文件转换程序_SOA_Gavin Terrill_InfoQ精选文章