Coursera如何用Docker完成批处理作业?

jopen 8年前

ECS(Amazon EC2 Container Service)服务是AWS专门为用户提供的容器服务,ECS服务又细分为了containers,tasks,container instances和clusters四种模式,其中Tasks主要面向在短时间内,或固定周期内需要大量计算资源的批处理作业。‌‌

ETL,图片格式转换, 图片调整,OCR,PDF生成,天气预报,日志分析,特征抽取,自动化测试,以及搜索引擎爬虫等都是常见的批处理作业。本文将通过Coursera的案例带你了解这种特殊的容器服务。

Coursera 是由美国斯坦福大学两名计算机科学教授创办的在线教育平台,它与全世界最顶尖的大学和机构合作,通过在线公开课的形式为所有人,提供在以往只有精英人群才能享受到的教育资源。

Coursera目前有超过1300万的注册用户,来自190个国家,课程内容从编程到写诗无所不包。为了应对如此大的用户量和课程量,Coursera的后台中有很多批处理作业,比如批量邮件发送,课堂测验批改,成绩单导出,数据核对等。

最初,Coursera使用一个PHP框架Cascade来实现,遇到了很多问题:

  • 很难运行,部署和扩展;
  • 每当一个新作业到来时,一个新的线程会被创建,每个作业所占用的内存和CPU资源也不尽相同,很难实现持续地创建;
  • 由于缺乏资源隔离,内存限制的错误,会让整个应用都宕掉

后来,基础设施工程师团队想要通过Docker容器实现微服务架构,但是在使用Mesos管理集群和容器的过程中遇到了很多问题,Mesos的启动很复杂,Coursera没有专业的人和时间去管理一个Mesos集群。

最后,Coursera开始使用ECS的服务:

  • ECS帮助Coursera非常简单地实现了微服务架构;
  • 每个作业都被创建为一个容器,交由Amazon ECS来管理这些容器;
  • Amazon ECS提供所有的集群管理和容器调度服务,容器提供必要的资源隔离。

ECS显著降低了Coursera运行批处理作业的成本,提高了IT效率:

  • 使用简单:Amazon ECS启动简单,为用户屏蔽了集群底层的细节;
  • 速度和灵活性:软件更新的部署过程,从几个小时缩短到了几分钟,目前每个团队都可以独立开发和更新自己的模块,因为应用的资源是隔离的,没有相互依赖;
  • 弹性扩容:计算资源可以快速地动态申请;
  • 运维效率:运维人员不再需要去做安装软件和维护集群的工作,Amazon ECS做了从集群管理到容器编排的所有事情。

是不是觉得以上场景很适合你?

但是ECS还没进中国肿么办?

试试灵雀云最新的批量计算服务——任务(Job)吧!

这是灵雀云为中国用户独家推出的云端功能,帮您执行一次性或重复性的短时作业,如ETL,图片格式转换, 图片调整,OCR,PDF生成,天气预报,日志分析,特征抽取,自动化测试,以及搜索引擎爬虫等。您可以设置每个任务的关键参数,例如环境变量、执行时间、执行周期和次数。 在线教程: http://docs.alauda.cn/feature/job/intro.html

在此,我们对最新的批量计算功能开放试用邀请,您只需填写 问卷 (不超过两分钟),就可以试用该新功能。我们会在反馈者中抽取10位给予新年贺礼!(活动截至2016年1月12日)

来自: http://dockone.io/article/939