7号彩票

service phone

揭开Amazon EC2容器服务背后的技术细节

浏览次数:    时间:2019-05-11

本文简要介绍了Amazon ECS服务的两个核心:集群管理和容器调度,并介绍了ECS如何为并发操作实现键值对存储,为我们实现相关服务提供了参考。

在最近关于Amazon EC2容器服务(Amazon ECS)的文章中。我讨论了在集群中运行现代分布式应用程序的两个关键组件:可靠的状态管理和灵活的调度。 Amazon ECS简化了构建和运行容器化应用程序的过程,但如何实现它真正使Amazon ECS真正有趣。今天,我想探索Amazon ECS架构并解释这个架构可以做些什么。以下是Amazon ECS的基本组件图:

1

我们来谈谈Amazon ECS的作用。 Amazon ECS的核心是Cluster Manager,它是一种处理集群协调和状态管理任务的后端服务。集群管理器上方是不同的调度程序。集群管理和容器调度彼此分离,因此Amazon支持客户使用和创建自己的调度程序。集群实际上是应用程序可以使用的计算资源池。此处的资源池是Amazon EC2实例的CPU,内存和网络资源除以容器。 Amazon ECS通过在群集中的每个EC2实例上运行容器代理来协调群集。该代理允许Amazon ECS与群集中的EC2实例通信,并根据用户或调度程序请求启动,终止和监视容器。代理是用Go编写的,占用空间小。它目前基于Apache协议在GitHub上开源。欢迎大家提供意见和反馈。

为了协调集群,我们需要集群上的SSOT [单一数据源]:集群中的EC2实例,EC2实例上运行的任务,组成任务的容器,可用/占用资源(例如,网络端口) ,内存,CPU等)。在我们获得准确的群集状态信息之前,无法成功打开和终止容器。要解决此问题,您需要将状态存储在某个位置,因此现代集群管理器的核心是键值数据库。

对于存储在那里的任何集群输入和信息,此键值数据库似乎是SSOT。为确保可靠性和可伸缩性,需要分发此键值数据库以确保持久性和可用性,并避免网络分区和硬件故障的影响。此外,由于键值数据库是分布式的,因此更难以确保数据一致性并纠正并发修改,尤其是在状态不断变化的环境中(例如,容器停止和启动)。在这方面,为了确保多状态修改不冲突,需要实现某些形式的并发控制。例如,假设两个开发人员从EC2实例请求剩余内存以供其容器使用。此时,只有一个容器可以实际获取资源,另一个容器被告知请求未完成。

为了实现并发控制,我们使用Amazon分布式系统的一个核心原语实现了Amazon ECS,这是一个基于Paxos事务日志的数据存储系统,可以记录每个数据的变化。在日志中,任何数据都以事务的形式写入,并对应于特定的ID顺序。数据的当前值是记录在日志中的事务的总和。对于任何读取的数据,获得的所有内容都是日志当前时间点的快照。如果写操作是自上次读操作完成以来最近提交的事务,则确定写操作成功。此原语允许Amazon ECS以乐观锁的形式存储集群的状态信息。对于共享数据频繁更改的情况(例如,当需要表达ECS等共享计算资源池的状态时),这是一种理想的方法。此体系结构使Amazon ECS具有高可用性,低延迟和高吞吐量,因为数据存储不使用悲观锁。 (译者注:作者自己的表达方式含糊不清,请参阅Multiversion Concurrency Control MVCC)。


Copyright @ 2002-2017  7号彩票_7号彩票代理_7号彩票平台-注册登录  版权所有