原文連接: 說說雲計算中的地域和可用區概念html
亞馬遜 AWS 是公共雲計算的先驅,一些雲計算中重要的產品設計和基礎概念能夠說都是亞馬遜引入的。這其中有兩個很是重要的概念:地域(Region
)和可用區(AZ:Availabe Zone
)。不少第一次接觸雲計算的同窗,光看這兩個名字的字面意義,雖然也可以猜出大體的意思,但深刻的學習瞭解雲計算一段時間以後,才能深入的體會這兩個概念對於雲計算的重要影響。包括國內的這些雲計算服務商,也是過了很長時間才陸續在產品中引入可用區的設計的。mysql
理想狀況下,咱們固然但願雲計算可以完全消除地域的影響,就像咱們用電的時候不用關心發電廠在哪裏同樣。但現實顯然沒有那麼美好,不一樣地域的機房之間的網絡還作不到像電網同樣透明。因此在雲計算產品的最底層,首先須要考慮不一樣地域的影響。不一樣地域之間,通常只能經過公網連通,內部之間網絡是不通的。固然,對於雲計算服務商來講,爲管理須要,通常仍是會經過有限的帶寬來連通不一樣地域的機房,用於雲計算內部資源管理,以及一些特殊的產品場景,好比跨地域的鏡像複製。但由於內部帶寬有限,通常不會徹底開放給用戶使用。sql
因此,地域就是物理意義上的不一樣地方的機房,這個不一樣地方,通常來講距離較遠,機房之間用光纖直連的成本較高。而且相對來講會在用戶需求量較大的地方部署地域機房,好比阿里雲的雲服務器的地域在境內有杭州,上海,北京,深圳,青島,海外已經上線的包括香港、硅谷和新加坡。實際上阿里雲一開始是沒有上海地域的,由於上海杭州距離較近,部署直連光纖的成本也相對可控,阿里內部以前不少應用都是分別部署在杭州和上海,基本上是看成一個地域來使用的,後來可能由於需求大而分開了。shell
因此,地域很好理解,就是物理上相隔較遠的機房,由於跨地域的機房之間的帶寬沒法知足內網需求,因此不一樣地域的機器之間內網是不通的。固然,隨着骨幹網絡等物理層基礎設施的發展,將來跨地域內網連通並不是徹底不可能的事情。在這個過程當中,公共雲計算服務商也可能根據用戶的訴求,在某些場景開放一些有限的內部網絡帶寬來作產品,好比,前面說的阿里雲的跨地域鏡像複製,以及最近推出來的OSS跨地域複製等。通常來講,在數據和存儲領域內的產品會先行支持跨地域的功能,畢竟數據容災是更強烈的需求。數據庫
那麼,同一個地域以內又分紅多個可用區,爲何要搞這麼複雜?緣由很簡單,IT系統從遠古時代就有同城容災的需求,那使用雲計算之後,怎麼實現同城跨機房容災呢?若是用戶購買的雲服務器沒法區分在哪一個機房,那麼就沒法在業務應用層面來設計同城容災。因此雲計算服務商提出了同地域內不一樣可用區的概念,簡單點理解,能夠認爲就是同城不一樣機房,雲計算服務商會從底層的機房電力/網絡等層面仔細設計來保障一個可用區出現故障的時候不會影響到另一個可用區,固然你要說杭州完全被錢塘江潮淹沒的狀況,那可用區也救不了你,要在業務應用層面考慮經過不一樣的地域來設計異地容災了。服務器
因此,簡單來講,能夠將地域理解爲不一樣城市的機房,將可用區理解爲同一個城市的不一樣機房。固然,實際上不一樣可用區也多是在同一個機房,可用區的概念嚴格來講是按照電力和網絡設備等相互獨立來設計的。同一個地域內的不一樣可用區之間,內網是連通的,可是網絡的響應時間會有差別。下面是我用阿里雲杭州地域作的一次 ping 的測試,來觀察同地域不一樣可用區之間的網絡狀況。網絡
主機1在杭州可用區 B,主機2在杭州可用區 D,數據庫 1 在杭州可用區 B。同一個可用區內,從主機 1 ping 數據庫 1 的結果以下:學習
ping rdsxxx.mysql.rds.aliyuncs.com PING rdsxxx.mysql.rds.aliyuncs.com (100.98.xx.xxx) 56(84) bytes of data. 64 bytes from 100.98.xx.xxx: icmp_seq=1 ttl=56 time=0.260 ms 64 bytes from 100.98.xx.xxx: icmp_seq=2 ttl=56 time=0.472 ms 64 bytes from 100.98.xx.xxx: icmp_seq=3 ttl=56 time=0.396 ms
同地域跨不一樣可用區,從主機 2 ping 數據庫1 的結果以下:測試
ping rdsxxx.mysql.rds.aliyuncs.com PING rdsxxx.mysql.rds.aliyuncs.com (100.98.xx.xxx) 56(84) bytes of data. 64 bytes from 100.98.xx.xxx: icmp_seq=1 ttl=54 time=1.63 ms 64 bytes from 100.98.xx.xxx: icmp_seq=2 ttl=54 time=1.73 ms 64 bytes from 100.98.xx.xxx: icmp_seq=3 ttl=54 time=1.74 ms
很明顯,不一樣可用區之間的內網是連通的,但響應時間比同一個可用區以內要慢 1ms 多。因此,在實際應用中,若是須要考慮同城容災或者同城雙活,須要儘可能將應用和數據庫分佈部署在不一樣的可用區。若是對響應時間高度敏感,則建議部署在同一個可用區內。在購買雲服務器和數據庫的時候,要注意選擇了。大數據
另外,目前阿里雲大數據平臺主要部署在杭州地域,若是業務應用的數據須要進入到阿里雲大數據平臺加工處理,則雲服務器和數據庫最好優先在杭州地域購買,之後阿里雲應該會在更多地域部署大數據平臺。不過悲催的是,杭州機房資源總體上比較緊張,杭州地域的雲服務器時不時可能斷供一小段時間。
這裏寫一下本身對「地域」和「可用區」的理解:
這兩個概念都是對管理的主機的的一個區域的劃分。「地域」這個劃分的範圍比較大,比如一個城市圈的範圍。那麼「可用區」這個範圍能夠理解爲城市圈中的一個個小區。這個小區住不下了,能夠去另一個小區住。同一個地域裏,可用區之間訪問是方便、快捷的,因此,一個服務部署時,經常須要在同一「地域」下的不一樣「可用區」中都部署一下,這樣一個掛了、另一個能夠撐起來,不至於服務全掛了。