阿里、微众、PingCAP专家分享如何解决可观测性带来的埋点成本上升、观测数据割裂等挑战。戳 了解详情
写点什么

CloudCrowd——一个 100% 的 Ruby 云方案

  • 2009 年 9 月 22 日
  • 本文字数:1225 字

    阅读完需:约 4 分钟

一年前,纽约时报和 ProPublica 联合发起了耐特新闻挑战 2009 竞赛。 DocumentCloud 赢得 715,500 美元的奖金,任务是构建一个基于文档的应用,使得组织和检查文档变得更加容易。因为考虑到同时要处理好几个资源消耗比较大的任务,DocumentCloud决定完全用Ruby 实现自己的云方案: CloudCrowd

DocumentCloud 主要是使用 CloudCrowd 处理 PDF 文档,但是也可以用来处理下面一些资源消耗大的任务:

  • 创建或者伸缩图片;
  • 在 PDF 上进行文字抽取,或者 OCR;
  • 视频解码;
  • 迁移大文件集合或者数据库;
  • Web 抓取

CloudCrowd 架构文档中有如下描述:

CloudCrowd 不是为大量小事务所设计,而是为那些大型、消耗资源比较多的事务所准备的。

CloudCrowd 的灵感来自于 MapReduce 框架。它的架构基于一个使用工作者守护进程进行实际处理的中央服务器。它提供了一个 REST-JSON API,以及一个用于检测的 Web 控制台。CloudCrowd 使用 Amazon S3 用于文件存储,但如果需要的话,也可以使用其他工具进行存储。

InfoQ 据此采访了 CloudCrowd 的作者 Jeremy Ashkens。Jeremy 是 DocumentCloud 的新人,也是 Ruby-Processing 项目的作者。

InfoQ:和 RightScale Gems 或者 Nanite 相比,CloudCrowd 有什么特点?为什么你们要构建自己的方案?

Jeremy Ashkenas:嗯,其实 CloudCrowd 使用了 RightScale AWS gem。它使用 S3 进行所有结果数据(包括中间和最终数据)的分布式存储。这个变化很大,也是一个很有意思的研究方向,它要通过 RightScale gem 装载更多的 EC2 实例,以支持 CloudCrowd 群集的自动伸缩。中央服务区拥有用于决策自动伸缩需要的所有信息——它了解工作者的数目,它们的地点,它们的状态,以及工作序列的大小等。这只是一个关于为实例装载选择算法,并确保新的实例已有所有需要安装的依赖文件的问题。

和 Nanite 相比较,CloudCrowd 的方向是成为 Ruby 高手容易理解和定制的简单易用工具。它使用的是绝大多数 Ruby 开发者熟悉的技术,比如 ActiveRecord 和标准的 ActiveRecord 数据库,以及用于通讯和伸缩的 HTTP 和 S3 等。所有的这些都很容易调试和研究。最小的 CloudCrowd action 是一个简单的 Ruby 类,它被用来定义一个“进程”方法,执行计算中的并行部分,并保存到 S3。你可以将 CloudCrowd 理解为像 Hadoop 和 Nanite 等企业级系统的替代品。不需要 Erlang,AMQP 或者 RabbitMQ 等。另外,它没说一定可以用来处理极大容量的数据,但大多数情况下应该都可以应用,这主要取决于你处理问题的效率如何。

InfoQ:为什么使用 Ruby?有没有考虑到用其他语言,比如 Erlang?

Jeremy Ashkenas:我之所以使用 Ruby,是因为我们想将 DocumentCloud 其他的部分都粘合在一起。注意,许多示例 action 中的事务不是在 Ruby 里完成的,而是将他们交付给适当的工具。作为一个粘合语言,Ruby 很棒,类如图片处理、PDF 转换、视频编码等都可以轻松地交给 GraphicsMagick、Tesseract 和 FFmpeg 等工具去处理。

**** 查看英文原文: CloudCrowd - A 100% Ruby Cloud Solution

2009 年 9 月 22 日 00:031883

评论

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

2021-12-15【Codeforces Round #760 (Div

爱好编程进阶

Java 程序员 后端开发

使用 Amazon Cloud WAN 构建您的全球网络

云物互联

云计算 AWS Cloud WAN

Druid连接池源码阅读04

石小天

Docker下的OpenResty三部曲之三:OpenResty加Tomcat的服务

程序员欣宸

Kubernetes openresty 5月月更

看 AWS 如何通过 Nitro System 构建竞争优势

云物互联

云计算 AWS DPU 硬件虚拟化技术

一份让面试官满意的简历究竟要做到什么

宇宙之一粟

简历模板 简历 5月月更

druid 源码阅读 4——走一个单测看sql运行

张大彪

FLV封装格式

Loken

音视频 5月月更

【刷题第八天】11. 盛最多水的容器

白日梦

5月月更

Flask项目实战优化之【包头市活动网站开发】

上进小菜猪

5月月更 falsk

[数据分析实践]-音频分析-BirdCLE-2

浩波的笔记

人工智能 机器学习 数据分析

学生管理系统(2)

5月月更

如何备份 WordPress 数据库

海拥(haiyong.site)

WordPress 5月月更

反向代理 413 Request Entity Too Large 问题

HoneyMoose

为什么花大本钱培训后,研发团队的表现还是很差?

高山

培训 CMMI 培训效果

【LeetCode】一次编辑Java题解

HQ数字卡

LeetCode 5月月更

Cocos Creator学习の有限状态机

空城机

Cocos 5月月更

设计模式之原型模式

乌龟哥哥

5月月更

在Flutter中使用WillPopScope

坚果

5月月更

【C 语言】指针 Two 之[定义指针变量、有效声明指针、使用指针、指针变量初始化]

泽En

5月月更

前缀和算法

秋名山码民

算法 5月月更

数据库连接池 -Druid 源码学习(四)

wjchenge

Druid 数据库连接池

网站开发进阶(六十三)详解CSS3中的calc()

No Silver Bullet

css3 5月月更 calc()

“一键上链”技术大牛教你快速构建链上应用

“一键上链”技术大牛教你快速构建链上应用

CloudCrowd——一个100%的Ruby云方案_Ruby_Sebastien Auvray_InfoQ精选文章