雲計算發展歷程


雲計算模型

雲計算的模型主要有三種。每種模型代表着雲計算堆棧的一個獨特部分。

AWS-Types-of-Cloud-Computing_Infrastructure-as-a-Service

基礎設施即服務 (IaaS)

基礎設施即服務有時縮寫為 IaaS,包含雲 IT 的基本構建塊,通常提供對聯網功能、計算機(虛擬或專用硬件)以及數據存儲空間的訪問。基礎設施即服務提供最高等級的靈活性和對 IT 資源的管理控制,其機制與現今眾多 IT 部門和開發人員所熟悉的現有 IT 資源最為接近。

AWS-Types-of-Cloud-Computing_Platform-as-a-Service

平台即服務 (PaaS):

平台即服務消除了組織對底層基礎設施(一般是硬件和操作系統)的管理需要,讓您可以將更多精力放在應用程序的部署和管理上面。這有助於提高效率,因為您不用操心資源購置、容量規划、軟件維護、補丁安裝或與應用程序運行有關的任何無差別的繁重工作。

AWS-Types-of-Cloud-Computing_Software-as-a-Service

軟件即服務 (SaaS)

軟件即服務提供了一種完善的產品,其運行和管理皆由服務提供商負責。人們通常所說的軟件即服務指的是終端用戶應用程序。使用 SaaS 產品時,服務的維護和底層基礎設施的管理都不用您操心,您只需要考慮怎樣使用 SaaS 軟件就可以了。SaaS 的常見應用是基於 Web 的電子郵件,在這種應用場景中,您可以收發電子郵件而不用管理電子郵件產品的功能添加,也不需要維護電子郵件程序運行所在的服務器和操作系統。

 

容器既服務(CaaS)

容器既服務提供了一種完整的產品,其運行和管理皆由服務提供商負責。

 

函數及服務(FaaS)

函數既服務提供了一種完整的產品,其運行和管理皆由服務提供商負責。只需要前端用戶寫好邏輯調用函數,由后台來執行相應的工作如硬件部署,日志 數據庫等都由內部自動調用注銷,從而減少運維和后台來提升產品效率。

 

后端即服務 BaaS

后端即服務 BaaS,其實大家已經使用很久了,這里的后端,指的就是各種雲產品和雲服務,例如對象存儲COS,消息隊列CMQ,雲數據庫CDB、TDSQL,雲緩存CRedis、CMemcached,甚至到各種以 API 形式提供的服務如萬象優圖 CI,視頻處理 VC。這些產品或服務,用戶直接開通即可使用,無需考慮部署、擴容、備份、優化、安全等各種運維工作,做到了開箱即用,無需自己去進行服務器或應用的維護和管理,因此同樣也是Serverless的一部分。

 

serverless到底是個什么鬼

本篇由來


如果你是一個程序員,你可能在最近這兩年或多或少的聽到過一堆莫名其妙的名詞,例如CaaS、BaaS、FaaS等類似的以aaS結尾的as-a-service名詞,同時也可能聽到ServiceMesh、Serverless等名詞,對於從事相關工作的同學可能知道每個名詞都代表什么,但我相信肯定還是會有部分人聽到之后是黑人問號臉,我們不具體介紹每個都是什么意思,因為這些概念也出現很早了已經,不明白的可以自行google,這里我們重點聊一下最近挺火的Serverless是個什么鬼,因為我發現我們在日常探討過程中好像每個人對其理解不一樣,也是在聽完一次討論之后有感而發,並不是在抱怨什么,只是想跟大家探討一下到底什么是Serverless,在繼續開展后續工作之前,我認為有必要再統一一下概念,不談細節,也不扯什么性能,那都是可以優化的,不是不可逾越的障礙。


什么是Serverless


要說Serverless是什么,直譯過來就是無服務器。根據 CNCF 的定義,Serverless 是指構建和運行不需要服務器管理的應用程序的概念。CloudFlare對其定義:
Serverless computing is a method of providing backend services on an as-used basis. A Serverless provider allows users to write and deploy code without the hassle of worrying about the underlying infrastructure. A company that gets backend services from a serverless vendor is charged based on their computation and do not have to reserve and pay for a fixed amount of bandwidth or number of servers, as the service is auto-scaling. Note that although called serverless, physical servers are still used but developers do not need to be aware of them.

google翻譯結果:
無服務器計算是一種按需提供后端服務的方法。無服務器提供程序允許用戶編寫和部署代碼,而不必擔心底層基礎結構。從無服務器供應商處獲得后端服務的公司將根據其計算費用,而不必保留和支付固定數量的帶寬或服務器數量,因為該服務是自動擴展的。請注意,盡管稱為無服務器,但仍使用物理服務器,但開發人員無需了解它們。


Serverless == FaaS?


在我們討論Serverless的時候,經常能聽到FaaS、事件觸發之類的詞組,但是為啥從官方的定義中絲毫沒有看到這些字樣呢?FaaS又和Serverless有什么關系呢?


其實這一塊業界也沒有統一的定義,但是普遍認為Serverless = FaaS + BaaS,可以參考這篇這篇介紹的內容,通俗的理解一下就是無服務期計算相當於函數計算和后端即服務兩種模式的組合,也是就說Serverless和FaaS不是一個概念,這個很重要,這是我們后續討論和做事情的基礎,我們不能簡單的認為Serverless就是FaaS,這種理解太狹隘了。可以舉個栗子來描述一下為什么這么說,例如已經被大家玩爛了的hello world,當我們寫了一段hello world的代碼並填寫完訪問規則后就可以通過FaaS平台部署,然后當我們訪問指定Url后可以得到運行結果,典型的函數即服務。但是,又有誰會真正這么用呢,可以說沒有任何作用,這只是個單純的例子(在aws lambda上玩過這個例子的就敢號稱使用過serverless產品),在最早的aws lambda官方推薦的使用場景里也都是和其他服務如S3搭配使用。畢竟每個業務都有自己的業務邏輯,或多或少都會涉及到一些基礎組件的依賴或者第三方服務的調用(硬要抬杠的話,其實直接把依賴項都打包到一個程序里也不是不可以,但是這么做的人估計也不會用FaaS這種東西),很少或者不會有hello world這種自嗨式的場景,執行完什么記錄都沒有,單純打印一下內容就返回的,除非在測試環境或者線下自己玩。而那些被使用的基礎組件或服務就是BaaS。說了這么多到底是想說什么呢,其實就是想表達Serverless不等價於FaaS。

關於Serverless許多時髦的詞兒都來自FaaS。拋開部署模式,FaaS本質上是事件驅動的途徑或者事件流,這就包含兩層意思,一層是事件,說到事件,自然聯想到各種MQ組件,用MQ來解耦事件的生產者(事件源)和消費者(服務實例或者function),以及一些相關事件類型、觸發規則、通知等概念,在這一點上確實和消息中間件有很大關系;另一層是驅動,也就是說是有流量屬性的,MQ里的事件要被消費肯定是要經過網絡傳給消費者的。看起來就是一個用消息隊列來解耦生產者消費者的通用模型,根據事先配置好的觸發規則拿到想要的事件,執行預先寫好的函數。他的關注點在於對用戶屏蔽服務器,用戶只需要告訴平台觸發條件及觸發后的邏輯即可,極大的減輕用戶的工作量,提升開發效率。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM