亞馬遜雲科技核心服務之計算服務(Part1:Amazon EC2 星巴克為什麼橫向排隊)

亞馬遜雲開發者發表於2023-02-06

image.png

(星爸爸網路上的一張圖)

注意上圖中的5個人,對沒錯這5個人。一般情況星巴克的人員配置大概是這樣的:

  • 1個經理,在辦公室
  • 兩個收銀,在收銀臺(本文關注的重點)
  • 三個人做咖啡

當你去過星巴克買咖啡時,你有沒有發現或者注意過星巴克收銀臺有兩個,並且不同於肯德基的縱向排隊,為什麼星巴克是橫向排隊?

其實星巴克內不僅與雲端計算有關,他們的流程更與雲原生的 DevOps 有莫大關係,本文重點講解與雲端計算 ECS 相關這塊。

Amazon EC2 概要

什麼是 Amazon EC2

Amazon EC2 縮寫於:Amazon Elastic Compute Cloud,其中文翻譯為 xXxX(不知道怎麼翻譯,反正最好別翻譯中文,起碼我認識的人只叫 EC2),簡單點說 EC2 就是亞馬遜雲科技中的一臺虛擬機器,這個名詞在亞馬遜雲科技中你會反覆聽到,也是必須要知道的知識點。

對於這個概念必須要知道兩點:1. 它是一個虛擬機器,2. 計算是彈性的

面試或者考試可能會考的地方(敲黑板):EC2 是什麼級別的服務(Iaas,PaaS,SaaS)?

Amazon EC2 是 IaaS 服務級別。不知道怎麼區分的或者看完了Iaas,PaaS,SaaS區分的還是懵逼的,那麼就死記硬背下來,如果想理解記憶,那麼看完下面小節就明白了

為什麼要用雲主機 EC2,與傳統主機比有和優點

傳統的物理主機

當我們建立自己的物理伺服器的時候,首先需要的就是要調研,比如需要購買的伺服器型別,數量,之後交給公司採購,提交採購單,之後下單購買…等待1~1000年漫長歲月,之後硬體供應商才會把這些硬體交付給你,這個過程最坑逼的是,這些硬體設施並不一定會同時到達。接下來就是你需要將這些主機搬家到自己的資料中心,或者租用的資料中心裡,進行安裝,除錯他們,最後將他們連線起來,之後一堆的雜七雜八的事情,比如接入通電,做一些 check 等等。

這裡面舉一個博主遇到的大栗子:之前在政府公司,採購了一批機器,機器自帶的系統是 Ubuntu,之後要換成 Windows server,所有東西弄好之後,發現機器一直連線不上網路,各種360度的排查之後,發現接入的網路是千兆網路,但是做的驅動並不支援千兆網路,後來換了驅動後,順利介入網路,這個之間排查和 Fix 的過程是需要一定時間的。

做完了前面所說的各種前期準備後,你才真正的開始部署你的應用程式。但是這裡需要注意的是,你採購回來的這批主機,已經固定,也就是他們的計算能力當你在下單的時候就已經被決定了,所以你放在上面的應用程式的計算能力,必定被這些物理機器的計算能力所限制。這也就是為什麼後面會引入 EC2,因為 EC2 完全不需要擔心此類問題。

將應用程式部署在物理伺服器上線前準備:

image.png

與傳統主機比 EC2 的優點

相比傳統主機, EC2 可以隨時建立和終止不同型別的伺服器,相比傳統伺服器的運維部分,在亞馬遜雲科技中,你不需要來 conrtol,這部分伺服器的運維工作,完全是亞馬遜雲科技來負責,你可以認為從購買主機到接入網路除錯部分,亞馬遜雲科技已經全部完成,你所需要做的就是建立 EC2,之後啟動 EC2 使用即可,當然如果有一天你不想用 EC2 了,那麼你也可以隨時的直接刪除掉 EC2 例項。

image.png

概括總結 EC2 的特點:

  • 非常靈活

    上面已經說了,你可以隨時開關 EC2,也可以隨時選擇保留或者刪除 EC2,其次在 EC2 例項的配置方面也是非常靈活的,比如你選擇 OS 的時候,你可以選擇 Linux 或者 Windows,也可以使用配置模板,建立成百上千個 EC2 例項,並且你還可以使用不同的作業系統和配置的組合來滿足不同的業務和計算場景。

    除去作業系統外,在 EC2 例項上軟體執行的環境也可以靈活配置,比如資料庫,第三方軟體,或者自開發應用程式等,在例項的執行方面 客戶這面是有完全的控制權。這裡再次敲黑板,到這裡你應該知道為什麼 EC2 是 IaaS 服務了吧,EC2 的 OS 是你在控制,並且例項裡面的東西是你來控制,外部的網路或者硬體什麼的不需要你來管。這些綜合即是 IaaS 解決方案。

    垂直縮放例項:當你的 EC2 例項計算能力不滿足當前需求時,你可以選擇隨時的增加或者減少你的服務計算資源(CUP、記憶體等)

