【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

Amazon EC2 容器服务背后的技术

  • 2015-07-24
  • 本文字数:1796 字

    阅读完需:约 6 分钟

Amazon EC2 Container Service (ECS) 是一个高度可扩展的高性能软件容器管理服务,它支持 Docker,使用户可以轻松地在 Amazon EC2 实例集群上运行应用程序。近日,Amazon 首席技术官 Werner Vogels撰文介绍了Amazon ECS 的架构。下图是Amazon ECS 包含的基本组件:

Amazon ECS 的核心是集群管理器,这是一个处理集群协调和状态管理任务的后台服务,它的上面是不同的调度器。集群管理和容器调度相互分离,用户可以构建自己的调度器。集群是一个供用户应用程序使用的计算资源池,而所谓的资源是指由容器划分的 Amazon EC2 实例的 CPU、内存和网络资源。Amazon ECS 通过运行在每个实例上的 Amazon ECS 容器代理协调集群。该代理允许 Amazon ECS 与 EC2 实例通信,并在用户或调度器请求时启动、停止和监控容器。它是用 Go 编写的,在 GitHub 上遵循 Apache 许可协议开源。

为了协调集群,需要一个有关集群状态的唯一信息源,提供诸如集群包含的 EC2 实例、运行在实例上的任务、组成任务的容器以及可用资源或已占用的资源这样的信息。这样,才能成功地启停容器。为此,他们将状态存储在一个键 / 值存储中。在任何现代集群管理中,键 / 值存储都是一个核心。而且,为了实现持久性和高可用性,预防网络分区或硬件故障,该键 / 值存储需要采用分布式部署。但这又带来一个问题,就是数据一致性很难保证,并发修改也很难处理。这就需要有一种并发控制机制来确保多个状态修改不会冲突。

为了实现并发控制,他们在实现 Amazon ECS 时使用了 Amazon 的其中一个核心分布式系统组件:一个基于 Paxos 算法以事务日志为基础的数据存储。该组件记录了每个数据条目的每次修改。每次写入操作都会作为日志中的一个事务提交,并且有一个特定的有顺序的 ID。数据存储中的当前值是根据日志记录所做的所有事务操作的总和。它允许 Amazon ECS 采用乐观并发的方式存储集群状态信息,在一个共享数据不断变化的环境中,这是非常合适的。

有了键 / 值存储,就可以协调集群了。而为了使用户能够利用 Amazon ECS 的状态管理功能,他们通过一组 API 开放了 Amazon ECS 集群管理器。用户可以通过它们以一种结构化的方式访问存储在键 / 值存储中的所有集群的状态信息。这组 API 成为用户在 Amazon ECS 上构建自己的解决方案的基础。Vogels 举了两个例子。

一个是自创建第一天起就托管在 AWS 上的免费叫车应用 Hailo 。在过去的几年里,该应用从一个运行在单个 AWS 区域中的单体应用程序演化成为一个运行在多个区域中的基于微服务的架构。起初,每个微服务运行在一个实例集群上。但实例为静态分区,导致每个分区的资源利用率都不高。为此,他们决定基于服务优先级和其它指标在一个弹性资源池上调度容器。他们选择了Amazon ECS,因为后者通过API 完全暴露了集群状态,使他们可以使用满足特定应用需求的逻辑构建一个自定义的调度器。

另一个是教育类通讯软件 Remind 。它起初是一个运行在 Heroku 上的大型单体应用。但随着用户数的增长,他们希望具备水平扩展的能力。因此,大约在 2014 年底,其工程团队开始探索使用容器迁移到微服务架构。他们希望在 AWS 上构建一个兼容 Heroku API 的 PaaS(平台即服务)。为了管理集群和容器编排,他们首先考察了一些开源解决方案,如 CoreOS 和 Kubernetes。但考虑到团队规模较小,他们没有时间管理集群基础设施及保持集群高可用。经过简单的评估之后,他们决定在 Amazon ECS 上构建他们的 PaaS。这样,工程团队就可以专注于应用开发和部署。在 6 月份的时候,Remind 开源了他们的 PaaS 解决方案“ Empire ”。在接下来的几个月中,他们将把核心基础设施的 90% 迁移到 Empire 上。

