1 基本概念
1.1 雲端計算
雲端計算誕生之初,市場上對它的定義有很多種。美國標準與技術研究院的定義是把雲端計算定義為一種模式,而不是一種技術。這種模式既可以是商業模式,也可以是服務模式。
雲端計算是一種按使用量付費的模式,這種模式提供可用的、便捷的、按需的網路服務(即隨時隨地接入可接入),進入可配置的計算資源共享池(包括:網路、伺服器、儲存、應用軟體、服務),這些資源能夠被快速提供,只需投入很少的管理工作,或與服務供應商進行很少的互動。(美國國家標準與技術研究院)
雲端計算透過網際網路將計算和儲存資源進行集中和共享,為使用者提供各種計算服務、儲存服務、應用服務等等。雲端計算可以分為三種服務模式:基礎設施即服務(IaaS)、平臺即服務(PaaS)和軟體即服務(SaaS)。IaaS提供基礎設施服務,如計算和儲存資源;PaaS提供平臺服務,如開發工具和中介軟體;SaaS提供軟體服務,如企業應用和線上服務。雲端計算的有五個關鍵特徵:
-
按需自助服務(On-demand Self-service):雲端計算實現了計算機資源的按需自助服務。使用者結合自身的需求,透過操作管理平臺就能獲得計算資源,無需雲端計算平臺服務人員介入。這種方便快捷的自助方式,極大的節省了人力成本,提高辦公效率。
-
無處不在的網路接入(Broad Network Access):雲端計算實現了廣泛網路接入。使用者可以在全球各地7x24小時的使用IT服務,極大的提升了使用者工作的靈活性和效率。
-
與位置無關的資源池(Locations independent resources pooling):雲端計算實現了資源池化,透過資源池裡給使用者提供資源,這些資源包括網路、伺服器、儲存、應用及服務等。
-
快速彈性(Rapid Elastic):雲端計算實現了快速供應和釋放資源,當使用者需要的時候能快速的供應;當使用者不用的時候,快速釋放資源。
-
按使用付費(Pay per User):雲端計算提供可計量的服務,計費依據就是所使用的資源可計量。計量越精細,運營效率越高。比如按使用小時為時間單位,以伺服器CPU個數、佔用儲存的空間、網路的頻寬等綜合計費,也可以包時、包天、包月套餐模式進行計量。
1.2 雲原生
要了解“雲原生(Cloud-Native)”的定義,先說說“原生”。對人類而言,原生表示出生地、本地;對於動物而言,表示原生棲息地、成長環境。“雲原生”就是面向雲端計算環境設計的應用。
看看亞馬遜AWS對“雲原生 ”的定義:
雲原生是在雲端計算環境中構建、部署和管理現代應用程式的軟體方法。現代企業希望構建高度可擴充套件、靈活且具有彈性的應用程式,可以快速更新以滿足客戶需求。為此,他們使用現代工具和技術,這些工具和技術本質上支援雲基礎設施上的應用程式開發。這些雲原生技術支援快速、頻繁地更改應用程式,而不會影響服務交付,從而為採用者提供了創新的競爭優勢。
雲原生是一種構建和執行應用程式的方法,是一套技術體系和方法論。雲原生 由 Cloud 和 Native構成,Cloud 表示應用程式位於雲中,而不是傳統的資料中心;Native表示應用程式從設計之初即考慮到雲的環境,原生為雲而設計,在雲上以最佳模式執行,充分利用和發揮雲平臺的彈性、分散式優勢。
雲原生應用程式由多個微服務。傳統上,開發人員使用包含所有必需功能的單塊結構構建整體式應用程式。透過使用雲原生方法,軟體開發人員將功能分解為更小的微服務。這使得雲原生應用程式更加敏捷,因為這些微服務可以獨立工作,並且只需極少的計算資源即可執行。
雲原生應用程式充分利用雲交付模式的特性,藉助雲的彈性、規模、復原力與靈活性,幫助企業更快速、更敏捷地遷移。雲原生應用程式採用微服務架構而構建,可以在不影響服務交付的前提下,快速且頻繁地更新應用程式,助力企業獲得競爭優勢。
雲原生應用程式包含多項關鍵技術:
- 微服務:雲原生應用程式的基本構成要素。這些可重複使用的程式鬆散地結合在一起,可以整合到任何雲環境中。各項微服務協同工作,確保應用程式順暢執行,但每項微服務都能獨立擴充套件且持續迭代最佳化,令雲原生應用程式的開發過程更迅捷、更靈活。微服務通常部署在容器中。
- 容器:彙集了應用程式的所有依賴關係,例如原始碼、作業系統以及各種庫,使應用程式程式碼能在任何環境中執行。即使各個雲原生應用程式依賴於互不相同的作業系統,容器仍能讓它們在同一臺伺服器上同時執行。
- API:API是資源的集合,方便應用程式與另一個應用程式進行通訊和整合。
- 動態編排:簡化容器生命週期管理、資源管理、負載平衡、內部故障後的重啟安排以及伺服器群集節點配置。
- 服務網格:服務網格是一種軟體層,用於管理多個微服務之間的通訊,在應用程式之間路由流量。
- 後端服務:包括訊息代理、資料儲存、安全服務以及監控功能等資源。
- 自動化:支援快速配置雲環境功能與更新,在不干擾使用者體驗的情況下縮短髮布和最佳化時間。
雲原生應用程式的多次迭代管理起來十分複雜,可能會令開發團隊不堪重負。從傳統應用程式遷移到基於微服務和容器構建的應用程式,可能造成相互依賴性或應用程式功能方面的複雜問題。
1.3 邊緣計算
邊緣計算指的是在靠近物或資料來源頭的一側,採用網路、計算、儲存、應用核心能力為一體的開放平臺,就近提供最近端服務。其應用程式在邊緣側發起,產生更快的網路服務響應,滿足行業在實時業務、應用智慧、安全與隱私保護等方面的基本需求。邊緣計算處於物理實體和工業連線之間,或處於物理實體的頂端。
邊緣計算的概念是建立在雲端計算的基礎上的。邊緣節點是邊緣計算的重要組成部分,指的是在資料產生源頭和雲中心之間任一具有計算資源和網路資源的節點。比如,手機就是人與雲中心之間的邊緣節點,閘道器是智慧家居和雲中心之間的邊緣結點。在理想環境中,邊緣計算指的就是在資料產生源附近分析、處理資料,沒有資料的流轉,進而減少網路流量和響應時間。
2 基本元件
2.1 計算
2.1.1 雲伺服器
雲伺服器ECS(Elastic Compute Service)是穩定可靠、彈性擴充套件的IaaS(Infrastructure as a Service)級別的雲端計算服務。ECS免去了採購IT硬體的前期準備,可以便捷高效的使用伺服器,實現計算資源即開即用和彈性伸縮。
ECS可以提供自動化伺服器遷移的能力,能夠一鍵完成資源的交付與部署,同時根據業務和負載變化趨勢,設定動態擴容,實現成本最優的穩定算力,透過統一的身份與許可權管理能力,實現精細化鑑權。在運維方面,ECS也會配有免託管的工具箱,配備例項診斷工具,能夠實現操作可審計可追溯。
- 例項(Instance):虛擬的計算環境,由CPU、記憶體、系統盤和執行的作業系統組成;ECS例項作為雲伺服器最為核心的概念,其他資源,比如磁碟、IP、映象、快照等,只有與ECS結合後才具有使用意義。
- 地域(Region):指ECS例項所在的物理位置。地域內的ECS例項內網是互通的,不同的地域之間ECS例項內網不互通。
- 可用區(Zone):指在同一地域內,電力和網路互相獨立的物理區域。
- 磁碟(Disk):是為ECS例項提供資料塊級別的資料儲存。可以分為4類: 普通雲盤、SSD雲盤、高效雲盤和本地SSD磁碟
- 快照(Snapshot):是某一個時間點上某個磁碟的資料複製。
- 映象(Image):是ECS例項執行環境的模板,一般包括作業系統和預裝的軟體。
- 安全組(Security Group):是一種虛擬防火牆,具備狀態檢測包過濾功能。每個例項至少屬於一個安全組。同一個安全組內的例項之間網路互通,不同安全組的例項之間預設內網不通,但是可以授權兩個安全組之間互訪。
2.2.3 裸金屬伺服器
裸金屬伺服器是雲服務提供商租給使用者的專屬的物理伺服器,使用者是唯一的租戶。裸金屬伺服器不僅限於物理伺服器,而是物理伺服器和雲服務的結合。它不包括相應的作業系統和軟體,由客戶自選配置。
大部分雲服務提供商的裸金屬伺服器產品,不提供本地硬碟,主要提供CPU和記憶體。雲服務商他們會推薦使用者使用雲盤,採用映象快速裝機。如果採用傳統裝機方式,交付時間太慢。裸金屬伺服器可以無縫對接和相容雲廠商的其它雲服務,例如網路服務、雲資料庫等。這樣一來,裸金屬伺服器與使用者已有的虛擬化伺服器進行互通和協同,能夠有效利用雲資源。
為什麼有了雲伺服器,還有“開倒車”提供物理伺服器呢?原因有兩點:
- 雲伺服器採用虛擬化硬體提供運算,有一定的效能損耗,處理IO密集的任務,效能損失更大。
- 雲伺服器的多使用者共享資源,虛擬化雖然承諾了資源配額,當個別使用者突發高負載的時候,依然會影響到其他使用者的效能。
裸金屬伺服器有哪些使用者呢?
裸金屬伺服器具有資源獨佔的特性,它適合對安全隔離要求較高的場景,例如銀行、金融、證券等行業。這些行業對業務部署有合規要求,不允許與別人合租,資料在物理上必須隔離。所以,他們是裸金屬伺服器的首要客戶。
裸金屬伺服器滿足對效能有極致要求的行業,例如超級計算、航空航天等科學研究場景,他們要處理的資料量空前巨大,對計算過程的穩定性要求也很高,更青睞裸金屬伺服器。
2.2.4 函式計算
函式計算是一種基於事件驅動的全託管計算服務,可讓使用者使用透過事件觸發自動執行程式碼。它處理流程簡化,更快速、高效、安全,同時無需租用或購買任何伺服器,也無需理解負載均衡、彈性伸縮等複雜的系統管理概念。
函式計算適用於各種不同的應用場景,其中一些典型的例子包括:
- Restful風格的 Web 服務: 函式計算是一種輕量級的方法呼叫包裝器, 非常適合使用 RESTful API 的應用,簡單易用。
- 數字化轉型和雲遷移:某些企業可能有複雜的本地業務系統,透過將其作為函式的一部分遷移到阿里雲上,可以實現更靈活、更高效的處理方式,並降低技術債務。
- 物聯網(IoT)應用程式:函式計算輕巧,無需升級或維護硬體,適合處理 IoT 資料流。
2.2 網路
2.3.1 CDN、全站加速、PCDN
- CDN(content delivery network)
CDN 是一組分佈在不同地理位置的伺服器,它將資料存放在更靠近使用者的位置,加速交付內容給使用者。CDN 不是新概念,隨著網際網路開始提供圖片、影片等視聽內容,CDN 服務便應運而生,有效解決了靜態資源的網路擁塞問題。
CDN將檔案副本臨時儲存在全球多個資料中心內,讓使用者從就近的伺服器訪問網際網路內容,可以縮短頁面載入時間,實現更快的高效能 Web 體驗。可以把 CDN 想象成取款機,如果城市裡只有一臺取款機,離得遠的使用者花費很多時間找到那臺機器 。如果每個街角都有一臺取款機,使用者就近取款就好了,方便快捷。
- 全站加速
CDN主要快取靜態資源,而全站加速適用於各行業動靜態內容混合,含較多動態資源請求(如asp、jsp、php等格式的檔案)的網站。使用者請求資源時,靜態內容從邊緣節點就近獲取,動態內容透過動態加速技術智慧選擇較優路由回源獲取。全站加速有效提升動態頁面的載入速度,避開網路擁堵路由,提高訪問成功率,實現網站整體加速與實時最佳化。
- PCDN(P2P CDN)
P2P內容分發網路(P2P CDN)是以P2P技術為基礎,透過挖掘利用電信邊緣網路海量碎片化閒置資源而構建的低成本高品質內容分發網路服務。客戶透過整合PCDN SDK(以下簡稱SDK)接入該服務後能獲得等同或略高於CDN的分發質量,同時顯著降低分發成本。適用於影片點播、直播和大檔案下載等業務場景。
2.3.2 彈性負載均衡器
每年促銷活動的時候,各大電商網站流量激增,伺服器可能無法滿足成增長的訪客,頻繁崩潰。負載均衡器( Load Balance)是一個智慧型的排程員,可以按照既定的規則分發流量,確保每臺伺服器承擔合理的負載,保障業務平穩執行。彈性負載均衡器(Elastic Load Balance)是在負載均衡器的基礎上,自動化監測後端伺服器的健康狀態,提升應用系統的可用性。
彈性負載均衡由以下3部分組成:
- 負載均衡器:接受來自客戶端的傳入流量並將請求轉發到一個或多個可用區中的後端伺服器。
- 監聽器:您可以向您的彈性負載均衡器新增一個或多個監聽器。監聽器使用您配置的協議和埠檢查來自客戶端的連線請求,並根據您定義的分配策略和轉發策略將請求轉發到一個後端伺服器組裡的後端伺服器。
- 後端伺服器:每個監聽器會繫結一個後端伺服器組,後端伺服器組中可以新增一個或多個後端伺服器。後端伺服器組使用您指定的協議和埠號將請求轉發到一個或多個後端伺服器。
當後端某臺伺服器健康檢查出現異常時,彈性負載均衡會自動將新的請求分發到其它健康檢查正常的後端伺服器上;而當該後端伺服器恢復正常執行時,彈性負載均衡會將其自動恢復到彈性負載均衡服務中。
2.3.3 專有網路
專有網路(Virtual Private Cloud)是雲上私有網路。使用者完全掌控自己的專有網路,例如選擇IP地址範圍、配置路由表和閘道器等,可以在自己定義的專有網路中使用雲資源,如雲伺服器ECS(Elastic Compute Service)、雲資料庫RDS(Relational Database Service)和負載均衡SLB等。可以透過高速通道將專有網路連線到本地網路,形成一個按需定製的網路環境,實現應用的平滑遷移上雲和對資料中心的擴充套件。
VPC 的應用場景有四個:
-
安全部署應用程式:將對外提供服務的應用程式部署在VPC中,建立安全組規則、訪問控制白名單等方式控制網際網路訪問。您也可以在應用程式伺服器和資料庫之間進行訪問控制隔離,將Web伺服器部署在能夠進行公網訪問的子網中,將應用程式的資料庫部署在沒有配置公網訪問的子網中。
-
部署主動訪問公網的應用程式:將需要主動訪問公網的應用程式部署在VPC中的一個子網內,透過公網NAT閘道器路由其流量。透過配置SNAT規則,子網中的例項無需暴露其私網IP地址即可訪問網際網路,並可隨時替換公網IP,避免被外界攻擊。
-
跨可用區容災:建立交換機為VPC劃分一個或多個子網。同一VPC內不同交換機之間內網互通。透過將資源部署在不同可用區的交換機中,實現跨可用區容災。
-
業務系統隔離:如果有多個業務系統例如生產環境和測試環境要嚴格進行隔離,可以使用多個VPC進行業務隔離。
專有網路包含交換機、閘道器和控制器三個重要的元件。交換機和閘道器組成了資料通路的關鍵路徑,控制器使用自研協議下發轉發表到閘道器和交換機,完成了配置通路的關鍵路徑。配置通路和資料通路互相分離。VPC中的交換機是分散式的節點,閘道器和控制器都是叢集部署且多機房互備,所有鏈路上都具備冗餘容災,提升了VPC的整體可用性。
2.3.3 彈性網路卡
彈性網路卡(Elastic Network Interface,ENI)是繫結私有網路(Virtual Private Cloud,VPC)內雲伺服器的一種彈性網路介面,可在多個雲伺服器間自由遷移。彈性網路卡對配置管理網路與搭建高可靠網路方案有較大幫助。您可以在雲伺服器上繫結同一可用區下的多個彈性網路卡,實現高可用網路方案;也可以在彈性網路卡上繫結多個內網 IP,實現單主機多 IP 部署。
2.3.4 彈性公網 IP
彈性公網 IP (Elastic IP Address)是可以獨立購買和持有的公網IP地址資源。目前,EIP支援繫結到專有網路型別的雲伺服器 ECS(Elastic Compute Service)例項、輔助彈性網路卡、負載均衡 SLB(Server Load Balancer)例項、NAT 閘道器(NAT Gateway)和高可用虛擬IP上。
EIP是一種NAT IP,它實際位於阿里雲的公網閘道器上,透過NAT方式對映到被繫結的雲資源上。當EIP和雲資源繫結後,雲資源可以透過EIP與公網通訊。
2.3 儲存
2.2.1 物件儲存
物件儲存服務(Object Storage Service)是一種海量、安全、低成本、高可靠的雲端儲存服務,適合存放任意型別的檔案。
OSS由四個部分組成:
- 儲存空間(Bucket)
儲存空間是使用者用於儲存物件(Object)的容器,所有的物件都必須隸屬於某個儲存空間。儲存空間具有各種配置屬性,包括地域、訪問許可權、儲存型別等。使用者可以根據實際需求,建立不同型別的儲存空間來儲存不同的資料。
- 物件(Object)
物件是OSS儲存資料的基本單元,也被稱為OSS的檔案。和傳統的檔案系統不同,物件沒有檔案目錄層級結構的關係。物件由後設資料(Object Meta)、使用者資料(Data)和檔名(Key)組成,並且由儲存空間內部唯一的Key來標識。物件後設資料是一組鍵值對,表示了物件的一些屬性,例如檔案型別、編碼方式等資訊,同時使用者也可以在後設資料中儲存一些自定義的資訊。
物件的生命週期是從上傳成功到被刪除為止。在整個生命週期內,除使用追加方式上傳的Object可以透過繼續追加上傳寫入資料外,使用其他方式上傳的Object內容無法編輯,您可以透過重複上傳同名的物件來覆蓋之前的物件。
- ObjeckKey
ObjectKey表示上傳的Object所在儲存空間的完整名稱,即包含檔案字尾在內的完整路徑,如填寫為 abc/efg/123.jpg
。
OSS具有與平臺無關的RESTful API介面,使用者可以在任意應用儲存和訪問任意型別的資料,主要用於移動應用或者大型網站的圖片、音影片儲存。
2.2.1 檔案儲存
檔案儲存(Cloud File Storage,CFS)提供了可擴充套件的共享檔案儲存服務,可與雲伺服器搭配使用。CFS 提供了標準的 NFS 檔案系統訪問協議,為多個雲伺服器例項提供共享的資料來源,支援彈性容量和效能的擴充套件,現有應用無需修改即可掛載使用,是一種高可用、高可靠的分散式檔案系統,適合於大資料分析、媒體處理和內容管理等場景。
下面看看CFS與OSS的區別:
對比項 | OSS | 檔案系統(CFS) |
---|---|---|
資料模型 | OSS是一個分散式的物件儲存服務,提供的是一個Key-Value對形式的物件儲存服務。 | 檔案系統是一種典型的樹狀索引結構。 |
資料獲取 | 根據Object的名稱(Key)唯一的獲取該Object的內容。雖然您可以使用類似test1/test.jpg的名稱,但是這並不表示Object是儲存在test1目錄下。對於OSS來說,test1/test.jpg僅僅只是一個字串,與example.jpg並沒有本質的區別。因此不同名稱的Object之間的訪問消耗的資源是類似的。 | 一個名為test1/test.jpg的檔案,訪問過程需要先訪問到test1目錄,然後再在該目錄下查詢名為test.jpg的檔案。 |
優勢 | 支援海量的使用者併發訪問。 | 支援檔案的修改,例如修改指定偏移位置的內容、截斷檔案尾部等。也支援資料夾的操作,例如重新命名目錄、刪除目錄、移動目錄等非常容易。 |
劣勢 | OSS儲存的Object不支援修改(追加寫Object需要呼叫特定的介面,生成的Object也和正常上傳的Object型別上有差別)。使用者即使只需要修改一個位元組也需要重新上傳整個Object。 | 受限於單個裝置的效能。訪問越深的目錄消耗的資源也越大,操作擁有很多檔案的目錄也會非常慢。 |
2.4 資料庫
2.1.2 雲資料庫
雲資料庫通常指雲端計算廠商提供的雲端資料庫例項,比如MySQL、SQL Server、PostgreSQL、Redis 、MongoDB等等。除了基本資料庫功能,還包括資料備份、恢復、擴容、效能監控、故障切換等。使用者只需要關注業務邏輯,無需關心底層資料庫的維護和管理。雲資料庫的特點如下:
- 全託管式服務,使用者無需關心底層資料庫的維護和管理。
- 支援多種資料庫引擎和版本,滿足不同場景的需求。
- 支援多種規格的資料庫例項,滿足不同的業務需求。
- 提供高可用、自動備份、安全防護等功能,保障使用者資料庫的安全性、可靠性和高可用性。
- 具有靈活的擴容能力,使用者可以根據業務需求隨時調整資料庫例項的規格和容量。
- 提供多種監控和診斷工具,幫助使用者快速發現和解決問題。
2.1.2 雲原生資料庫
雲原生資料庫是透過雲平臺進行構建、部署和分發的資料庫服務,具備了傳統資料庫所不具備的直接訪問性和執行時可伸縮性。
-
普遍可訪問和高可用性:雲原生資料庫是完全存在於雲上的,可以隨時隨地的從多前端訪問,提供雲服務的計算節點。因其叢集部署在雲上,所以單點失敗對服務的影響特別小。而且當需要升級或更換服務的時候,可以對節點進行不中斷服務的逐漸升級。
-
高擴充套件性與可遷移性:雲原生資料庫會與底層的雲端計算基礎設施分離,能夠靈活及時的調動資源進行擴容和縮容,以從容應對流量激增可能帶來的壓力,以及流量低谷期因資源過剩造成的浪費。也正是因為能夠靈活擴縮容,雲原生資料庫也具備很強的可遷移性,甚至可以粗暴的在新的位置擴容100%又在舊的位置縮容全部的50%。
-
演進式設計與快速迭代:雲原生資料庫中的各項服務之間是相互獨立的,個別服務的更新並不會對其他部分產生不利影響,而不是一旦出了問題就只能全場熄火。此外,雲原生的研發測試和運維工具是高度自動化的,這使得應用的更新會更加快速頻繁。
雲原生資料庫與普通雲資料庫之間的主要區別在於設計理念、架構和技術棧。
- 設計理念和架構:雲原生資料庫專為雲環境設計,採用微服務架構和容器化技術,強調應用程式的可擴充套件性和高度自動化,而普通雲資料庫通常指的是部署在雲基礎設施上的傳統關係型資料庫,如MySQL、PostgreSQL等,這些資料庫具備資料持久化儲存、高可用性和可擴充套件性等特點,但與應用程式的解耦程度相對較低。
- 技術棧:雲原生資料庫的技術棧主要包括容器化技術、編排工具、微服務架構等,而普通雲資料庫的技術棧主要包括資料庫管理系統、查詢語言等。
- 彈性擴充套件和資源管理:雲原生資料庫具有更好的彈性伸縮能力和資源管理,能夠根據業務需求動態擴充套件或縮減資源,而普通雲資料庫在這方面的擴充套件性和靈活性相對較弱。
- 資料安全和管理:雲原生資料庫提供了更好的資料安全性和可靠性保障,採用安全協議、訪問控制和加密技術等多重保護手段,確保資料的安全性和隱私性,而普通雲資料庫雖然也提供資料安全功能,但在資料加密和隔離方面可能不如雲原生資料庫。
- 開發和部署方式:雲原生資料庫更注重應用程式的開發和部署方式,提供高度自動化和彈性的應用管理,而普通雲資料庫則更側重於資料庫的管理和查詢功能。
參考
https://cloud.tencent.com/document/product/576
https://help.aliyun.com/zh/oss/product-overview/comparison-between-oss-and-traditional-file-systems
https://zhuanlan.zhihu.com/p/55269466
https://baijiahao.baidu.com/s?id=1726629126785444048
https://developer.aliyun.com/article/936965
https://zhuanlan.zhihu.com/p/434193271
https://developer.aliyun.com/article/1243486
https://cloud.tencent.com/document/product/1199
https://juejin.cn/post/6844904197859590151
https://cloud.tencent.com/document/product/1556/68603
https://help.aliyun.com/zh/polardb/polardb-for-postgresql/benefits?spm=a2c4g.11186623.0.0.63556128BCbcZy