之前由於公司 Training 考取了 AWS-SAP 的證書,更多理解的是概念和理論上的知識,並未實操。但對於學習一門技術來說,實踐是加深理解和掌握該技術的必經之路,強調知行合一。所以最近打算重新熟悉相關架構,並利用 AWS global 的 Free tier 進行實操。
本篇主要內容會圍繞 AWS 基礎概念進行講解:
- 雲計算定義
- 雲計算類型
- AWS 基礎設施
雲計算定義
在具體介紹 AWS 內容前,我們先來看一看對 cloud computing
的定義。
wiki 上這樣寫到:
Cloud computing[1] is the on-demand availability of computer system resources, especially data storage (cloud storage) and computing power, without direct active management by the user.
雲計算是用戶在不參與管理的情況下,對系統計算資源的按需使用,特別是在數據存儲和計算資源這兩個方面。
換成我們可以理解的話來說,就是一個個雲廠商,通過自己搭建數據中心,將存儲和計算等等資源自己管理後,提供給外界的用戶。在不用自己搭建基礎設置的情況下,直接按照自己的需要,按需購買雲廠商提供的資源,省去了自己管理基礎設施的運維成本以及購買相關硬件的費用。從這也可以看到,雲計算的本質其實就是資源的共享。
雲計算類型
AWS 作爲第一家提供雲計算的服務商和整個行業的領跑者,這裏我們就以 AWS 爲例。看看 AWS 怎樣看待雲計算。
AWS 認爲雲計算共有三種類型:
- IaaS - 基礎設施即服務
- PaaS - 平臺即服務
- Saas - 軟件即服務
上面是對三種類型的定義,理解起來有些抽象。這裏我們依次用我們理解的話來說:
IaaS:
對於 IaaS, 我們可以理解成,作爲用戶,我們向 AWS 申請的資源是 硬件
+ 操作系統
。就像我們購買了一臺物理服務器,其中包括 CPU, 內存,硬盤,以及使用哪種操作系統進行管理,比如像 AWS EC2 實例資源。
PaaS:
而對於 PaaS 來說,我們向 AWS 申請的資源是 硬件
+ 操作系統
+ 可以運行軟件的平臺。相當於基於 IaaS 基礎上,多加了一個軟件平臺。怎麼去理解這個軟件平臺呢。
可以將其理解成,運行軟件時必要的環境。比如想運行 docker 應用,那麼 PaaS 會把 docker 的環境裝好,你只需要上傳自己的 image 就可以了。比如想要使用 java web 應用,PaaS 會把 Apace 裝好,你直接提供 jar 包就可以了。
SaaS:
最後對於 SaaS 來說,又是 PaaS 的更近一步,除了軟件運行環境給你裝好了外,需要運行的軟件一起給你裝好了。比如想使用 MySQL,Redis 這類的軟件,直接使用對應的服務就可以了。對於 AWS 就是 RDS,DynamoDB,S3 這類的服務。你完全不需要知道它們是怎麼搭建的,只要會用就可以了。
AWS 簡要架構
對於一個應用來說常採用如下的架構。
其中第一列是,用戶會通過 Route53 - dns 解析,CloudFront(CDN)或者 Web Layer 進入。
第二列對應具體的計算資源,比如像 EC2,EKS 等處理用戶的請求。
第三列對應數據存儲層,像 RDS ,S3,EBS 這些存儲服務
AWS 全球基礎設施
AWS 作爲世界最大的雲廠商,其基礎設施遍佈全球。
在理解 AWS 的基礎設施前,需要理解幾個概念:
區域:
區域是 AWS 最基本的改變,很多的服務都依賴於區域。比如 S3 提供的 bucket 服務就可以跨區域,但像 EBS 這類的存儲就不能跨區域。
可以把區域理解成,放置數據中心的位置。一個區域,由多個可用區組成。多個可用區的目的在於災備。
可用區:
可以將可用區理解成一個或者多個實際的數據中心。爲了保證可用性,容錯性和可拓展性。一個區域由多個可用區組成,多個可用區之間,使用城域光纖互聯,距離在 1000 公里以內,保證高吞吐和低延遲的網絡。
邊緣網絡:
在每個區域附近,都會設置邊緣站點,其實就可以將其理解成 CDN 節點,緩存各個數據中心的數據。
這裏簡單說下 CDN,每個region旁的邊緣站點,不僅僅緩存本區域的數據,還會緩存其他區域的數據。這就保證了本區域的用戶,訪問其他區域的數據,請求可以很快被響應。
但你肯定有這樣一個疑問,邊緣站點容量總是有限的,它怎麼緩存多個區域那麼多的數據呢。原因在於和 DNS 解析類似,CDN 也有自己的分發網絡。
邊緣節點用於接收請求,當自己的邊緣站點找不到時,會遞歸查詢區域節點,如果區域節點也查不到,就會請求中心節點。可以看到從小到上,節點的容量是不斷增加的。最後如果中心節點也沒有,就直接去源站點請求了。
所以在有了 CDN 之後,用戶請求一個域名,就有原來的 DNS 解析域名所對應的真實服務器的 IP. 變成了用戶請求域名後,域名服務器會根據 CNAME 返回一個 cdn 服務器的域名,轉而去請求解析這個 cdn 服務器的域名。而 cdn 服務器會根據用戶 IP 地址,所在運營商等等情況,選擇一臺包含原來真實服務器的緩存服務器 IP 地址,請求數據。