AWS 处理大量交易的最佳方式
AWS best way to handle high volume transactions
我正在编写一个具有极高事务量的系统,CRUD,并且我正在使用 AWS。考虑到 none 的数据应该丢失,我必须牢记哪些注意事项?
我做了一些研究,他们说使用 SQS 队列来确保数据不丢失。我还应该牢记哪些其他备份、冗余、快速处理注意事项?
因此,如果您想创建一个高度弹性的系统,同时也是冗余的,我建议您阅读 AWS Well Architected Framework。这将详细介绍一个人可以在堆栈溢出时提供的信息。
关于个别技术:
- 如果您像您所说的那样进行交易,那么您应该考虑使用关系数据存储来存储数据。我建议您看一下 Amazon Aurora,它内置了自动缩放只读和多主机支持等功能。虽然您可能期望数量很大,但通过使用自动缩放,您只需为使用的部分付费。
- 尝试解耦您的 API,如果可以的话,在移交给您的后端之前有一个愚蠢的验证层。当您与 Lambda.
结合使用时,像 SQS 这样的技术(如您之前提到的)有助于解耦
- SQS 至少保证一次,因此如果您的系统不应该写入重复项,您需要考虑应用程序中的幂等性。
- 还使用死信队列 (DLQ) 来处理任何失败的操作。
- 确保驻留在您的 VPC 中的任何资源都分布在可用区域中。
- 使用 S3、EC2 备份管理器和 RDS 快照确保数据得到备份。大多数其他服务都有某种备份功能,您可以启用。
- 尽可能使用自动缩放以确保降低成本。
- 使用 IaC 工具(CloudFormation 或 Terraform)构建任何基础设施,并通过(Ansible、Puppet、Chef)等工具配置任何资源。尝试遵循预烘焙的 AMI 工作流程以确保它可以快速 return 到基本服务器状态。
我正在编写一个具有极高事务量的系统,CRUD,并且我正在使用 AWS。考虑到 none 的数据应该丢失,我必须牢记哪些注意事项?
我做了一些研究,他们说使用 SQS 队列来确保数据不丢失。我还应该牢记哪些其他备份、冗余、快速处理注意事项?
因此,如果您想创建一个高度弹性的系统,同时也是冗余的,我建议您阅读 AWS Well Architected Framework。这将详细介绍一个人可以在堆栈溢出时提供的信息。
关于个别技术:
- 如果您像您所说的那样进行交易,那么您应该考虑使用关系数据存储来存储数据。我建议您看一下 Amazon Aurora,它内置了自动缩放只读和多主机支持等功能。虽然您可能期望数量很大,但通过使用自动缩放,您只需为使用的部分付费。
- 尝试解耦您的 API,如果可以的话,在移交给您的后端之前有一个愚蠢的验证层。当您与 Lambda. 结合使用时,像 SQS 这样的技术(如您之前提到的)有助于解耦
- SQS 至少保证一次,因此如果您的系统不应该写入重复项,您需要考虑应用程序中的幂等性。
- 还使用死信队列 (DLQ) 来处理任何失败的操作。
- 确保驻留在您的 VPC 中的任何资源都分布在可用区域中。
- 使用 S3、EC2 备份管理器和 RDS 快照确保数据得到备份。大多数其他服务都有某种备份功能,您可以启用。
- 尽可能使用自动缩放以确保降低成本。
- 使用 IaC 工具(CloudFormation 或 Terraform)构建任何基础设施,并通过(Ansible、Puppet、Chef)等工具配置任何资源。尝试遵循预烘焙的 AMI 工作流程以确保它可以快速 return 到基本服务器状态。