我想知道当一个数据库实例应该在不同的 AWS 区域之间共享时,更推荐什么?使用跨区域只读副本更好还是在源区域使用只读副本 + AWS Global Accelerator 更好?
是否有一些适用于全球应用的“最佳实践解决方案”?
我对 AWS 没有经验,而且大多数东西对我来说都是新事物。所以我知道我的问题可能看起来很业余。
根据我的阅读,我认为一个集中式只读副本是更好的解决方案,因为区域之间存在延迟,但如果是这样的话,为什么有人会使用跨区域副本呢?
我想知道当一个数据库实例应该在不同的 AWS 区域之间共享时,更推荐什么?使用跨区域只读副本更好还是在源区域使用只读副本 + AWS Global Accelerator 更好?
是否有一些适用于全球应用的“最佳实践解决方案”?
我对 AWS 没有经验,而且大多数东西对我来说都是新事物。所以我知道我的问题可能看起来很业余。
根据我的阅读,我认为一个集中式只读副本是更好的解决方案,因为区域之间存在延迟,但如果是这样的话,为什么有人会使用跨区域副本呢?
如果您的应用程序托管在一个区域中,例如eu-west-1
,当它从eu-west-1
.
如果您碰巧有客户,us-east-1
则必须在以下 3 个选项之一中进行选择:
边缘位置
您可以使用边缘站点(即CloudFront或Global Accelerator )减少延迟。这将通过使用AWS Backbone路由到您的源来改善延迟。这比以前更快,但应用程序仍保留在原始区域中(在本例中eu-west-1
)。您也只保留一份申请表。
基于延迟的路由
此选项使应用程序更接近用户,通过使用具有基于延迟的记录的Route 53或Global Accelerator,您可以让您的域解析到其延迟最低的位置。您将拥有您的中心区域(读写器所在的位置),然后创建跨区域副本。这将提供最佳读取性能,因为读取是在本地完成的(而不是跨区域)。
在示例eu-west-1
中是具有跨区域副本的主区域us-east-1
。区域之间的延迟仅在写入读写所需的时间中观察到(在原始区域中,除非您使用Aurora Read Replica Write Forwarding)。这是迄今为止最复杂和最昂贵的,但将提供最佳的整体性能。
没做什么
如果你什么都不做,这个选项将使用公共互联网路由到主机,那些离你的应用程序更远的人会有更长的延迟,但这是最便宜的选择。
概括
您需要确定跨区域的重要性,如果仅仅是因为您的用户群位于更远的区域,那么确保您尽可能接近他们是关键。如果您位于特定地理区域,则无需考虑副本。
请记住,当其他地理区域的需求增加时,您始终可以增强您的基础设施。