Answers:
复制时的缺点来自以下注释:
如果您使用美国东部(弗吉尼亚北部)终端节点(s3.amazonaws.com),而不是特定于区域的终端节点,Amazon S3默认会将任何虚拟托管样式请求路由到美国东部(弗吉尼亚北部)区域例如s3-eu-west-1.amazonaws.com)。
使用复制时,通常让AWS通过s3.amazonaws.com
将服务器中的REST请求作为目标,将别名路由到一个区域,并由重定向完成它的工作。
每当弗吉尼亚州N.维吉尼亚州(N.Virginia)发生故障时,魔术就会停止工作,并且您无法访问数据并不得不更新配置以选择特定的区域终结点。
问题不是来自DNS(对存储桶本身的请求将起作用),而是来自S3客户端,S3客户端将在访问存储桶之前连接到S3 API端点,在这种情况下,DNS解析已完成s3.amazonaws.com
,这是我们-东1端点。
当您使用区域别名时,您将通过包含AWS的运行状况检查来放松区域之间的负载平衡。
如果您使用针对区域快速切换的DNS cname,则对您的DNS TTL负责,但不能保证客户端ISP的缓存服务器会兑现您的价值(客户端可能会遇到的众多缓存之一)。
最后,如果您尝试自己进行负载平衡,则可能会创建与AWS相同的SPOF,并增加了维护它的负担。
AWS正在致力于此工作,但这就是我撰写本文时所拥有的全部信息。
example-bucket
存储桶存在之前,example-bucket.s3.amazonaws.com
已经在DNS中指向US East。在初始存储桶创建后的几分钟内,这将永久更改为指向正确的区域端点。这里的警告是,创建存储桶后,此主机名最初可能会短暂地被错误地路由-以后不要这样做。
s3.amazonaws.com
创建存储区后的几分钟内为您的存储区中的存储区更改DNS条目,并且此更改独立于us-east-1持续存在。在其他区域创建存储桶,并在创建存储桶your-bucket-name.s3.amazonaws.com
之前,之中和之后的几分钟内观察分辨率。s3-1.amazonaws.com
创建存储桶后,信息会被推送到Route 53 的区域中,并一直保留在该区域中,而无需进一步依赖us-east-1。
许多大公司可能会因为不使用此功能而感到不满。它的确增加了额外成本,并且从历史上讲,即使实施了任何种类的实际灾难恢复解决方案,也都未经测试。
除了成本问题外,积极使用跨区域复制的公司还可以提供有关复制对象所需的延迟的有效考虑。S3不允许(据我所知)对复制对象的写后读取一致性,但它允许在单个区域中存储桶。
这个SE问题引起了一个问题,即对象没有正确复制,或者复制时间太长。如果跨区域复制是以最终一致性的方式完成的,则有很多问题需要解决。