【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 实例数量。自动调整应用程序的容量以满足流量变化,实现弹性扩展和收缩。Lambdaserverless无服务器计算服务,允许在无需管理服务器的情况下运行代码。处理后端任务、事件驱动的计算、构建微服务等。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的模板,通过模板可以快速复制创建多个EC2OpsWorksOpsWorks 是一项 DevOps 服务,用于自动化配置、管理和部署应用程序。它支持 Chef 和 Puppet 自动化工具。自动化部署和配置应用程序。管理基础架构和应用程序生命周期。实现持续集成和持续部署流程。4 APP和部署
服务名称服务介绍使用场景API Gateway网关,API Gateway 是一个托管服务,用于创建、发布、维护、监控和保护面向开发者的 API。创建和管理 RESTful API 和 WebSocket API。 实现 API 访问控制、请求转换和数据验证, 提供 API 的监控和日志记录。SQSSQS 是一项完全托管的消息队列服务,用于将消息传递给一个或多个组件。解耦应用程序的组件。实现异步消息传递。缓冲和调节不同速度的工作负载之间的压力。SNSSNS 是一项完全托管的消息发布/订阅服务,用于跨各种分布式服务和应用程序发送通知。发布和传递实时通知、警报和通知。将消息广播到多个终端节点。 通过多种传输协议发送消息,如 HTTP、SMS、电子邮件等。SESSES 是一项可靠的、可扩展的电子邮件服务,用于发送和接收电子邮件。发送电子邮件通知、确认和验证消息。 构建可信的电子邮件发送流程, 管理电子邮件通讯、订阅列表等。Cognito鉴权服务,Cognito 是一项托管的身份验证、授权和用户管理服务,用于在 Web 和移动应用程序中添加用户身份验证和用户管理功能。实现用户身份验证和授权。 管理用户帐户和用户组。向应用程序添加多因素身份验证和社会登录功能。CodeCommitCodeCommit 是一个托管的 Git 存储库服务,用于安全存储和管理私有 Git 存储库。存储和管理应用程序代码。 实现团队协作和版本控制。 集成 CI/CD 流程,如与 CodeBuild、CodeDeploy 和 CodePipeline 配合使用。CodeBuildCodeBuild 是一项完全托管的持续集成服务,用于编译、测试和部署代码。自动化构建、测试和打包应用程序。 集成测试框架和构建工具,如 JUnit、Maven、Gradle 等。 与 CI/CD 工作流程无缝集成。CodeDeployCodeDeploy 是一项托管的部署服务,用于自动化应用程序部署到 EC2 实例、Lambda 函数、服务器等。自动化应用程序部署到各种计算资源。灰度部署和滚动回滚功能。 集成与 CI/CD 工作流程,如与 CodeBuild、CodePipeline 配合使用。CodePipelineCodePipeline 是一项托管的持续交付服务,用于自动化构建、测试和部署工作流程。自动化构建、测试和部署应用程序的工作流程。集成多个构建和部署阶段,形成完整的 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 BalancerELB【业务处理逻辑】Web ServerEC2App ServerEC2消息队列SQS对标业内开源Kafka ,但是在功能和特性上有差异【数据存储】缓存型数据存储Elastic Cache对标业内开源Redis,且基本sdk接口都兼容结构化数据存储RDS多种数据库引擎支持,比如MySQL非结构化数据存储DynamoDB对标业内开源MongoDB,但是不兼容,完全2套文件存储S3【媒体资源加速】多地域同步Lambda经典serverless服务内容分发网络 - CDNCloudFront【消息通知】邮件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进行整体的阐述,希望对大家有所帮助!