总之,Amazon ECS 的架构提供了一种高可扩展、高可用、低延迟的容器管理服务。它允许以乐观并发的方式访问共享的集群状态信息,并通过 API 赋予用户创建自定义容器管理解决方案的能力。另外,Vogels 还提到,集群中实例的数量并不会对 Amazon ECS 的延迟产生明显的影响。

感兴趣的读者可以点击这里查看过去一年来Amazon ECS 增加的特性。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

立即免费注册 AWS 账号,获得 12 个月免费套餐:点击注册

有云计算问题?立刻联系 AWS 云计算专家:立即联系

2015-07-24 05:223061
用户头像

发布了 1008 篇内容, 共 375.0 次阅读, 收获喜欢 341 次。

关注

评论

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

Linux cd命令:切换目录

智趣匠

Tron波场链智能合约质押挖矿系统技术开发示例方案

V\TG【ch3nguang】

1024程序员节获奖名单公示~恭喜各位上榜同学

Openlab_cosmoplat

1024程序员节

WorkPlus打造安全专属的移动数字化航空母舰,助力企业全面掌控业务和生态

WorkPlus

WorkPlus平台级定制,让您完全掌控业务与生态

WorkPlus

链游开发-资深技术团队-高效安全搭建

V\TG【ch3nguang】

华为云OneAccess应用身份管理服务,认证授权双保驾,身份管理的选择关键

轶天下事

华为云发布CodeArts Link研发工具集成服务,无缝联接生态释放创新潜力

轶天下事

一次RPC请求过程

1412

c++ 开源 RPC workflow srpc

Chat Towards Data Science|如何用个人数据知识库构建 RAG 聊天机器人?

Zilliz

chatbot Zilliz zillizcloud rag

灵活、可用、高扩展,EasyMR 带来全新 Yarn 的队列管理功能及可视化配置

袋鼠云数栈

hadoop YARN CDH 资源调度 hdp

JNPF:让应用开发更简单、快捷

树上有只程序猿

开发平台 低代码平台 JNPF

鲨海狂潮,存力崛起

脑极体

存力

Java性能优化权威指南-读书笔记(一)

xfgg

Java

DAPP 钱包单币丨多币丨 LP 质押挖矿系统开发(智能合约)

V\TG【ch3nguang】

恭喜!华为云通过中国信通院《API全生命周期管理能力评估》

YG科技

华为云应用中间件系列,Redis实现(电商游戏应用)排行榜示例

YG科技

【鸿蒙生态千帆起】HDD扬帆上海,赋能广大开发者共赢未来

最新动态

redigo连接池的源码分析

胡译胡说

Go redis 源码 源码分析 连接池

HTTP 中 POST 提交数据的四种方式详解

百度搜索:蓝易云

云计算 Linux 运维 HTTP post

华为云应用中间件DCS系列 | Redis实现(视频直播)消息弹幕

YG科技

全域Serverless+AI,华为云加速大模型应用开发

轶天下事

销售易史彦泽:六个点复盘中国 SaaS 的2023

B Impact

设计一套评论系统

Kevin_913

Java 数据库设计 评论系统

智能合约流动性挖矿开发技术详情丨质押挖矿dapp是如何开发计算系统程序的?

V\TG【ch3nguang】

华为云分布式缓存服务DCS,它与开源Redis有哪些差异,快来一探究竟!

轶天下事

揭秘提升远程团队协作效率的秘密武器:这款在线白板工具不容错过!

彭宏豪95

远程办公 在线白板 办公软件 在线协同 在线协作

低代码助力软件开发

互联网工科生

软件开发 低代码

私有化部署的理想选择,WorkPlus成为企业微信、钉钉的完美替代方案

WorkPlus

Python 面向对象编程:类、对象、初始化和方法详解

小万哥

Python 程序员 软件 后端 开发

华为云应用中间件DCS系列 | Redis实现(电商网站)秒杀抢购示例

YG科技

Amazon EC2容器服务背后的技术_语言 & 开发_谢丽_InfoQ精选文章