EC2 具有 Auto Scaling 的特點,可以根據使用者定義的條件自動增加或者減少 EC2的容量、例項數量等,比如在使用高峰期動態增長保持效能,又可以在低峰期主動縮減,達到降低成本的目的。
  • 經濟高效且快速

    減少了前期採購準備與後期運維等工作,付費只支付正在使用的 EC2 例項,已經停止或者已經終止(刪除)的例項付費(敲黑板中…)

EC2 是按照使用的秒數以及執行的個體型別計費。

擴充知識

Amazon EC2 是由虛擬化技術實現的,實際這些虛擬機器最終還是託管在物理伺服器上,當啟動某個EC2 的例項時,你不會佔用伺服器的整個主機,事實是你的 EC2 例項 可能和其他人的 EC2 例項共用一個物理伺服器,這也就是常說的虛擬化技術。

多租戶模式:在虛擬機器之間共享底層硬體的概念被稱為多租戶模式(multi-tenancy)。這些管理、維護和協調資源的工作也都是由亞馬遜雲科技來負責。

亞馬遜雲科技的多租戶模式是否安全?

答案是安全的,雖然是多租戶共用一個伺服器,但是本身每一個 EC2 彼此之間是隔離的,相互之間並不知道彼此所在主機上正在執行其他的 EC2 例項。

Amazon EC2 例項的型別

之所 EC2 有不同的型別,其原因是他們的分工和處理業務場景不相同,就好比我們做一個專案或者產品,需要 PM、BA、前段、後端、DBA 等不同的分工,他們擅長的領域也不同,同樣 Amazon EC2 提供多種經過最佳化,適用於不同使用案例的例項型別以供選擇。

例項型別包括各種 CPU、記憶體、儲存和網路容量,使您可以靈活地為應用程式選擇適當的資源搭配。每種例項型別都包含一個或多個例項大小,允許您根據目標工作負載的要求擴充套件資源(官方描述)。

Amazon EC2 例項型別都歸屬於一個例項系列,這些例項型別對 CPU、記憶體、儲存和網路容量進行了不同組合,可以靈活地為應用程式選擇適當的資源組合。

image.png

現時點內( 更新時間 2023年2月1日01:33:16 ),亞馬遜 EC2 有如下幾種型別:

image.png

Amazon EC2 計費定價

Amazon EC2 雲伺服器有五種付費方式:按需例項、Savings Plans、預留例項、Spot 例項,以及專用主機。專用主機可在專供您使用的物理伺服器上提供 EC2 例項容量。下面會進行講解這5中付費方式。

亞馬遜雲科技沒有頻寬的費用,但是有例項流量費。

image.png

1、按需定價(On-Demand)

無需簽訂合同,按需計費,適合入門,可以用測試工作負載和進行各種嘗試時使用。

按需型例項推薦用途:

  • 希望擁有低成本和 Amazon EC2 提供的靈活性,且不想支付預付款或簽訂長期合同的使用者
  • 具有短期、難應付或無法預測且不能中斷的工作負載的應用程式
  • 首次在 Amazon EC2 上開發或測試的應用程式

2、Savings Plans

提供很低的定價,但是需要使用者承諾在1年或者3年 的期限內保持穩定的使用量(xx 美元/小時為單位衡量)。此類定價模式 最高可節省 72%的使用費用。

Savings Plan 的定價模式,也適用於無伺服器服務:Amazon Fargate 和 Amazon Lambda。

3、預留例項(Reserved Instances)

此模式計價適用於穩定狀態的工作負載或者使用量可以預測的工作負載。與按需定價相比,預留例項可以節省最高75%的費用。

這個折扣有個限制,就是必須承諾1年或者3年 的試用期後,才可以享受折扣。

3.1 預付全部費用

預付全部費用是指在承諾時候全額支付所有的費用。

3.2 預付部分費用

預付部分費用是指在承諾時候支付部分費用。

3.3 不預付費用

不預付費用是指你一開始就不需要支付任何費用。

4、Spot 例項

藉助這類例項 ,你可以請求獲得限制的 Amazon EC2 計算容量。與按需例項的價格相比,使用 Spot 例項最高可以達到 90% 的折扣。

Spot 例項推薦用途:

  • 開始時間和結束時間靈活的應用程式
  • 只能承受極低的計算價格的應用程式
  • 具有緊急計算需要,需要獲取大量附加容量的使用者

