amazon-web-services - 避免RDS实例跨地域调用
问题描述
我正在使用一个使用 AWS RDS 数据库的 Web 应用程序,目前,它仅在印度(孟买起源)可用,现在形成,我想让它可用于多个区域(美国-俄亥俄州和孟买)。在那种情况下,是否有可能为以下场景配置我的 RDS
请求来自美国-俄亥俄州,它由俄亥俄州地区的 RDS 实例切断,请求来自印度,然后数据将由孟买地区的 RDS 实例提供服务器,两个 RDS 实例相互复制意味着两个实例都充当单个数据库
提前致谢
解决方案
典型的(单服务器)数据库将所有信息保存在一个位置(例如孟买)。
您可以在另一个区域(例如俄亥俄州)添加只读副本。这会将信息复制到俄亥俄州,但俄亥俄州的副本只能用于查询(读取)数据。所有更新都需要对孟买的主数据库进行。这使得查询更快,而不需要“多个主人”。
一个Aurora 全球数据库由一个主 AWS 区域组成,您可以在其中掌握您的数据,以及最多五个只读的辅助 AWS 区域。Aurora 以低于一秒的典型延迟将数据复制到辅助 AWS 区域。您直接向主要 AWS 区域中的主要数据库实例发出写入操作。Aurora 全局数据库使用专用基础架构来复制您的数据,使数据库资源完全可用于服务应用程序工作负载。具有全球足迹的应用程序可以使用辅助 AWS 区域中的读取器实例进行低延迟读取。万一您的数据库在 AWS 区域中降级或隔离,您可以提升其中一个辅助 AWS 区域在一分钟内完成完整的读写工作负载。
主控您的数据的主要 AWS 区域中的 Aurora 集群执行读取和写入操作。次要区域中的集群支持低延迟读取。您可以通过添加多个数据库实例(Aurora 副本)之一来独立扩展辅助集群,以服务于只读工作负载。对于灾难恢复,您可以移除和提升其中一个辅助集群以允许完整的读取和写入操作。
更进一步,您可以使用所有数据库实例都具有读写能力的 Amazon Aurora 多主集群:
在多主集群中,所有数据库实例都可以执行写入操作。单个读写主实例和多个只读 Aurora 副本的概念不适用。当写入器数据库实例不可用时,不会进行任何故障转移,因为另一个写入器数据库实例可立即接管故障实例的工作。我们将这种类型的可用性称为连续可用性,以将其与单主集群提供的高可用性(故障转移期间短暂停机)区分开来。
每个选项都是性能、成本和复杂性之间的权衡。只读副本或全局数据库很可能足以满足您的需求,因为大多数数据库操作是查询而不是更新。
您应该对每个选项进行试验并在您的应用程序上运行性能测试,以确认您正在实现所需的性能。此外,查看相关成本(由于拥有多台服务器,这可能会翻倍,另外两个区域之间的数据传输也会产生额外成本)。
另外,请注意,上述功能会因您选择的数据库引擎而异。(以上适用于运行 MySQL 的 Amazon Aurora。)
推荐阅读
- javascript - Webpack vue.js中如何将外部js集成到main.js文件中?
- mongodb - mongodb $lookup 3 级嵌套文档
- php - Google Translate API - html 文档翻译
- python - 玩家滑行和平台无法正确移动(Python/Pygame)
- c# - 我创建项目后,Android 应用程序不会立即编译
- python - wxPython - 更改网格对象的格式和外观
- php - 当我连接到 WIFI 时获取当前时间返回正常,如果我连接到 LTE,api 响应时间会出错
- scons - 使用 SCONS 构建多个目标
- go - 记录响应主体以用于日志记录
- sql - 从 T-SQL 中的字符串中提取日期时间