第4章:计算服务深度解析与选型
在云上,你没有物理服务器,但拥有比物理服务器更丰富、更灵活的计算形态。从传统的虚拟主机到容器编排,再到无需服务器的函数计算,阿里云提供了全谱系的计算服务。本章将深入解析这些服务,并帮助你做出最符合业务场景的技术选型。
4.1 弹性计算服务(ECS):实例规格族选择指南
弹性计算服务(Elastic Compute Service, ECS)是阿里云最基础也是最重要的计算服务,提供了可伸缩的虚拟化计算能力。
核心优势:
- 弹性:分钟级创建上百台实例,按需扩缩容。
- 可控性:拥有OS级权限,可进行任意定制。
- 多样性:提供丰富的实例规格(vCPU和内存配比)以满足不同场景。
实例规格族选择指南(核心决策点):
选择ECS实例,不仅仅是选择CPU和内存大小,更要根据工作负载特性选择正确的规格族。
规格族类别 | 代表规格族 | 特点与应用场景 |
---|---|---|
通用型 (g) | g8i /g7 |
CPU与内存资源平衡。适用于中小型Web应用、开发测试环境、轻量级数据库等大多数通用场景。 |
计算型 © | c8i /c7 |
计算性能强劲,vCPU与内存配比较高(如4:8)。适用于科学计算、视频编码、游戏服务端、高性能前端等计算密集型应用。 |
内存型 ® | r8i /r7 |
内存容量大,vCPU与内存配比较低(如4:32)。适用于内存数据库(如Redis)、大数据分析(Hadoop/Spark)、企业级应用等内存密集型应用。 |
大数据型 (d) | d3s |
配备本地SATA HDD或NVMe SSD大容量磁盘,提供高磁盘吞吐能力。适用于Hadoop分布式计算、日志处理、数据仓库等大数据场景。 |
本地SSD型 (i) | i4 /i3 |
配备本地NVMe SSD,提供极高的存储I/O性能(数十万IOPS)和低延迟。适用于NoSQL数据库(Cassandra)、OLTP核心数据库、Elasticsearch等对I/O要求极高的场景。注意:本地盘数据有丢失风险,需在架构上实现数据冗余。 |
共享型 (x) | xn4 /e |
底层CPU资源可能被超额分配,性能可能受邻实例影响,但成本极低。仅适用于非生产环境、轻量级测试、低负载应用。 |
生产环境应优先选择企业级实例规格族(如以g7
, c8i
等为代表),它们提供稳定的性能输出。选择过程是一个权衡:在性能、成本、数据持久性(是否本地盘) 之间找到最佳平衡。
4.2 云原生容器服务:ACK (Kubernetes) 入门与核心概念
容器技术(Docker)实现了应用及其依赖环境的标准化打包和隔离。而Kubernetes (K8s) 则是容器编排领域的事实标准,用于自动化部署、扩缩和管理容器化应用。
阿里云容器服务Kubernetes版(ACK)提供了全托管的K8s集群,让你无需管理Master节点,专注于应用本身。
核心概念:
- 集群(Cluster):一组节点(服务器)的集合,是K8s管理的基础设施。
- 节点(Node):可以是ECS实例,是Pod运行的地方。
- Pod:K8s管理和调度的最小单位。一个Pod包含一个或多个容器(通常为一个),共享网络和存储空间。
- 部署(Deployment):定义Pod的期望状态(运行几个副本、使用什么镜像),K8s会确保实际状态始终匹配期望状态。是实现无状态应用部署和管理的核心对象。
- 服务(Service):定义一组Pod的访问方式。为Pod提供一个稳定的IP地址和DNS名称,并实现负载均衡。是服务发现的核心。
- Ingress:管理集群外部访问内部服务的流量路由规则(通常基于HTTP/HTTPS域名和路径),是集群的“入口网关”。
ACK的价值:
- 应用标准化:一次构建,随处运行。
- 极致弹性:支持根据CPU/内存使用率等指标进行秒级扩缩容(HPA)。
- 简化运维:提供了强大的应用部署、回滚、监控、日志能力。
- 混合云支持:可以轻松接入本地或其他云上的节点,实现统一管理。
4.3 无服务器计算:函数计算(FC)的应用场景与实战
函数计算(Function Compute, FC)是事件驱动的全托管计算服务。你只需编写并上传代码,FC会为你准备好计算资源,以弹性、可靠的方式运行任务。
核心特性:
- 无需管理服务器:彻底告别服务器运维(OS、Runtime、扩缩容)。
- 事件驱动:由各种事件触发执行,如OSS文件上传、API网关请求、消息队列消息等。
- 极致弹性:从零到峰值瞬间扩容,真正按实际执行时间和资源消耗付费(计费粒度达100毫秒),空闲时不产生任何费用。
- 高可用:默认跨可用区部署,提供高可用性。
典型应用场景:
- 数据ETL处理:OSS上的文件上传后,自动触发函数进行数据处理、格式转换、生成缩略图。
- Web后端:通过API网关触发,构建RESTful API,尤其适合访问模式波动大的场景。
- 实时消息处理:处理消息队列(MNS/RocketMQ)中的消息,进行流处理。
- 定时任务:代替传统的Cron Job,执行定时脚本。
4.4 选择困难症?ECS vs ACK vs FC:从虚拟机到云原生的演进之路
这三种服务代表了不同的抽象层次和运维责任划分。下图清晰地展示了从ECS到FC,你需要管理的底层设施越来越少,而弹性能力和运维效率越来越高。
quadrantChart
title "阿里云计算服务演进与责任划分"
x-axis "低运维效率/弱弹性" --> "高运维效率/强弹性"
y-axis "基础设施层" --> "应用逻辑层"
"ECS": [0.2, 0.85]
"ACK": [0.5, 0.5]
"FC": [0.85, 0.15]
选择哪项服务,取决于你的业务场景和技术要求:
维度 | ECS | ACK (Kubernetes) | FC (Serverless) |
---|---|---|---|
控制粒度 | 最高,OS级完全控制 | 高,容器环境控制 | 最低,仅代码逻辑 |
运维复杂度 | 最高,需管理OS、中间件、运行时、集群 | 中,需管理容器镜像和编排配置 | 最低,无需管理服务器和运行时 |
弹性速度 | 分钟级 | 分钟级到秒级 | 秒级甚至毫秒级 |
成本模型 | 按实例运行时长付费(即使空闲) | 按节点资源占用付费 | 按函数执行次数和时长付费(空闲成本为0) |
适用场景 | 需深度定制OS、传统单体应用、状态ful有状态应用 | 微服务架构、CI/CD、混合云管理、追求容器标准化 | 事件驱动、波动剧烈、突发流量、简单API后端 |
决策流程建议:
- 默认首选FC:如果你的应用场景是事件驱动、无状态、调用不连续的,毫不犹豫地选择FC,以最大化降低运维成本和资源成本。
- 复杂应用选ACK:如果你是微服务架构,需要服务发现、灰度发布、复杂的部署策略,或者追求应用的标准化和可移植性,ACK是最佳选择。
- 特殊需求选ECS:如果你需要安装特定的硬件驱动、自定义内核、或运行无法容器化的遗留系统,ECS提供了所需的控制权。
实战演练:部署一个高可用的Web应用到ACK集群
让我们将第一章的WordPress迁移到更现代、更健壮的ACK容器平台上。
目标:在ACK集群中通过Helm Chart快速部署一个WordPress,并配置SLB使其可通过公网访问。
步骤一:创建ACK集群
- 在容器服务控制台创建ACK Pro版集群(Pro版托管Master节点,可靠性更高)。
- 网络配置:选择我们之前创建的
prod-vpc
和对应的web-vswitch-zonea
等子网。 - Worker节点:选择2台以上ECS实例作为Worker节点(如
ecs.g6e.large
),并跨可用区部署,以实现高可用。 - 点击“创建”,等待约10分钟集群创建完成。
步骤二:通过Helm部署WordPress
- 在ACK控制台,点击“应用市场” -> “Helm Chart”。
- 搜索并找到“WordPress” Chart。
- 点击“部署”,选择创建好的集群和命名空间(如
default
)。 - 参数配置:
- 设置WordPress的管理员用户名和密码。
- 在“持久化存储”部分,配置WordPress和MySQL都使用阿里云云盘(自动创建PVC和PV),确保数据持久化。
- 在“外部访问”部分,将
service.type
设置为LoadBalancer
。ACK会自动创建一个阿里云SLB实例,并为其分配一个公网IP。
- 点击“确定”部署。
步骤三:访问应用
- 部署完成后,在“服务与路由”页面找到刚创建的WordPress Service。
- 其外部端点(External Endpoint)就是SLB的公网IP地址。
- 在浏览器中输入该IP,即可看到WordPress安装界面。
架构价值:
- 高可用:WordPress Pod和MySQL Pod可以被调度到不同的Worker节点上,即使一个可用区故障,服务仍可运行。
- 易于管理:后续可以通过K8s的滚动更新功能对WordPress进行无缝升级。
- 弹性伸缩:可以配置HPA,根据CPU负载自动增加或减少WordPress的Pod数量。
至此,已经对阿里云最核心的计算服务有了深刻的理解。计算资源的选型是架构设计的核心决策之一,它没有绝对的好坏,只有最适合当前场景的选择。