昨天有位朋友问购买阿里云服务器时如何选择可用区,之前我们也没搞明白可用区是怎么回事。于是借此机会研究了一下,通过这篇博文分享一下我们的理解,不对之处欢迎指出。
地域(Region)与可用区(Availability Zone)是云服务商划分自己所拥有的物理计算资源(数据中心)的一种方法,就如城市与小区是房地产开发商划分自己房产的一种方法。
地域通常按照数据中心所在的城市进行划分,而同一地域下的多个数据中心又进一步按照可用区进行划分。如果把数据中心比作住宅,那地域就是城市,可用区就是小区。购买服务器时选择地域与可用区,就如购房时选择城市与小区。
选择地域里需要注意2个问题:
1. 不同地域之间的服务器内网是不通的,若要进行网络通信只能走公网,不仅网络延迟大,而且要支付额外的带宽费用。
2. 离用户越近的地域,网络延迟越小。所以要根据网站访问用户的地区分布进行选择。
地域的选择很简单,但很重要,一旦选定了地域,后续的服务器都应该放在这个地域。
而可用区的选择却让不少人困惑。
在阿里云官网上是这么解释“可用区”的:
在同一地域下,电力、网络隔离的物理区域,可用区之间内网互通,不同可用区之间故障隔离。如果您需要提高应用的高可用性,建议您将实例创建在不同的可用区内。
为了方便理解,我们进行不太准确的简化,电力、网络隔离的物理区域通常都是机房,因此简化为:可用区是一个机房,不同可用区就是不同的机房。选择可用区,就是选择服务器(ECS)放在哪个机房?
可用区带来的好处是跨机房的容错。比如1个SLB下面挂2台服务器,分别放在不同的可用区(机房),假如其中1台服务器所在的整个机房出现故障,由于另外一个可用区下的服务器不受影响,所以网站依然能正常运行。也就是通过可用区可以实现跨机房的负载均衡与热备。
而为此要付出的代价是不同可用区的服务器之间内网通信的延迟会有一点增加,但这个延迟(据了解是1-3ms)通常是能接受的。
所以,对于性能要求不是非常苛刻的应用场景,将服务器部署在不同可用区是一个“不把鸡蛋放在一个篮子里”的更好选择。
另外,由于一个机房能容纳的服务器数量毕竟是有限的,即使你现在刻意将服务器放在同一个可用区。但当这个可用区“车位已满”时(服务器都被占用),你后续增加的服务器也将不得不放在不同的可用区。
写到这里,又抑制不住吐槽的冲动。阿里云是这么命名可用区的:可用区A,可用区B,可用区C;如果房地产开发商也这样命名住宅小区:小区A,小区B,小区C,你还有购房的欲望吗?如果将杭州的可用区命名为滨江可用区,转塘可用区,体验上是不是更友好呢?
另外,如果以地图的方式让用户可视化地选择可用区,是不是更酷一些呢?
就写到这,欢迎大家补充对地域与可用区的理解。
相关链接:云产品推出可用区