文章目录

  • Amazon FSx – 概述
    • Amazon FSx for Lustre
      • FSx Lustre – 文件系统部署选项
    • Amazon FSx for NetApp ONTAP
    • Amazon FSx for OpenZFS
    • Hybrid Cloud 存储
    • AWS 存储云原生选项
    • AWS 存储网关
      • Amazon S3 File Gateway
      • Amazon FSx File Gateway
      • Volume Gateway
      • Tape Gateway
      • Storage Gateway – 硬件设备
      • AWS Storage Gateway
    • AWS Transfer Family
    • AWS DataSync
      • AWS 存储服务之间的传输
      • 存储比较
  • AWS 集成和消息传递
    • 章节介绍
    • Amazon SQS – 什么是队列?
    • Amazon SQS – 标准队列
    • SQS 一 生成消息
    • SQS 一 消费消息
    • SQS – 多个 EC2 实例使用者
    • SQS with Auto Scaling Group (ASG)
    • SQS 可以在应用程序层之间解耦
    • Amazon SQS – 安全
    • SQS – Message Visibility Timeout
    • Amazon SQS – Long Polling
    • Amazon SQS – FIFO Queue
    • SQS with Auto Scaling Group (ASG)
    • Amazon SNS
    • SNS 与 许多 AWS 服务集成
    • Amazon SNS – 如何发布
    • Amazon SNS – 安全
    • SNS + SQS:Fan Out (扇出)
    • 应用:S3 事件到多个队列
    • 应用程序:通过 Kinesis Data Firehose SNS 到 Amazon S3
    • Amazon SNS – FIFO topic
    • SNS FIFO + SQS FIFO:扇出
    • SNS – 消息过滤
  • Kinesis 概述
    • Kinesis Data Streams
    • Kinesis Data Streams – Capacity Modes
    • Kinesis Data Streams 安全
    • Kinesis Firehose
    • Kinesis Data Streams vs Firehose
      • Kinesis Data Streams
      • Kinesis Data Firehose
    • 将数据排序到 Kinesis 中
    • 将数据排序到 SQS 中
    • Kinesis 与 SQS 排序
    • SQS vs SNS vs Kinesis
      • SQS
      • SNS
      • Kinesis
    • Amazon MQ
    • Amazon MQ – 高可用性

Amazon FSx – 概述

在 AWS 上启动的第三方高性能文件系统,以下是一些 AWS 完全托管的服务:

适用于 Windows 的 Amazon FSx(文件服务器)

  • FSx for Windows 是完全托管的 Windows 文件系统共享驱动器
  • 支持 SMB 协议和 Windows NTFS
  • Microsoft Active Directory 集成、ACL、用户配额
  • 可以安装在 Linux EC2 实例上
  • 支持 Microsoft 的分布式文件系统 (DFS) 命名空间(跨多个 FS 的组文件)
  • 扩展到 10 GB/s、数百万 IOPS、100 PB 数据
  • 存储选项:
    • SSD:延迟敏感的工作负载(数据库、媒体处理、数据分析……)
    • HDD:广泛的工作负载(主目录、CMS,…)
  • 可以从您的本地基础设施(VPN 或 Direct Connect)进行访问
  • 可配置为多可用区(高可用性)
  • 数据每天备份到S3

Amazon FSx for Lustre

  • Lustre 是一种并行分布式文件系统,用于大规模计算
  • Lustre 这个名字源自“Linux”和“cluster”
  • 机器学习、高性能计算(HPC)
  • 视频处理、财务建模、电子设计自动化
  • 可扩展至 100 GB/s、数百万 IOPS、亚毫秒级延迟
  • 存储选项:
    • SSD:低延迟、IOPS 密集型工作负载、小文件和随机文件操作
    • HDD:吞吐量密集型工作负载、大型连续文件操作
  • 与S3无缝集成
  • 可以“读取 S3”作为文件系统(通过 FSx)
  • 可以将计算的输出写回到S3(通过FSx)
  • 可以从本地服务器(VPN 或 Direct Connect)使用

