从十年前的充满争议,到现在的势不可挡,云计算不再是一个虚幻名词,而是整个互联网行业的必然趋势。未来我们的代码,和我们构建的应用,将越来越多地运行在云上;它还意味着,我们的架构模式和思维方式,将更多地与云契合共生。为了帮助更多小伙伴,拥抱“云原生”,适应云环境,笔者结合在阿里云ECS团队的工作经历和见闻,为大家科普下Iaas层面的相关知识,帮助大家更好的“出圈上云”。
区域&可用区
区域(Region)
在云计算行业中,区域对应的则是云计算厂商在某个地理位置提供的所有云服务的组合,是厂商对外提供云服务的基本单位。云厂商常见的区域,一般以国家或地区命名。
e96a0f7c49173b188154929bfbaa9499所以区域的设立和分布,相当程度地体现了云厂商的业务重点和地区倾向。一般都是“前店后厂”模式,即主要中心城市+偏远地区的组合:
- 在人口稠密的中心城市,离用户和商业更近,以提供较快的接入体验,即面向商机;
- 相对偏远的地区,当地往往能够提供良好的气候条件、充足的建设空间,以及较低的电力、带宽等运营维护成本,即面向成本。
阿里云的北京+张北/呼和浩特、AWS 的中国的北京+宁夏都是这样的模式。
多区域架构
为了把多个区域的资源和能力结合起来进行构建,主流云厂商在跨区域方面进行了大量建设和投资:
- 物理上,各区域之间建设有网络互联专线,一般称为骨干网(Backbone)。骨干网的存在使得同一个云在不同区域间的通信,能够有较高的带宽和较低的延时。
- 软件层面,允许位于不同区域的虚拟网络跨区域进行互联,使得多区域的私有内网能够借助自有骨干网无缝高速打通。
- DNS 解析层面,通常会提供就近解析和智能路由能力,将分布广泛的 C 端流量引流到最近的数据中心,以获得最快的响应速度。
借助云的力量,小厂也能轻松拥有巨头的分布式部署能力。根据实际情况各司其职,让不同区域担任不同的角色,联动起来达到业务目的
不要轻率、随意地拓展区域。 每一个区域的增加,都会相应增加应用架构的复杂性和流量费用,也给我们的维护工作带来负担,技术门槛较高。如果自身运维经验和技术积淀不够的,这些额外的成本可能会抵消多区域架构带来的好处。
可用区
“可用区”(Availability Zone)是区域的下级概念,是指一个具备完整而独立的电力供应、冷却系统、网络设施的数据中心(IDC)环境,也就是我们说的一个独立的机房。
- 一个地区由多个可用区组成(一般都是至少两个可用区),同一地区的不同可用区一般相距不会超过80-100公里,避免举例过远而带来的网路延迟。
- 多可用区的的存在可以满足区域本身有扩展的需求,可用区的数量也可以成为一个衡量区域规模的重要指标.
- 多可用区可以实现双机房备灾;
从架构上理解地区和可用区
如果从云服务的实现架构上,其实地区和可用区的定义会更加清晰。就像我们在实现集群化部署的时候,通过一个中心式的服务把不同物理机资源组合在一起工作一样。云计算也是依赖于中心式的管理服务,把几十万台物理机编排在一起工作的。只不过从云服务器角度来说,最小可靠的物理环境是IDC机房,必须保证有多个可用区同时提供服务,才能应对断电断网等不可抗拒因素。一个独立IDC机房内的资源就被成为一个可用区,在同一个中心管控系统下的可用区被成为一个地区(region)。不同地区的管控系统,是独立部署的,数据上也是完全独立,这也就解释了为什么用户在阿里云上申请的购买qouta等限制都是分地区的。
8050028A-54C3-49AF-A4E5-DCF7D723F6C8如何选择地区和可用区
当我们作为用户时,应该如何选择合适的区域和可用区呢,一般考虑如下几个因素:
- 地理位置本身:与业务相关地点越近越好,尤其是混合云的情况下,一般以同城或短距离接入为主;
- 服务差异:同一个云在不同的区域,所能提供的服务和规模可能是不同的,百尤其是一些新开服的地区,可能并不是所有云上服务都是齐备的,要结合业务需求来选择合适地区;
- 价格因素,不同地区和服务价格是由明显差异的,尤其是偏远和新开服地区,为了来客户,往往价格上会有折扣;
- 库存容量,不同地区的不同可用区的库存容量是不同,要考虑到未来扩容的可能性,如果选了可用区建设较早,可能剩余扩容的空间不多,建议选择较新的可用区(编号越大,建设时间越晚);
- 如果服务集群超过10台以上,建议考虑双机房(可用区)备灾。
总结就是尽可能把最主要的业务选择云服务厂商举例最近的主要销售地区(比如北京、上海)等地区,并选择较新的可用区和考虑多可用区部署方案。
云服务ECS
传统的物理服务器上通过安装虚拟化软件,就可以虚拟出多个互相隔离的虚拟机,来帮助我们提高资源的使用效率。云计算中的虚拟机,本质上也是如此,也是底层将计算、存储、网络能力的抽象和开放。
云虚拟机的体系结构,用一句话来概括一下,在网络的加持下就是全面解耦的计算存储分离的设计思想。
从可伸缩性的角度来说,传统虚拟机存在较大的局限,当物理机的局部出现故障时,也很容易影响到里面的虚拟机。
785d6518852a25283a5337646a19a1f9云虚拟机,与其说是由一台宿主机虚拟而成的,不如说是云数据中心中的不同部分一起协作,“拼凑”而成的一台机器。这样虚拟出来的机器,我们在使用感受上其实与传统服务器并无不同,但在可扩展性和故障隔离方面,它就具有很大的优势了。
规格族&实例规格
d60b7200a6614f19a2461f410ecc14c4同样是1核的CPU,实际上新能上有很大的差别
-
云虚拟机的配置规格主要取决于产品、类型、代别、实例大小4个最重要的维度。
- 产品,一般分为”入门级“和”企业级“(之前也被成为共享和独享型),其区别在于
- ”入门级“产品是存在资源超卖的情况,也就是一个物理机的CPU可能有88核,云厂商可能虚拟出200个vCPU来售卖,不过价格更便宜,适合于个人和小型网站使用;
- ”企业级‘是严格不超卖的,且一个vCPU和物理机的一个超线程(HT)严格对应,保证VM之间不会有性能争抢,有更好的隔离性更为稳定,适合于大型网站和服务。
- 类型,vCPU 数和内存大小(按 GB 计算)的比例:
- 通用均衡型:1:4,万能经典的搭配,“遇事不决一比四”;
- 计算密集型:1:2,科学计算、视频编码、代码编译等计算密集型负载;
- 内存优化型: 1:8,数据库、缓存服务、大数据分析等应用场景
- 代别
- 云上虚拟机的单核性能未必相同,云虚拟机的换代更新并不仅仅只在 CPU 等硬件配置层面,很多时候也伴随着底层软硬件架构的更新和提升,尤其是虚拟化技术的改进。
- 买新不买旧;
- 实例大小:标准 large 对应的是 2vCPU 的配备,xlarge 则代表 4 个 vCPU,而更高的配置一般用 nxlarge 来表达,其中 n 与 xlarge 代表的 4vCPU 是乘法关系。比如,8xlarge 就说明这是一台 8*4=32vCPU 的机器
- 产品,一般分为”入门级“和”企业级“(之前也被成为共享和独享型),其区别在于
-
云虚拟机的型号名称一般由类型、代别、实例大小这几项的缩写组合而成,有时还会带有补充后缀。了解了某个云的型号格式后,通过拆分对应,你很容易理解具体型号的含义。
57a38f221932fcb85b9bef9d4e009da5 d0338ecfd965ff5e1a45e6f6304edc49
如果省钱的上云
- 包年包月的付费方式是最常见的降低虚拟机使用成本的方法,它通过牺牲采购的灵活性来换取折扣,而且适合国情,便于报销。
- 一般使用三天以上和包周更为合适,使用7天以上,包月更为合适。
- 竞价实例的机制让云端的闲置资源对外开放,基于市场竞拍的定价方式,常常能够让我们获得很大的折扣。这种方法主要是通过牺牲稳定性,来换取成本上的节约。
- 说白了,云厂商是把那些暂时空在那里的资源拿出来临时卖一下。为什么是”临时“?因为只有库存充裕时才卖竞价实例,库存紧张时就要收回去。但是回收实例也是有讲究的,不是随便回收的,比如要保证至少运行1小时,要提前5分钟通知,如此等等。那为什么要竞价?在资源紧张的地区多卖点钱?其实更重要的是跟库存的联动,是一种价格杠杆,让客户主动去选择价格便宜库存充足的地区和规格。这其实就是调度客户,背后的道道其实真不少。
- 突发性能实例是一种特殊的使用 CPU 积分制的机型,相对标准机型成本较低,适合工作负载存在较大波动的场景。它主要牺牲的是性能。
- 云厂商把一个超线程(HT)掰成小片片拿出来卖,而且还能保障SLA。计算力在空闲时积攒人品(Credit),在需要突发计算力时来消费人品(Credit),适合平时可能需求不大,但是会有突然流量的情况。
- 基于 ARM 的虚拟机实例已陆续走向市场,随着生态的不断成熟,也将成为低成本机型中非常具有竞争力的选择。这种方法主要在生态和兼容性方面存在一些限制。
网友评论