我在同一区域
EC2
有一个 RDS
和 US East(N. Virginia)
,但两个资源位于不同的区域; us-east-1a
中的 RDS 和 us-east-1b
中的 EC2。
现在的问题是,如果我将两个资源放在同一个
zone
中,那么它会加速与数据库之间的数据传输吗?我每天都会收到从应用程序到此实例的大约 20k-30k 条目。
编辑
我在这里读到:
每个可用区都是隔离的,但一个区域内的可用区通过低延迟链路连接起来。
现在我想知道这些
low-latency links
是否非常小,或者我是否应该考虑将资源转移到同一区域以加快数据传输速度?
结论
正如答案和评论中所讨论的:
EC2
和 RDS
实例,zone
中的一项服务失败将会影响整个系统。因此,将它们放在单独的区域中没有任何优势。zones
与 low-latency links
连接在一起,但仍然存在一些延迟,在我的情况下,这是可以忽略不计的。
EC2
和 RDS
之间还需支付USD 0.01/GB
的小额数据传输费用。
同一区域内域间数据传输的典型值是多少?
虽然 AWS 不会保证、声明或以其他方式承诺硬性数字,但典型的测量时间为 10 毫秒以下,我所看到的数字约为 3 毫秒。
延迟如何影响数据传输吞吐量?
延迟越高,最大带宽越低。这里有很多因素需要考虑。Brad Hedlund 写了一篇出色的论文。
我是否应该担心同一区域内区域之间的 AWS 网络延迟?
除非您使用具有非常高性能的网络适配器(10 Gb 或更高)的最新实例,否则我不会担心。除了最特殊的情况之外,容错的好处应该优先考虑。对于您的数据库事务用例,1 毫秒和 10 毫秒之间的差异对事务性能的影响极小(如果有的话)。
但是,除非您在多个区域中使用多个 EC2 实例,否则您希望单个 EC2 实例与 RDS 位于同一区域中。如果您位于两个区域,则任一区域的故障都会导致您的配置瘫痪。
有时延迟和网络带宽非常重要。对于这种特殊情况,AWS 提供了放置组,以便 EC2 实例基本上位于同一机架中并紧密相连,从而将延迟降至最低。
请参阅此处了解一些非官方基准。对于每天 20k 读/写的用例,这不会产生巨大的差异。
但是,将资源移动到同一可用区将显着提高您案例的可靠性。如果您只有 1 个相互依赖的数据库和 1 个计算实例,则没有理由将它们放在单独的可用区中。对于您当前的架构,us-east-1a
或
us-east-1b
的失败都会导致您的项目失败。除非您计划扩展项目以拥有多个数据库和计算实例,否则它们应该驻留在同一可用区中。
https://aws.amazon.com/blogs/architecture/improving-performance-and-reducing-cost-using-availability-zone-affinity/ 官方博客说了一些关于跨 AZ 延迟的内容:
可用区与同一 AWS 区域中的其他可用区在物理上相隔一段有意义的距离,尽管它们彼此之间的距离都在 60 英里(100 公里)以内。在
https://docs.aws.amazon.com/whitepapers/latest/aws-fault-isolation-boundaries/availability-zones.html 本文档中也提到了:
区域中的可用区彼此之间的距离很远,最远可达 60 英里(约 100 公里),以防止相关故障,但又足够近,可以使用具有个位数毫秒延迟的同步复制。基于光纤内的光速(~0.2M km/sec),与物理位置直接相关的跨AZ延迟应在0.5ms以内,即RTT通常应在1ms以内。
但在现实世界中,您需要添加网络设备和网卡产生的延迟。