需要注意如下兩個特點:

  • 對於可能需要大容量的緊急計算需求非常有用。
  • 如果一個 Spot 例項被 Amazon EC2 終止,你將不會被收取特定使用時間的費用,但如果它被你自己終止,那麼將依據例項執行時間按小時計費。
注意:亞馬遜雲科技可能隨時回收該例項,只有提前兩分鐘向你發出告知,來提醒你完成工作並儲存狀態。所以如果要選擇 Spot 例項,一定要確保工作負載能夠支援隨時中斷,比如批處理工作。

5、 專用主機(Dedicated Hosts)

專用主機是專供你用於 EC2 的物理主機。通常用於滿足某些合規性要求,不會有人和你一同租用該主機。

它可以作為預訂購買,相比按需價格最高可打七折。

專用主機可以每小時購買一次。

定價的整體歸納總結

image.png

Amazon EC2 動態擴充套件(Amazon EC2 Auto Scaling)

Amazon EC2 的其中一個主要優勢是:可擴充套件性和彈性。你可以理解為:客戶可以根據自身業務的需求,增加或者降低亞馬遜雲科技的使用量。

如果想要自動執行擴充套件流程,您會使用哪項亞馬遜雲科技服務?為 Amazon EC2 例項提供這一功能的亞馬遜雲科技服務是 Amazon EC2 Auto Scaling。

image.png

圖片來源於亞馬遜雲科技官方

Amazon EC2 動態擴充套件解決了什麼問題

這裡先來舉一個栗子

在咖啡店裡,由於每天來買咖啡的人數不確定,所以很難確定應該僱幾個咖啡師(初中高階等)。如果僱少了,雖然降低了成本,但是客人可能需要等很長時間才能取到咖啡,影響客戶就餐體驗,而且有的客戶甚至有可能就此離開。最糟糕的是,如果咖啡店只有一個咖啡師,那麼萬一有一天這個咖啡師生病請假後,不能來上班,那咖啡店就無法營業了。另外一方面,如果僱多了,卻又沒有那麼多人來,那麼對咖啡店也不合算,會影響其收益率ROI(Return On Investment,或投資回報率)。畢竟企業最終目的還是要盈利的。

上述的例子如果對映到企業購買伺服器上,如果按最大客流量購買伺服器,那一年大部分時間裡這些伺服器就處在閒置的狀態,產生浪費。如果按照平均客流量購買伺服器,那麼在客流量激增的時候,又會出現無法訪問的問題。

亞馬遜雲科技可以解決這個問題。當一個咖啡師不夠用的時候,亞馬遜雲科技可以用程式創造出來第2個,第3個,…第n個咖啡師。當顧客人數減少時候,不需要那麼多咖啡師的時候,亞馬遜雲科技可以關掉一些“咖啡師”。這就是 Amazon EC2 的擴充套件功能。當然,亞馬遜雲科技可以自動完成這個過程,也就是亞馬遜 EC2 自動擴充套件功能(Amazon EC2 Auto Scaling)。

這個功能可以幫助客戶自動增減例項,維持應用程式的可靠性。亞馬遜EC2自動擴充套件功能有兩種模式:動態擴充套件和預測擴充套件。前者根據需求增減例項。後者根據預測值決定例項的個數。

當客戶在 EC2 上啟動一個應用程式的時候,可以配置自動擴充套件組。一般來說,客戶可以將 EC2 例項的最小數量設為一個。也就是說,任何客戶都至少有一個EC2的例項。客戶可以將所需容量設為兩個 EC2 例項。客戶還可以設定最大容量,比方說四個EC2例項。用 KFO 餐廳的例子來解釋,就是說至少有一個服務員,正常情況有兩個服務員,最多四個服務員。這些服務員都是隨叫隨到,而且不需要的時候就會自動消失。

Amazon EC2 的擴充套件方法

Amazon EC2 的擴充套件方法有兩種方式:

  • 垂直(縱向)擴充套件
  • 水平(橫向)擴充套件

水平擴充套件和垂直擴充套件有什麼區別?(敲黑板,無論是面試還是考試)

垂直擴充套件意味著將 CPU、RAM 等計算能力擴充套件到現有機器,而水平擴充套件意味著向伺服器或資料庫新增更多機器。即增加節點的數量,並將任務分佈在不同的節點之間。

參考資料

為什麼星巴克橫向排隊(直達電梯,不需要閱讀本文)

一般星巴克都有兩個收銀,人少的時候一個收銀,人多的時候就兩個,橫向排隊,不需要分隊,節省了店鋪內的空間,而且擴充套件了收銀,提高了效率,也就是類似EC2的彈性擴充套件,反之也可以減少。非常秀。

後續也會根據星巴克講解雲原生 CICD 在星巴克裡如何體現的。

閱讀原文:https://dev.amazoncloud.cn/co...

相關文章