FSx Lustre – 文件系统部署选项

  • 暂存文件系统
    • 临时存储
    • 数据不会被复制(如果文件服务器出现故障,数据不会保留)
    • 高突发(速度提高 6 倍,每 TiB 200MBps)
    • 用途:短期加工,优化成本
  • 持久文件系统
    • 长期储存
    • 数据在同一可用区内复制
    • 在几分钟内替换失败的文件
    • 用途:长期处理、敏感数据

Amazon FSx for NetApp ONTAP

  • AWS 上的托管 NetApp ONTAP
  • 文件系统兼容NFS、SMB、iSCSI协议
  • 将 ONTAP 或 NAS 上运行的工作负载移至 AWS
  • 适用于:
    • Linux
    • 窗户
    • 苹果系统
    • AWS 上的 VMware 云
    • Amazon Workspaces 和 AppStream 2.0
    • Amazon EC2、ECS 和 EKS
  • 存储自动缩小或增长
  • 快照、复制、低成本、压缩和数据
  • 时间点瞬时克隆(有助于测试新工作负载)

Amazon FSx for OpenZFS

  • AWS 上的托管 OpenZFS 文件系统
  • 与 NFS 兼容的文件系统(v3、v4、v4.1、v4.2)
  • 将 ZFS 上运行的工作负载迁移到 AWS
  • 适用于:
    • Linux
    • Window
    • 苹果系统
    • VMware Cloud on AWS
    • Amazon Workspaces 和 AppStream 2.0
    • Amazon EC2、ECS 和 EKS
  • 高达 1,000,000 IOPS,延迟 < 0.5 毫秒
  • 快照、压缩和低成本
  • 时间点瞬时克隆(有助于测试新工作负载)

Hybrid Cloud 存储

  • AWS 正在推动“混合云”
    • 您的部分基础设施位于云端
    • 您的部分基础设施位于本地
  • 这可能是由于
    • 长时间的云迁移
    • 安全要求
    • 合规要求
    • 信息技术战略
  • S3 是一种专有存储技术(与 EFS / NFS 不同),那么如何在本地公开 S3 数据?
  • AWS 存储网关!

AWS 存储云原生选项

AWS 存储网关

  • 本地数据和云数据之间的桥梁
  • 用例:
    • 灾难恢复
    • 备份和恢复
    • 分层存储
    • 本地缓存和低延迟文件访问
  • 存储网关的类型:
    • S3 文件网关
    • FSx 文件网关
    • 卷网关
    • 磁带网关

Amazon S3 File Gateway

  • 可使用 NFS 和 SMB 协议访问配置的 S3 存储桶
  • 最近使用的数据缓存在文件网关中
  • 支持S3Standard、S3StandardIA、S3OneZoneA、S3Intelligent Tiering
  • 使用生命周期策略过渡到 S3 Glacier
  • 使用每个文件网关的 IAM 角色进行存储桶访问
  • SMB 协议与 Active Directory (AD) 集成以进行用户身份验证

Amazon FSx File Gateway

  • 对 Amazon FSx for Windows File Server 的本机访问
  • 经常访问的数据的本地缓存
  • Windows 本机兼容性(SMB、NTFS、Active Directory…)
  • 对于组文件共享和主目录有用

Volume Gateway

  • 使用 S3 支持的 iSCSI 协议的块存储
  • 由 EBS 快照支持,可以帮助恢复本地卷!
  • 缓存卷:低延迟访问最新数据
  • 存储卷:整个数据集都在本地,计划备份到 S3

Tape Gateway

  • 一些公司使用物理磁带进行备份过程(!)
  • 通过磁带网关,公司可以使用相同的流程,但是在云中
  • 由 Amazon S3 和 Glacier 支持的虚拟磁带库 (VTL)
  • 使用现有的基于磁带的流程(和 iSCSI 接口)备份数据
  • 与领先的备份软件供应商合作

Storage Gateway – 硬件设备

  • 使用 Storage Gateway 意味着您需要本地虚拟化
  • 否则,您可以使用 Storage Gateway 硬件设备
  • 您可以在 amazon.com 上购买
  • 可与文件网关、卷网关、磁带网关配合使用
  • 拥有所需的CPU、内存、网络、SSD缓存资源
  • 有助于小型数据中心的日常 NFS 备份

