ECS & Lambda & Batch & Lightsail

161 阅读3分钟

Docker

软件开发平台,APP被打包到Containers的容器之中,可以跑在任意OS上。

  • 几秒内快速的扩缩容易。
  • 将app打包在Docker容器中,EC2实例上运行app会更简单。
  • Docker镜像被存储在Repositories 中。
  • 可以在Docker Hub上找到各个系统支持的镜像。
  • AWS ECR存放自己私有的镜像。 下图是传统app架构,右边是Docker app架构。 image.png

Docker的app使用更加简单,而且不占用资源。ECS 就是启动Docker实现的功能。

ECS

ECS -> Elastic Container Service

ECS 注意点

  • 使用前要自己提供和维护infrastructure(EC2实例)
  • AWS自动启动和停止Containers
  • 集成了ALB(Application Load Balancer)

架构如下图所示: 提前创建好EC2实例, 每个实例里面有着Container,当创建了新的Conrainer时,ECS会自动帮我们放到正确的实例中。

考点::如果要在AWS中使用Docker请使用ECS。

image.png

Fargate

应用场景:

  • 在AWS上启动Docker Containers
  • 不需要提前创建任何基础架构infrastructure
  • Serviceless
  • AWS 根据每个Conainers 需要的CPU和RAM规格来运行

image.png

ECR

ECR -> Elastic Container Registry

因为AWS上需要存储Docker镜像,这样ECS和Fragate服务才能使用这个镜像进行运行,所以需要注册表。 ECR 就是AWS上的一个私有镜像注册表。

image.png

Serverless 无服务

  • 不需要管理服务器就可以实现服务,只需要部署代码和功能就行而不需要管理服务器。
  • 无服务不是没有服务器,背后还是会有服务器来处理功能,但是作为使用者我们不需要管理服务器。

AWS无服务功能

  • S3
  • DynamoDB
  • Fragate
  • Lambda

Lambda

Lambda是无服务一种,执行虚拟方法,而不需要服务器来管理,适用于较短的执行时间,需要使用时才会运行。 特点

  • 根据请求和使用时间进行付费。很长的免费使用时间。
  • 时间驱动,只有触发事件时才会执行。
  • 每个函数可以获得10Gb的RAM。
  • 通过CloudWatch进行监控。

考点:Lambda最多运行15分钟

支持的语言

  • Node.js
  • Python
  • Java 8之后
  • C#(.Net Core)
  • Golang
  • C#/Powershell
  • Ruby
  • Custom Runtime API

Lambda Contain Image

允许你在Lambda上运行实例的Docker容器,但是这些容器映像必须实现Lambda运行时API。

但是ECS和Fargate是运行Docker容器的首选项。

使用用例:

1.无服务器的缩略图处理 image.png

用户上传图片到S3,通过Lambda进行数据的处理->将图片缩略图存放到S3,将数据信息存放到DynamoDB。

2.CRON Job

每周或每天有计划的执行某个脚本,

image.png

定价

  • 前100w次请求是免费的
  • 之后每一百万次请求收取0.2$
  • 前40wGbRAM 秒的运算时间是免费的
  • 之后每60万GB 秒收取 $1

API Gatway

image.png

应用场景:将API公有出去,使得用户可以通过互联网访问。 如图:用户的请求API到API网关,API网关将请求到Lambda,Lambda进行函数的调用。

注意点

  • 完全是无服务的
  • 支持RESTful APIs和WebSocket API
  • 有一定的安全性,支持身份验证,API throttling, API keys, monitoring……

Batch

完全托管的批处理服务。可以非常轻松的在AWS上运行十万个批处理作业。

批处理作业:有开始和结束的作业,区别于持续性的作业。

需要将批处理作业提交到队列之中,然后会自动处理批处理作业。

推荐使用EC2实例或者Spot实例进行处理。

和Lambda的区别:

LambdaBatch
无服务依赖于EC2实例
最多运行15分钟没有时间限制
内存存在限制依赖于EC2的存储

Lightsail

相对独立的服务,和AWS没有一个很好的集成。

借助Lightsail 可以获取虚拟服务器,存储,数据库,网络。 使用简单,适用于没有经验的人去使用。

应用场景:

  • 部署简单的网络应用或者网站

高可用性,但是无法自动扩展。