【AWS - 核心服务,必知必会】
前言
AWS作为国际市场上最强的公有云服务之一,其提供的能力和涵盖的功能 不容小视,更是很多公司业务出海,首选的一艘有力战舰。
今天让我们来看下其核心服务有哪些,典型的服务应用架构,使用AWS去构建,落地实践,是什么样的。
区域节点
开篇先介绍下AWS在世界上的服务区域分布,
1,截止24年初,AWS 包含 北美洲,南美洲,欧洲,中东,非洲,亚太地区 6大区域,几十个服务可用区。(国内有北京和宁夏2个服务可用区,海外北美,欧洲有更多服务可用区)
2, 开通服务前,想知道什么服务在什么区域 是否可用,怎么看?
有个便捷工具, 可以查看aws对于每个区域的支持情况 https://www.aws-services.info/me-central-1.html
OK 前言到此,下面进入正题,
服务4大类
1 计算和分析
服务名称 | 服务介绍 | 使用场景 |
---|---|---|
EC2 | 提供可调整大小的计算容量,允许在云中运行虚拟服务器实例,虚拟机实例 | 托管 Web 应用程序、扩展计算资源、运行容器化应用程序等。 |
Auto Scaling | 自动根据负载需求增加或减少 EC2 实例数量。 | 自动调整应用程序的容量以满足流量变化,实现弹性扩展和收缩。 |
Lambda | serverless无服务器计算服务,允许在无需管理服务器的情况下运行代码。 | 处理后端任务、事件驱动的计算、构建微服务等。 |
ELB | 提供自动负载均衡,将流量分配到多个 EC2 实例上。 | 提高应用程序的可用性和可扩展性,确保流量能够均匀地分布到各个实例上。 |
ECS | 容器化服务,允许在云中轻松运行、停止和管理 Docker 容器。 | 部署和管理容器化应用程序,实现弹性和灵活性。 |
EMR | 管理大数据应用程序的服务,简化在云中运行大规模数据处理框架的流程。 | 处理大数据工作负载,包括批处理、实时流处理、机器学习等。 |
Kinesis | 实时数据处理服务,用于收集、处理和分析大量实时数据流。 | 处理和分析实时数据流,如日志收集、实时分析、事件驱动应用程序等。 |
Athena | 交互式查询服务,可通过标准 SQL 查询 S3 中的数据,无需预先加载或转换数据。 | 针对 S3 存储的数据进行交互式查询和分析,无需管理基础设施。 |
QuickSight | 可视化分析服务,用于创建、查看和共享数据驱动的仪表板和报告。 | 通过简单的拖放操作创建数据仪表板,实现数据可视化和分析。 |
Glue | 管理和自动化数据集成、转换和加载(ETL)任务的服务。 | 数据湖构建、数据清洗、数据转换等大数据处理任务。 |
2 存储服务
服务名称 | 服务介绍 | 使用场景 |
---|---|---|
EBS | 提供持久性块存储,可附加到 EC2 实例上用作主要存储设备。 | 存储应用程序数据、数据库、文件系统等。 |
S3 | 提供高度可扩展的对象存储服务,用于存储和检索任意类型的数据。 | 静态网站托管、备份和归档、大数据存储、多媒体存储、数据湖等。 |
EFS | 提供高度可扩展的文件存储,可在多个 EC2 实例之间共享文件。 | 共享文件系统、容器存储、数据共享等场景。 |
RDS | 管理关系型数据库的服务,支持多种数据库引擎,如 MySQL、PostgreSQL、Oracle 等。 | 托管生产数据库、开发和测试环境、数据分析等场景。 |
DynamoDB | 完全托管的 NoSQL 数据库服务,适用于需要快速且可扩展的应用程序。 | Web 应用程序、游戏后端、实时流处理等高吞吐量和低延迟的应用程序。 |
Redshift | 全托管的数据仓库服务,用于分析大规模数据集。 | 大规模数据分析、商业智能、报表生成等。 |
ElasticCache | 托管的内存缓存服务,支持 Redis 和 Memcached 引擎,提高应用程序的性能和可伸缩性。 | 减轻后端数据库负载、缓存频繁访问的数据、提高应用程序性能等。 |
3 网络与管理
服务名称 | 服务介绍 | 使用场景 |
---|---|---|
VPC | 虚拟私有云服务,允许在 AWS 中创建一个隔离的网络环境。 | 部署多层应用程序、保护敏感数据、连接到企业数据中心等。 |
Route53 | 可扩展的域名系统(DNS)服务,用于注册和管理域名以及路由 Internet 流量到 AWS 资源。 | 托管域名、路由流量、实现高可用性和容错性的应用程序。 |
Direct Connect | 通过专用网络(专线)连接连接企业数据中心和 AWS。 | 提供私有网络连接、增强安全性和性能、减少网络延迟等。 |
CloudFront | 全球内容分发网络(CDN)服务,加速分发静态和动态内容到全球用户。 | 提高网站速度、降低延迟、减轻源服务器负载等。 |
CloudWatch | 监控和管理 AWS 资源的服务,收集和跟踪指标、监控日志和设置警报。 | 监控资源使用率、性能指标、应用程序日志、实现自动化操作等。 |
CloudTrail | 审计日志,记录 AWS 账户的 API 调用活动,用于审核和故障排除。 | 审计和合规性要求、故障排除、安全分析等场景。 |
CloudFormation | 提供资源配置模板化 | 通过模板,可以简化并复制资源的创建过程,比如创建EC2的模板,通过模板可以快速复制创建多个EC2 |
OpsWorks | OpsWorks 是一项 DevOps 服务,用于自动化配置、管理和部署应用程序。它支持 Chef 和 Puppet 自动化工具。 | 自动化部署和配置应用程序。管理基础架构和应用程序生命周期。实现持续集成和持续部署流程。 |
4 APP和部署
服务名称 | 服务介绍 | 使用场景 |
---|---|---|
API Gateway | 网关,API Gateway 是一个托管服务,用于创建、发布、维护、监控和保护面向开发者的 API。 | 创建和管理 RESTful API 和 WebSocket API。 实现 API 访问控制、请求转换和数据验证, 提供 API 的监控和日志记录。 |
SQS | SQS 是一项完全托管的消息队列服务,用于将消息传递给一个或多个组件。 | 解耦应用程序的组件。实现异步消息传递。缓冲和调节不同速度的工作负载之间的压力。 |
SNS | SNS 是一项完全托管的消息发布/订阅服务,用于跨各种分布式服务和应用程序发送通知。 | 发布和传递实时通知、警报和通知。将消息广播到多个终端节点。 通过多种传输协议发送消息,如 HTTP、SMS、电子邮件等。 |
SES | SES 是一项可靠的、可扩展的电子邮件服务,用于发送和接收电子邮件。 | 发送电子邮件通知、确认和验证消息。 构建可信的电子邮件发送流程, 管理电子邮件通讯、订阅列表等。 |
Cognito | 鉴权服务,Cognito 是一项托管的身份验证、授权和用户管理服务,用于在 Web 和移动应用程序中添加用户身份验证和用户管理功能。 | 实现用户身份验证和授权。 管理用户帐户和用户组。向应用程序添加多因素身份验证和社会登录功能。 |
CodeCommit | CodeCommit 是一个托管的 Git 存储库服务,用于安全存储和管理私有 Git 存储库。 | 存储和管理应用程序代码。 实现团队协作和版本控制。 集成 CI/CD 流程,如与 CodeBuild、CodeDeploy 和 CodePipeline 配合使用。 |
CodeBuild | CodeBuild 是一项完全托管的持续集成服务,用于编译、测试和部署代码。 | 自动化构建、测试和打包应用程序。 集成测试框架和构建工具,如 JUnit、Maven、Gradle 等。 与 CI/CD 工作流程无缝集成。 |
CodeDeploy | CodeDeploy 是一项托管的部署服务,用于自动化应用程序部署到 EC2 实例、Lambda 函数、服务器等。 | 自动化应用程序部署到各种计算资源。灰度部署和滚动回滚功能。 集成与 CI/CD 工作流程,如与 CodeBuild、CodePipeline 配合使用。 |
CodePipeline | CodePipeline 是一项托管的持续交付服务,用于自动化构建、测试和部署工作流程。 | 自动化构建、测试和部署应用程序的工作流程。集成多个构建和部署阶段,形成完整的 CI/CD 流水线。实现持续交付和持续部署。 |
典型在线应用
服务抽象
该图描述了一个标准的大型网站 fb.com 的架构部署图,
下图中左侧红框A,为 在线服务
(指ToC业务服务,实时在线为客户提供服务)。
下图中右侧红框B,为 离线数据处理
,进行用户相关数据的提取,转换,分析,展示。
A区域 在线服务
组成由以下5部分
- 流量入口
- DNS 服务: 进行域名的注册和IP的绑定。
- 负载均衡 Load Balancer:分发流量到后续机器上。
- 业务处理逻辑
-
Web Server: 协议上严格意义Web服务器只负责处理HTTP协议,逻辑上强调只发送静态页面等资源内容,不做过多的业务逻辑处理,典型的就是Nginx。
-
App Server: 协议上可以使用HTTP, WSGI,FastCGI等不同协议,逻辑上强调业务逻辑的处理,典型的java tomcat, python flask框架。
但是由于App Server也可以提供HTTP协议,所以有时和Web Server在实际使用上的区分度不大,只是概念逻辑上的区分。
-
消息队列: 服务中间件,用于数据传递。
-
- 数据存储
- 缓存:cache,内存型存储,读写快,典型 Redis。
- 结构化数据存储:结构化存储,严格的数据格式和关系,十分严谨,典型 MySQL
- 非结构化数据存储:非结构化存储,无需预定义数据格式和关系,十分灵活,典型MongoDB
- 文件存储:一般用于中大型数据存储,比如文件。
- 媒体资源加速
- 多地域同步:数据扩散存储在不同地域
- 内容分发网络:CDN 访问加速
- 消息通知
- 邮件 Email
- 手机消息通知 Mobile Push
- 短信 Message
B区域 离线数据处理
进行用户行为日志数据处理,分析等。
- 数据处理分析
- Click stream Analysis: 流式分析,这里指对记录的用户数据进行分析。
- ETL:Extract-Transform-Load,将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程,这里指代将一些如日志数据,进行抽取,转换,格式化以后做后续分析使用。
- 大数据处理:使用Spark 、Hadoop进行大批量的数据分析处理。
- Data Warehouse 数据仓库:整合不同的数据源,清洗、转换整合后的数据都放在这里。
- business intelligence (BI) : 用数据仓库、线上分析、展现分析结果。
现身吧, AWS!
服务填空
现在让我们用填空法,把上面的服务抽象 填成 对应的AWS服务。
附上大图,
填空结果
服务类型 | AWS对应服务 | 备注 |
---|---|---|
【流量入口】 | ||
DNS 服务 | Route53 | |
负载均衡 Load Balancer | ELB | |
【业务处理逻辑】 | ||
Web Server | EC2 | |
App Server | EC2 | |
消息队列 | SQS | 对标业内开源Kafka ,但是在功能和特性上有差异 |
【数据存储】 | ||
缓存型数据存储 | Elastic Cache | 对标业内开源Redis,且基本sdk接口都兼容 |
结构化数据存储 | RDS | 多种数据库引擎支持,比如MySQL |
非结构化数据存储 | DynamoDB | 对标业内开源MongoDB,但是不兼容,完全2套 |
文件存储 | S3 | |
【媒体资源加速】 | ||
多地域同步 | Lambda | 经典serverless服务 |
内容分发网络 - CDN | CloudFront | |
【消息通知】 | ||
邮件 | SES | |
手机消息通知 | SNS | |
短信 | SMS |
还没完,再补充2个重点公共服务
关于API Gateway 和 Cognito 都是重要的公共服务,一个用作网关, 一个用作鉴权,可以作为服务组件,加到上述的其它AWS服务中去使用,给服务赋能,让服务填上左膀右臂,拥有安全保障和鉴权能力。
API Gateway 网关
AWS API Gateway 对于要提供给互联网外部访问的服务,有很好的保护作用,
此外还有其它具体功能如下:
1 路由 ,2 鉴权 ,3 防火墙,4 缓存, 5 限流
在AWS使用lambda(serverless) 或者 http,都可以用API Gateway进行暴露,里面提供的防火墙,限流功能对安全有一定保障。(PS:毕竟我们很难自己实现一个防火墙 😛)
鉴权认证
Cognito: 鉴权服务,用以身份验证。提供账号密码登录 以及 OIDC- OAuth 2.0,Google , Facebook等第三方平台认证。
作为鉴权服务,其可用作AWS上的鉴权服务,如API Gateway等众多服务的鉴权,也可以作为我们自己开发业务的鉴权服务。
总之,AWS上的服务涉及到动态鉴权,账号密码,或者OIDC流程的,基本都可以用Cognito,我们自己开发的业务需要鉴权服务的也可以选择接入Cognito。
结语
通过对AWS 核心服务的掌握 ,可以更好的进行 业务场景的设计,架构的落地。
本文通过介绍重点的AWS服务,典型场景下的实践,来对AWS进行整体的阐述,希望对大家有所帮助!