AWS Storage Gateway

AWS Transfer Family

  • 使用 FTP 协议将文件传入和传出 Amazon S3 或 Amazon EFS 的完全托管服务
  • 支持的协议
    • AWS Transfer for FTP(文件传输协议 (FTP))
    • AWS Transfer for FTPS(基于 SSL 的文件传输协议 (FTPS))
    • AWS Transfer for SFTP(安全文件传输协议 (SFTP))
  • 托管基础设施、可扩展、可靠、高可用性(多可用区)
  • 按每小时每个配置端点付费 + 以 GB 为单位的数据传输
  • 在服务中存储和管理用户的凭据
  • 与现有身份验证系统集成(Microsoft Active Directory、LDAP、Okta、Amazon Cognito、自定义)
  • 用途:共享文件、公共数据集、CRM、ERP…

AWS DataSync

  • 移入和移出大量数据
    • 本地/其他云到 AWS(NFS、SMB、HDFS、S3 API…) – 需要代理
    • AWS 到 AWS(不同的存储服务) – 无需代理
  • 可以同步到:
    • Amazon S3(任何存储类别 – 包括 Glacier)
    • Amazon EFS
    • Amazon FSx(Windows、Lustre、NetApp、OpenZFS…)
  • 复制任务可以安排为每小时、每天、每周
  • 保留文件权限和元数据(NFS POSIX、SMB…)
  • 一个代理任务可以使用10 Gbps,可以设置带宽限制

NFS / SMB 到 AWS(S3、EFS、FSx…)

AWS 存储服务之间的传输

存储比较

  • S3:对象存储
  • S3 Glacier:对象档案
  • EBS 卷:一次用于一个 EC2 实例的网络存储
  • 实例存储:EC2 实例的物理存储(高 IOPS)
  • EFS:Linux 实例的网络文件系统、POSIX 文件系统
  • FSx for Windows:适用于 Windows 服务器的网络文件系统
  • FSx for Lustre:高性能计算 Linux 文件系统
  • 适用于 NetApp ONTAP 的 FSx:高操作系统兼容性
  • FSx for OpenZFS:托管 ZFS 文件系统
  • 存储网关:S3 和 FSx 文件网关、卷网关(缓存和存储)、磁带网关
  • 传输系列:Amazon S3 或 Amazon EFS 之上的 FTP、FTPS、SFTP 接口
  • 数据同步:安排从本地到 AWS 或 AWS 到 AWS 的数据同步
  • Snowcone / Snowball / Snowmobile:以物理方式将大量数据移动到云端
  • 数据库:针对特定工作负载,通常带有索引和查询

AWS 集成和消息传递

章节介绍

  • 当我们开始部署多个应用程序时,它们将不可避免地需要相互通信
  • 应用程序通信有两种模式:
  1. 同步通信(应用程序到应用程序)
  2. 异步/基于事件(应用程序到队列到应用程序)
  • 如果流量突然激增,应用程序之间的同步可能会出现问题
  • 如果您突然需要编码 1000 个视频但通常是 10 个怎么办?
  • 在这种情况下,最好解耦你的应用程序,
    • 使用SQS:队列模型
    • 使用SNS:发布/订阅模型
    • 使用Kinesis:实时流模型
  • 这些服务可以独立于我们的应用程序进行扩展!

Amazon SQS – 什么是队列?

Amazon SQS – 标准队列

  • 最旧的产品(超过 10 年)
  • 完全托管的服务,用于解耦应用程序
  • 属性:
    • 无限吞吐量,无限队列中的消息数量
    • 消息默认保留:4 天,最多 14 天
    • 低延迟(发布和接收<10毫秒)
    • 每条发送的消息限制为 256KB
  • 可能有重复的消息(至少一次传递,偶尔)
  • 消息可能无序(尽力而为)

