Serverless 架構(gòu)演進(jìn)
Serverless架構(gòu)風(fēng)格挑戰(zhàn)了軟件設(shè)計和軟件部署基礎(chǔ)的現(xiàn)狀,以實現(xiàn)最佳開發(fā)、最優(yōu)運(yùn)營和最優(yōu)的管理開銷。雖然它繼承了微服務(wù)架構(gòu)MSA的基本概念,但它已被賦予了新的架構(gòu)模式,盡可能實現(xiàn)最高效的硬件利用。
盡管Serverless架構(gòu)有顯著的進(jìn)步,但適應(yīng)這種架構(gòu)需要一個周全的過程,把企業(yè)解決方案精確映射到Serverless架構(gòu)上。
部署在物理服務(wù)器上的軟件系統(tǒng),其初始實現(xiàn)不能最佳地利用底層硬件的計算能力,因為在給定時間內(nèi)只能有一個操作系統(tǒng)實例運(yùn)行。隨后的改造中,在計算資源中識別時間共享能力之后,多個虛擬計算機(jī)能夠通過在它們之間切換CPU和I/O操作從而實現(xiàn)在相同硬件上的同時運(yùn)行。
這種技術(shù)演進(jìn)導(dǎo)致了行業(yè)中的許多創(chuàng)新,最重要的是云的誕生。此時,虛擬機(jī)是用于部署軟件的隔離計算環(huán)境中最易于管理的、可擴(kuò)展的和可編程的單元。Linux容器技術(shù)出現(xiàn)在2006年左右,當(dāng)時Google實現(xiàn)了符合Linux內(nèi)核特性的控制組。
Linux容器自那時以來一直存在。然而,只有規(guī)模大、技術(shù)上超越的企業(yè),比如谷歌,才能夠規(guī)模化的使用它。到2012年,在歐洲,一個軟件架構(gòu)師討論組引入了微服務(wù)架構(gòu)的概念。在2013年晚些時候,Docker巧妙地填補(bǔ)了容器生態(tài)系統(tǒng)中的可訪問性、可用性和支持服務(wù)的空白,因此,容器開始變得流行起來。
Linux容器打開了一個新的視野,將大型單片系統(tǒng)分解成獨(dú)立的自包含服務(wù),并以細(xì)粒度的資源利用來執(zhí)行它們。為了加快這些進(jìn)展,容器集群管理系統(tǒng)(如Kubernetes和Mesosphere)在同一時期開始提供端到端的容器即服務(wù)(CaaS)的能力。
到2015年晚些時候,AWS通過引入AWS Lambda實現(xiàn)了另一個飛躍,它可以通過按需運(yùn)行微服務(wù)進(jìn)一步節(jié)省軟件部署成本,并在無負(fù)載時自動停止。這種概念類似于節(jié)能車輛中的停止-啟動的特性,其自動關(guān)閉內(nèi)燃機(jī)以降低燃料消耗。
它是如何工作的?
盡管術(shù)語“Serverless”乍一看是荒謬的,但其實際的意義在于,部署軟件無需涉及基礎(chǔ)設(shè)施的建設(shè)。Serverless平臺可以根據(jù)需要自動構(gòu)建、部署和啟動服務(wù)的整個過程。用戶只需注冊所需的業(yè)務(wù)功能及其資源需求。
顯然,這樣的功能可以分為兩種主要類型:由客戶端請求觸發(fā)的功能,和需要通過時間觸發(fā)器或事件觸發(fā)的后臺執(zhí)行的功能。
通常,這種Serverless系統(tǒng)可以使用具有動態(tài)路由器的容器集群管理器(CCM)來實現(xiàn),該動態(tài)路由器可以按需調(diào)整容器。然而,還需要考慮路由器的延遲、容器的創(chuàng)建時間、語言支持、協(xié)議支持、功能接口、函數(shù)初始化時間、配置參數(shù)的傳遞、提供證書文件等。
盡管這種部署方式要求在沒有負(fù)載時停止容器,但實際上在服務(wù)請求之后很快就停止容器,這種開銷也將是昂貴的,因為在短時間間隔內(nèi)可能有更多的請求進(jìn)入。因此,更通常的做法是,在Serverless計算容器中將保留預(yù)先配置的時間段以便能重用于對服務(wù)的更多請求。這類似于PaaS平臺中的自動縮放行為。一旦服務(wù)被擴(kuò)展了,實例將被保留一段時間以便能及時處理更多的請求,而不會立即終止它們。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
原文鏈接:http://blog.csdn.net/chszs/article/details/60466183