一、雲計算
雲計算發展歷程
在學習k8s的過程中接觸到了Serverless的概念,這里先對雲計算的發展歷程做一個簡單的總結,以便引入Serverless。2006年,Google董事長 Eric Schmidt 在搜索引擎大會首次提出雲計算(Cloud Computing)的概念,一轉眼十多年過去了,雲計算的發展勢如破竹,從傳統的IDC到現在的FaaS,逐漸快捷,愈發高效。
- IDC( Internet Data Center ):互聯網數據中心。自建或者租用。自建自己干全套;租用就是服務器自己買,租人家的機櫃,硬件安裝和調試都由被托管方負責。
- IaaS(Infrastructure as a Service):基礎設施即服務。IaaS提供商給你提供硬件, 想怎么用自己搞。
- PaaS(Platform as a Service):平台即服務。PaaS提供商給你提供硬件並裝好操作系統、相關中間件及運行庫等基礎環境,至於要裝什么應用看需求。
- SaaS(Software as a Service):軟件即服務。所有的東西都由IaaS提供商提供,用戶只管用。
- FaaS(Function as a Service):函數即服務。將應用程序抽象成函數,只有當程序被調用時才會執行函數啟動,平時不啟動不占用資源。

Serverless
Serverless是無服務器架構,這並不是說不用服務器了,而是通過技術手段將服務器透明化了,讓開發者減少對服務器資源的關注,能夠更加專注於自己的開發工作(業務)。Faas就是Serverless概念的一種體現。
-
低成本
- Serverless將用戶的服務器,數據庫,中間件委托於FaaS,用戶不再參與基礎設施及軟件的維護,而是直接使用相關的資源,大大節約了維護成本,降低了開發難度。
-
按需計費
- 不同於以往雲計算的計費方式,FaaS是按照請求次數及運行時間計費,最大程度利用了資源並降低了成本
-
簡化管理
- 自動化的彈性擴展、減小了打包和部署的復雜度、可以快速發布出去。
二、容器化的演變過程
-
傳統服務
-
在微服務和容器化還沒有盛行的時候,系統服務架構如下圖,這種單體架構的好處就是便於管理和初次部署,但是當后續產品規模越來越大時,壞處就體現出來了。
- 項目過於臃腫。大大小小的模塊都幾種在同一個項目中,開發者不易維護
- 資源無法隔離。如果其中一個模塊出現內存泄漏,整個系統都會被拖垮
- 無法靈活擴展。有時並不是產品的每個模塊都會提供對外訪問,訪問量大做集群負載時無法輕易水平擴展。
-

-
微服務
-
微服務是近幾年流行的一種架構思想,它提倡化整為零,將單一應用程序划分為一個一個的小服務,每個小服務運行在一個單獨的環境中,互不影響卻又能相互協調、相互配合達到化零為整的效果。微服務有以下特點:
- 獨立測試、部署、升級、發布。可以單獨只測試某一個模塊。
- 便於擴展。比如商品模塊訪問量比較大,一個節點扛不住,那就再弄一台服務器部署一個商品模塊,前端做LB。
- 提高了容錯,比如某個模塊出問題了,不會影響到其它模塊
- 提高了管理的復雜度。當你單個服務過多時,互相之間的調用就是問題,如果單個寫靜態配置文件的話對運維人員會是一個不小的挑戰。這時候就需要一個叫服務注冊中心的東西,每個單服務實例在啟動的時候,向注冊中心注冊自己的IP地址等信息,這樣別的服務調用它時,都會先去注冊中心查詢,然后根據查詢到的信息再去調用。比如訂單模塊之前調用的是支付模塊A,支付模塊A的服務掛了,那一定時間內注冊中心就會移除支付模塊A的注冊信息。訂單模塊連接不上原本的支付模塊A了,就會再次向注冊中心查詢有沒有其他的支付模塊。
- 客戶端調服務端都需要一個統一的入口,就是API Gateway。此處的客戶端是一個相對的說法,除去外部訪問,內部訪問A調用B,相對B來說A就是客戶端。API Gateway有身份驗證、請求分片、負載均衡等功能。個人理解有限,想深入了解的自行查資料。
-

-
容器化
-
容器概念的出現是要比微服務晚不少的,近幾年流行的docker,為微服務架構提供了有效的容器。資源的有效隔離是微服務的設計原則之一,而docker恰好可以實現。
- 一般情況下一個容器一個服務
- 容器的資源隔離(PID、IPC、UTS等)、限制(CPU、Mem等)。
- 可擴展性、可移植性。
-

三、容器編排工具
-
容器編排工具概念
- 當容器數量達到一定規模,就需要編排工具去管理,就是容器生命周期管理工具。容器編排工具提供調度和管理集群的技術,提供用於基於容器應用可擴展性的基本機制。這些工具使用容器服務,並編排他們以決定容器之間如何進行交互。 ---百度百科
-
容器編排工具的核心價值
- 准備和部署容器
- 容器的高可用和負載均衡
- 應用規模的自動擴縮容
- 底層硬件故障,能夠把容器遷移到其他節點上,用戶無感知。
- 容器資源分配
- 容器的注冊與自動發現
- 容器和宿主機的健康檢查
- 容器配置和存儲管理
-
容器編排工具種類
- Docker Swarm:docker自己的容器編排工具。
- Apache Mesos and Marathon:Mesos是一個數據中心的資源統一管控的工具,本身沒有編排容器的功能,需要和Marathon結合使用。后來Apache Mesos自己說不但支持Marathon也支持Kubernetes,且當時docker也說不但原生支持docker swarm也支持k8s。。。。。k8s的地位已經顯而易見了。
- Kubernetes: 壓軸滴啦,請看下篇文章k8s介紹。
寫作不易,轉載請注明出處,謝謝~~