SQS 一 生成消息

  • 使用 SDK(SendMessage API)生成到 SQS
  • 消息保留在SQS中,直到消费者将其删除
  • 消息保留:默认4天,最长14天
  • 示例:发送要处理的订单
    • 订单编号
    • 客户ID
    • 任何你想要的属性
  • SQS标准:无限吞吐量

SQS 一 消费消息

  • 消费者(在 EC2 实例、服务器或 AWS Lambda 上运行)…
  • 轮询 SQS 消息(一次最多接收 10 条消息)
  • 处理消息(示例:将消息插入 RDS 数据库)
  • 使用DeleteMessage API删除消息

SQS – 多个 EC2 实例使用者

  • 消费者并行接收和处理消息
  • 至少一次交货
  • 尽力而为的消息排序
  • 消费者处理消息后删除消息
  • 我们可以水平扩展消费者以提高处理吞吐量

SQS with Auto Scaling Group (ASG)

SQS 可以在应用程序层之间解耦

Amazon SQS – 安全

  • 加密:
    • 使用 HTTPS API 进行飞行加密
    • 使用 KMS 密钥进行静态加密
    • 客户端加密(如果客户端想要自己执行加密/解密)
  • 访问控制:用于管理对 SQS API 访问的 IAM 策略
  • SQS访问策略(类似于S3存储桶策略)
    • 对于跨账户访问 SQS 队列很有用
    • 用于允许其他服务(SNS、S3…)写入 SQS 队列

SQS – Message Visibility Timeout

  • 消息被消费者轮询后,其他消费者将看不到该消息
  • 默认情况下,“消息可见超时”为 30 秒
  • 这意味着消息有 30 秒的时间来处理
  • 消息可见性超时结束后,消息在 SQS 中“可见”

  • 如果消息在可见性超时内没有被处理,它将被处理两次
  • 消费者可以调用 ChangeMessageVisibility API 来获得更多时间
  • 如果可见性超时很高(小时)并且消费者崩溃,重新处理将需要时间
  • 如果可见性超时太低(秒),我们可能会得到重复项

Amazon SQS – Long Polling

  • 当消费者从队列中请求消息时,如果队列中没有消息,它可以选择“等待”消息到达
  • 这称为长轮询
  • LongPolling 减少了对 SQS 的 API 调用数量,同时提高了应用程序的效率并减少了延迟
  • 等待时间可以在 1 秒到 20 秒之间(最好是 20 秒)
  • 长轮询优于短轮询
  • 可以使用 WaitTimeSeconds 在队列级别或 API 级别启用长轮询

Amazon SQS – FIFO Queue

  • FIFO = 先进先出(队列中消息的排序)
  • 吞吐量有限:不进行批处理时为 300 条消息/秒,使用批处理时为 3000 条消息/秒
  • 一次性发送能力(通过删除重复项)
  • 消息由消费者按顺序处理

SQS with Auto Scaling Group (ASG)


如果负载过大,部分交易可能会丢失

SQS 作为数据库写入的缓冲区

SQS 在应用程序层之间解耦

Amazon SNS

  • 如果您想将一条消息发送给多个接收者怎么办?
  • “事件生产者”仅向一个 SNS 主题发送消息
  • 我们想要收听 SNS 主题通知就有多少个“事件接收者”(订阅)
  • 每个主题订阅者都会收到所有消息(注意:过滤消息的新功能)
  • 每个主题最多 12,500,000 个订阅
  • 100,000 个主题限制


SNS 与 许多 AWS 服务集成

  • 许多AWS服务可以直接将数据发送到SNS以进行通知

Amazon SNS – 如何发布

  • 主题发布(使用SDK)
    • 创建主题
    • 创建订阅(或多个)
    • 发布到主题
  • 直接发布(用于移动应用程序SDK)
    • 创建平台应用程序
    • 创建平台端点
    • 发布到平台端点
    • 可与 Google GCM、Apple APNS、Amazon ADM 配合使用…

Amazon SNS – 安全

  • 加密:
    • 使用 HTTPS API 进行飞行加密
    • 使用 KMS 密钥进行静态加密
    • 客户端加密(如果客户端想要自己执行加密/解密)
  • 访问控制:用于规范对 SNS API 访问的 IAM 策略
  • SNS 访问策略(类似于 S3 存储桶策略)
    • 对于跨帐户访问 SNS 主题很有用
    • 用于允许其他服务(S3…)写入 SNS 主题

