亚马逊云科技核心服务之计算服务(Part1:Amazon EC2 星巴克为什么横向排队)
(星爸爸网络上的一张图)
注意上图中的 5 个人,对没错这 5 个人。一般情况星巴克的人员配置大概是这样的:
1 个经理,在办公室
两个收银,在收银台(本文关注的重点)
三个人做咖啡
当你去过星巴克买咖啡时,你有没有发现或者注意过星巴克收银台有两个,并且不同于肯德基的纵向排队,为什么星巴克是横向排队?
其实星巴克内不仅与云计算有关,他们的流程更与云原生的 DevOps 有莫大关系,本文重点讲解与云计算 ECS 相关这块。
Amazon EC2 概要
什么是 Amazon EC2
Amazon EC2 缩写于:Amazon Elastic Compute Cloud,其中文翻译为 xXxX(不知道怎么翻译,反正最好别翻译中文,起码我认识的人只叫 EC2),简单点说 EC2 就是亚马逊云科技中的一台虚拟机,这个名词在亚马逊云科技中你会反复听到,也是必须要知道的知识点。
对于这个概念必须要知道两点:1. 它是一个虚拟机,2. 计算是弹性的
面试或者考试可能会考的地方(敲黑板):EC2 是什么级别的服务(Iaas,PaaS,SaaS)?
Amazon EC2 是 IaaS 服务级别。不知道怎么区分的或者看完了 Iaas,PaaS,SaaS 区分的还是懵逼的,那么就死记硬背下来,如果想理解记忆,那么看完下面小节就明白了
为什么要用云主机 EC2,与传统主机比有和优点
传统的物理主机
当我们创建自己的物理服务器的时候,首先需要的就是要调研,比如需要购买的服务器类型,数量,之后交给公司采购,提交采购单,之后下单购买…等待 1~1000 年漫长岁月,之后硬件供应商才会把这些硬件交付给你,这个过程最坑逼的是,这些硬件设施并不一定会同时到达。接下来就是你需要将这些主机搬家到自己的数据中心,或者租用的数据中心里,进行安装,调试他们,最后将他们连接起来,之后一堆的杂七杂八的事情,比如接入通电,做一些 check 等等。
这里面举一个博主遇到的大栗子:之前在政府公司,采购了一批机器,机器自带的系统是 Ubuntu,之后要换成 Windows server,所有东西弄好之后,发现机器一直连接不上网络,各种 360 度的排查之后,发现接入的网络是千兆网络,但是做的驱动并不支持千兆网络,后来换了驱动后,顺利介入网络,这个之间排查和 Fix 的过程是需要一定时间的。
做完了前面所说的各种前期准备后,你才真正的开始部署你的应用程序。但是这里需要注意的是,你采购回来的这批主机,已经固定,也就是他们的计算能力当你在下单的时候就已经被决定了,所以你放在上面的应用程序的计算能力,必定被这些物理机器的计算能力所限制。这也就是为什么后面会引入 EC2,因为 EC2 完全不需要担心此类问题。
将应用程序部署在物理服务器上线前准备:
与传统主机比 EC2 的优点
相比传统主机, EC2 可以随时创建和终止不同类型的服务器,相比传统服务器的运维部分,在亚马逊云科技中,你不需要来 conrtol,这部分服务器的运维工作,完全是亚马逊云科技来负责,你可以认为从购买主机到接入网络调试部分,亚马逊云科技已经全部完成,你所需要做的就是创建 EC2,之后启动 EC2 使用即可,当然如果有一天你不想用 EC2 了,那么你也可以随时的直接删除掉 EC2 实例。
概括总结 EC2 的特点:
非常灵活
上面已经说了,你可以随时开关 EC2,也可以随时选择保留或者删除 EC2,其次在 EC2 实例的配置方面也是非常灵活的,比如你选择 OS 的时候,你可以选择 Linux 或者 Windows,也可以使用配置模板,创建成百上千个 EC2 实例,并且你还可以使用不同的操作系统和配置的组合来满足不同的业务和计算场景。
除去操作系统外,在 EC2 实例上软件运行的环境也可以灵活配置,比如数据库,第三方软件,或者自开发应用程序等,在实例的运行方面 客户这面是有完全的控制权。这里再次敲黑板,到这里你应该知道为什么 EC2 是 IaaS 服务了吧,EC2 的 OS 是你在控制,并且实例里面的东西是你来控制,外部的网络或者硬件什么的不需要你来管。这些综合即是 IaaS 解决方案。
垂直缩放实例:当你的 EC2 实例计算能力不满足当前需求时,你可以选择随时的增加或者减少你的服务计算资源(CUP、内存等)
EC2 具有 Auto Scaling 的特点,可以根据使用者定义的条件自动增加或者减少 EC2 的容量、实例数量等,比如在使用高峰期动态增长保持性能,又可以在低峰期主动缩减,达到降低成本的目的。
经济高效且快速
减少了前期采购准备与后期运维等工作,付费只支付正在使用的 EC2 实例,已经停止或者已经终止(删除)的实例付费(敲黑板中…)
EC2 是按照使用的秒数以及执行的个体类型计费。
拓展知识
Amazon EC2 是由虚拟化技术实现的,实际这些虚拟机最终还是托管在物理服务器上,当启动某个 EC2 的实例时,你不会占用服务器的整个主机,事实是你的 EC2 实例 可能和其他人的 EC2 实例共用一个物理服务器,这也就是常说的虚拟化技术。
多租户模式:在虚拟机之间共享底层硬件的概念被称为多租户模式(multi-tenancy)。这些管理、维护和协调资源的工作也都是由亚马逊云科技来负责。
亚马逊云科技的多租户模式是否安全?
答案是安全的,虽然是多租户共用一个服务器,但是本身每一个 EC2 彼此之间是隔离的,相互之间并不知道彼此所在主机上正在运行其他的 EC2 实例。
Amazon EC2 实例的类型
之所 EC2 有不同的类型,其原因是他们的分工和处理业务场景不相同,就好比我们做一个项目或者产品,需要 PM、BA、前段、后端、DBA 等不同的分工,他们擅长的领域也不同,同样 Amazon EC2 提供多种经过优化,适用于不同使用案例的实例类型以供选择。
实例类型包括各种 CPU、内存、存储和网络容量,使您可以灵活地为应用程序选择适当的资源搭配。每种实例类型都包含一个或多个实例大小,允许您根据目标工作负载的要求扩展资源(官方描述)。
Amazon EC2 实例类型都归属于一个实例系列,这些实例类型对 CPU、内存、存储和网络容量进行了不同组合,可以灵活地为应用程序选择适当的资源组合。
现时点内( 更新时间 2023 年 2 月 1 日 01:33:16 ),亚马逊 EC2 有如下几种类型:
Amazon EC2 计费定价
Amazon EC2 云服务器有五种付费方式:按需实例、Savings Plans、预留实例、Spot 实例,以及专用主机。专用主机可在专供您使用的物理服务器上提供 EC2 实例容量。下面会进行讲解这 5 中付费方式。
亚马逊云科技没有带宽的费用,但是有实例流量费。
按需定价(On-Demand)
无需签订合同,按需计费,适合入门,可以用测试工作负载和进行各种尝试时使用。
按需型实例推荐用途:
希望拥有低成本和 Amazon EC2 提供的灵活性,且不想支付预付款或签订长期合同的用户
具有短期、难应付或无法预测且不能中断的工作负载的应用程序
首次在 Amazon EC2 上开发或测试的应用程序
Savings Plans
提供很低的定价,但是需要使用者承诺在 1 年或者 3 年 的期限内保持稳定的使用量(xx 美元/小时为单位衡量)。此类定价模式 最高可节省 72%的使用费用。
Savings Plan 的定价模式,也适用于无服务器服务:Amazon Fargate 和 Amazon Lambda。
预留实例(Reserved Instances)
此模式计价适用于稳定状态的工作负载或者使用量可以预测的工作负载。与按需定价相比,预留实例可以节省最高 75%的费用。
这个折扣有个限制,就是必须承诺 1 年或者 3 年 的试用期后,才可以享受折扣。
3.1 预付全部费用
预付全部费用是指在承诺时候全额支付所有的费用。
3.2 预付部分费用
预付部分费用是指在承诺时候支付部分费用。
3.3 不预付费用
不预付费用是指你一开始就不需要支付任何费用。
Spot 实例
借助这类实例 ,你可以请求获得限制的 Amazon EC2 计算容量。与按需实例的价格相比,使用 Spot 实例最高可以达到 90% 的折扣。
Spot 实例推荐用途:
开始时间和结束时间灵活的应用程序
只能承受极低的计算价格的应用程序
具有紧急计算需要,需要获取大量附加容量的用户
需要注意如下两个特点:
对于可能需要大容量的紧急计算需求非常有用。
如果一个 Spot 实例被 Amazon EC2 终止,你将不会被收取特定使用时间的费用,但如果它被你自己终止,那么将依据实例运行时间按小时计费。
注意:亚马逊云科技可能随时回收该实例,只有提前两分钟向你发出告知,来提醒你完成工作并保存状态。所以如果要选择 Spot 实例,一定要确保工作负载能够支持随时中断,比如批处理工作。
专用主机(Dedicated Hosts)
专用主机是专供你用于 EC2 的物理主机。通常用于满足某些合规性要求,不会有人和你一同租用该主机。
它可以作为预订购买,相比按需价格最高可打七折。
专用主机可以每小时购买一次。
定价的整体归纳总结
Amazon EC2 动态扩展(Amazon EC2 Auto Scaling)
Amazon EC2 的其中一个主要优势是:可扩展性和弹性。你可以理解为:客户可以根据自身业务的需求,增加或者降低亚马逊云科技的使用量。
如果想要自动执行扩展流程,您会使用哪项亚马逊云科技服务?为 Amazon EC2 实例提供这一功能的亚马逊云科技服务是 Amazon EC2 Auto Scaling。
Amazon EC2 动态扩展解决了什么问题
这里先来举一个栗子
在咖啡店里,由于每天来买咖啡的人数不确定,所以很难确定应该雇几个咖啡师(初中高级等)。如果雇少了,虽然降低了成本,但是客人可能需要等很长时间才能取到咖啡,影响客户就餐体验,而且有的客户甚至有可能就此离开。最糟糕的是,如果咖啡店只有一个咖啡师,那么万一有一天这个咖啡师生病请假后,不能来上班,那咖啡店就无法营业了。另外一方面,如果雇多了,却又没有那么多人来,那么对咖啡店也不合算,会影响其收益率 ROI(Return On Investment,或投资回报率)。毕竟企业最终目的还是要盈利的。
上述的例子如果映射到企业购买服务器上,如果按最大客流量购买服务器,那一年大部分时间里这些服务器就处在闲置的状态,产生浪费。如果按照平均客流量购买服务器,那么在客流量激增的时候,又会出现无法访问的问题。
亚马逊云科技可以解决这个问题。当一个咖啡师不够用的时候,亚马逊云科技可以用程序创造出来第 2 个,第 3 个,…第 n 个咖啡师。当顾客人数减少时候,不需要那么多咖啡师的时候,亚马逊云科技可以关掉一些“咖啡师”。这就是 Amazon EC2 的扩展功能。当然,亚马逊云科技可以自动完成这个过程,也就是亚马逊 EC2 自动扩展功能(Amazon EC2 Auto Scaling)。
这个功能可以帮助客户自动增减实例,维持应用程序的可靠性。亚马逊 EC2 自动扩展功能有两种模式:动态扩展和预测扩展。前者根据需求增减实例。后者根据预测值决定实例的个数。
当客户在 EC2 上启动一个应用程序的时候,可以配置自动扩展组。一般来说,客户可以将 EC2 实例的最小数量设为一个。也就是说,任何客户都至少有一个 EC2 的实例。客户可以将所需容量设为两个 EC2 实例。客户还可以设置最大容量,比方说四个 EC2 实例。用 KFO 餐厅的例子来解释,就是说至少有一个服务员,正常情况有两个服务员,最多四个服务员。这些服务员都是随叫随到,而且不需要的时候就会自动消失。
Amazon EC2 的扩展方法
Amazon EC2 的扩展方法有两种方式:
垂直(纵向)扩展
水平(横向)扩展
水平扩展和垂直扩展有什么区别?(敲黑板,无论是面试还是考试)
垂直扩展意味着将 CPU、RAM 等计算能力扩展到现有机器,而水平扩展意味着向服务器或数据库添加更多机器。即增加节点的数量,并将任务分布在不同的节点之间。
参考资料
为什么星巴克横向排队(直达电梯,不需要阅读本文)
一般星巴克都有两个收银,人少的时候一个收银,人多的时候就两个,横向排队,不需要分队,节省了店铺内的空间,而且扩展了收银,提高了效率,也就是类似 EC2 的弹性扩展,反之也可以减少。非常秀。
后续也会根据星巴克讲解云原生 CICD 在星巴克里如何体现的。
阅读原文:https://dev.amazoncloud.cn/column/article/63e084a86b109935d3b77242
评论