SNS + SQS:Fan Out (扇出)

  • 在SNS中推送一次,在所有订阅者的SQS队列中接收
  • 完全解耦,无数据丢失
  • SQS 允许:数据持久性、延迟处理和工作重试
  • 能够随着时间的推移添加更多 SQS 订阅者
  • 确保您的 SQS 队列访问策略允许 SNS 写入
  • 跨区域交付:与其他区域的 SQS 队列配合使用

应用:S3 事件到多个队列

  • 对于相同的组合:事件类型(例如对象创建)和前缀
    (例如 images/)您只能有一个 S3 事件规则
  • 如果您想将相同的S3事件发送到多个SQS队列,请使用扇出

应用程序:通过 Kinesis Data Firehose SNS 到 Amazon S3

  • SNS 可以发送到 Kinesis,因此我们可以拥有以下解决方案架构:

Amazon SNS – FIFO topic

  • FIFO = 先进先出(topic 中的消息排序)

  • 与 SQS FIFO 类似的功能:
    • 按消息组 ID 排序(同一组中的所有消息均排序)
    • 使用重复数据删除 ID 或基于内容的重复数据删除
  • 只能将 SQS FIFO 队列作为订阅者
  • 吞吐量有限(与 SQS FIFO 相同的吞吐量)

SNS FIFO + SQS FIFO:扇出

  • 如果您需要扇出+排序+重复数据删除

SNS – 消息过滤

  • JSON 策略用于过滤发送到 SNS topic 订阅的消息
  • 如果订阅没有过滤策略,它会收到每条消息

Kinesis 概述

  • 轻松实时收集、处理和分析流数据
  • 摄取实时数据,例如:应用程序日志、指标、网站点击流、物联网遥测数据…
  • Kinesis Data Streams:捕获、处理和存储数据流
  • Kinesis Data Firehose:将数据流加载到 AWS 数据存储中
  • Kinesis Data Analytics:使用 SQL 或 Apache Flink 分析数据流
  • Kinesis Video Streams:捕获、处理和存储视频流

Kinesis Data Streams

  • 保留 1 天至 365 天
  • 能够重新处理(重放)数据
  • 数据一旦插入 Kinesis,就无法删除(不变性)
  • 共享同一分区的数据进入同一分片(排序)
  • 生产者:AWS SDK、Kinesis Producer Library (KPL)、Kinesis Agent
  • 消费者:
    • 编写您自己的:Kinesis 客户端库 (KCL)、AWS SDK
    • 托管:AWS Lambda、Kinesis Data Firehose、Kinesis Data Analytics、

Kinesis Data Streams – Capacity Modes

  • Provisioned(配置)模式:
    • 您可以选择配置的分片数量、手动扩展或使用 API
    • 每个分片的速度为 1MB/s(或每秒 1000 条记录)
    • 每个分片的输出速度为 2MB/s(经典或增强型扇出消费者)
    • 您按每小时配置的分片付费
  • On-demand(点播)模式:
    • 无需配置或管理容量
    • 配置默认容量(4 MB/秒或每秒 4000 条记录)
    • 根据过去 30 天内观察到的吞吐量峰值自动扩展
    • 按每小时流和按 GB 数据输入/输出付费

Kinesis Data Streams 安全

  • 使用 IAM 策略控制访问/授权
  • 使用 HTTPS 端点进行动态加密
  • 使用 KMS 静态加密
  • 您可以在客户端实现数据的加密/解密(较难)
  • VPC 端点可供 Kinesis 在 VPC 内访问
  • 使用 CloudTrail 监控 API 调用

Kinesis Firehose

  • 完全托管服务,无需管理,自动扩展,无服务器
    • AWS:Redshift / Amazon S3 / OpenSearch
    • 第 3 方合作伙伴:Splunk / MongoDB / DataDog / NewRelic / …
    • 自定义:发送到任何 HTTP 端点
  • 为通过 Firehose 的数据付费
  • 近乎实时
    • 非完整批次的最低延迟为 60 秒
    • 每次至少 1MB 数据
  • 支持多种数据格式、转换、转换、压缩
  • 支持使用 AWS Lambda 进行自定义数据转换
  • 可以将失败或所有数据发送到备份 S3 存储桶

Kinesis Data Streams vs Firehose

Kinesis Data Streams

  • 用于大规模摄取的流媒体服务
  • 编写自定义代码(生产者/消费者)
  • 实时(~200 毫秒)
  • 管理扩展(分片拆分/合并)
  • 数据存储1至365天
  • 支持重播功能

Kinesis Data Firehose

  • 将流数据加载到 S3 / Redshift / OpenSearch / 3rd party / 自定义 HTTP
  • 完全托管
  • 近乎实时(缓冲时间最少 60 秒)
  • 自动缩放
  • 无数据存储
  • 不支持重播功能

将数据排序到 Kinesis 中

  • 假设您有 100 辆卡车(truck_1、truck_2、…truck_100)在路上定期将其 GPS 位置发送到 AWS。
  • 您想要按顺序使用每辆卡车的数据,以便您可以准确跟踪它们的移动。
  • 您应该如何将该数据发送到 Kinesis?
  • 答案:使用“truck_id”的“分区键”值发送
  • 相同的密钥将始终进入相同的分片

将数据排序到 SQS 中

  • 对于 SQS 标准,数据是无序的
  • 对于 SQS FIFO,如果不使用 Group ID,消息将按照发送的顺序被消费,只有一个消费者

  • 您想要扩大消费者的数量,但希望消息在彼此相关时能够“分组”
  • 然后使用组 ID(类似于 Kinesis 中的分区键)

Kinesis 与 SQS 排序

  • 假设有 100 辆卡车、5 个 kinesis 分片、1 个 SQS FIFO
  • Kinesis 数据流:
    • 平均每个分片有 20 辆卡车
    • 卡车的数据将在每个分片中排序
    • 我们可以拥有的最大并行消费者数量是 5
    • 可以接收高达 5 MB/s 的数据
  • SQS 先进先出
    • 你只有一个SQS FIFO队列
    • 您将拥有 100 个群组 ID
    • 您最多可以有 100 个消费者(由于有 100 个组 ID)
    • 每秒最多有 300 条消息(如果使用批处理则为 3000 条)

SQS vs SNS vs Kinesis

SQS

  • 消费者“拉数据”
  • 数据被消耗后被删除
  • 可以拥有任意数量的工人(消费者)
  • 无需配置吞吐量
  • 仅在 FIFO 队列上保证排序
  • 单独的消息延迟能力

SNS

  • 将数据推送给许多订阅者
  • 多达 12,500,000 名订户
  • 数据不持久(如果未交付就会丢失)
  • 酒吧/订阅者
  • 多达 100,000 个主题
  • 无需配置吞吐量
  • 与 SQS 集成以实现扇出架构模式
  • SQS FIFO 的 FIFO 功能

Kinesis

  • 标准:拉取数据 – 每个分片 2 MB
  • 增强扇出:推送数据 – 每个消费者每个分片 2 MB
  • 可以重播数据
  • 适用于实时大数据、分析和 ETL
  • 在分片级别排序
  • 数据在 X 天后过期
  • 预配置模式或按需容量模式

Amazon MQ

  • SQS、SNS 是“云原生”服务:来自 AWS 的专有协议
  • 从本地运行的传统应用程序可能使用开放协议,例如:MQTT、AMQP、STOMP、Openwire、WSS
  • 迁移到云时,我们可以使用 Amazon MQ,而不是重新设计应用程序以使用 SQS 和 SNS
  • Amazon MQ 是 RabbitMQ 或 ActiveMQ 的托管消息代理服务
  • Amazon MQ 的“扩展性”不如 SQS / SNS
  • Amazon MQ 在服务器上运行,可以在多可用区中运行并进行故障转移
  • Amazon MQ 具有队列功能 (~SQS) 和主题功能 (~SNS)

Amazon MQ – 高可用性