看了本文,再也不愁何時實施無服務器,何時實施容器了!
虛擬機、容器和無服務器架構都有明顯的優缺點,但如果應用程序不適合無服務器計算,這種部署架構可能會破壞一切。為了防止IT出現災難,就要讓開發人員對無服務器與容器進行合理的評估,以便從中選擇一種來部署新的應用程序。
想確定容器或無服務器計算哪個適合,就要比較每一種架構的功能、它將托管的應用程序的用戶群以及成功部署所需的要素。
雖然虛擬機不在本文討論范圍之內,卻是IT部門中最常使用、最廣人為知的應用程序托管架構。它是最普遍的基礎設施抽象方法,不過缺點是很復雜和資源開銷大。本文主要比較無服務器計劃與容器,前者完全抽取資源,后者是操作系統上一個輕量、快速的隔離層。
應用程序需要什么?
無服務器云計算的經濟效益在于,企業只需要在應用程序運行時為計算資源和應用程序的執行時段付費,空閑時段無需付費。無服務器最適合必須總是準備好,但不總是在運行的應用程序和組件。
圖1:亞馬遜網絡服務(AWS)上的無服務器計算架構顯示了無服務器如何將應用程序與支持它們的硬件隔離開來
比如說,濕度傳感器表明土壤干燥、需要澆水時,物聯網農業應用程序生成事件。這種傳統部署環境中的應用程序可能在下雨的天氣中處于空閑狀態,等待被激活,耗用不必要的資源。而容器系統可以減少應用程序消耗的資源數量,但無服務器計算可以在空閑期間消除資源。應用程序空閑的時間越長,無服務器的優點就越大。是不是很簡單?
與往常一樣,實際情況要來得復雜。無服務器架構的好處包括,可以在幾毫秒內讓這個示例物聯網應用程序準備好,而不是像容器化系統那樣需要幾十秒,但容器化部署比較長的啟動時間不太可能影響物聯網應用程序實現其用途的能力。并不是空閑時間多于活動時間的每個應用程序都適合無服務器。無服務器系統邏輯不僅費用比容器系統來得高,而且技術上也不同。
無服務器vs容器技術
如果你深入研究無服務器的細節時,會發現如下術語:
- 微服務:應用程序分解為多個更小、可獨立擴展和部署的組件;
- 函數計算:負責托管的云按需執行應用程序函數,函數作為一項服務;
- lambda函數:這種匿名C++函數轉換傳遞給它們的數據集合,然后生成新的集合;
- 無狀態:不使用或不需要來自之前使用事件的數據的應用程序。
無服務器云計算旨在實現與上下文無關的處理,面向無狀態應用程序。當無服務器應用程序被事件激活后,它們從根本不記得過去的代碼副本開始,依賴之前出現的事件或請求的任何事件都是有狀態的。如果你啟動第二個無服務器架構副本來處理更多的工作,這第二個副本就不會自動知道第一個副本一直在做什么。
可以通過客戶端或后端狀態控制,讓有狀態應用程序在無服務器部署中環境運行,但這必須寫入到應用程序的代碼中。這種選擇可能不會存在于第三方軟件中。即使某企業的應用程序是內部編寫的,想在無服務器部署環境中實現有狀態行為也需要可能復雜而昂貴的更改。
圖2:Docker容器托管模式將應用程序代碼從底層的硬件資源中抽取出來
容器可以運行幾乎任何應用程序或應用程序組件,無需對代碼進行重大更改。而無服務器做不到這點。大多數業務應用程序執行事務處理,其中一個或多個數據庫被更新,這給無狀態行為提出了更艱巨的挑戰。事務處理應用程序無狀態會導致事務沖突:針對庫存或賬戶余額的兩個查詢獨立報告銷售或取款,結果卻發生沖突,導致余額在零以下。企業可以結合無狀態行為和事務行為,重新設計或改造應用程序,但這是個復雜的過程,需要經驗和大量工作。容器則沒有這個要求。
連接到現實
開發人員將無服務器與容器視作哪個最適合應用程序的問題,但他們也要權衡每種方案的部署問題。容器網絡是顯式的,基于IP子網絡,這是最常見的應用程序部署模式。容器系統在應用程序中使用專有的IP地址空間,但管理員可以選擇性地公開組件地址,向虛擬專用網絡或互聯網上的用戶或其他應用程序提供服務。如果使用無服務器計算,負載均衡和網絡尋址以及其他操作方面由無服務器云框架處理,你可能需要采取特殊步驟,將無服務器組件與托管在數據中心中較傳統的云上的應用程序組件集成起來。
容器需要一個長期的托管位置,而無服務器不需要。容器可以支持廣泛的社區訪問應用程序和服務,響應時間良好,但前提是你在每個地理區域都部署副本。這種部署模式可以劃分工作,在各應用程序副本之間創建更多的閑置時間,從而增加成本。相比之下,只要有可用資源,無服務器應用程序就可以在任何地方運行工作負載的任意數量的副本。
如何托管微服務?
微服務是可以獨自共享和擴展的分布式應用程序代碼的獨立式組件,適合部署在容器中和無服務器云上。差異化因素歸結為你有哪種類型的微服務。由于微服務是無狀態的,因此適合無服務器部署。但是,微服務常常是多個應用程序共享的通用組件。當微服務被組合到幾個不同的應用程序中時,容器托管是比無服務器更好的一種部署選擇。由于按需部署無服務器組件的請求,無服務器微服務經常使用的話,會導致應用程序的響應時間大幅延長。
無服務器會不斷發展,但無服務器與容器在技術和成本管理這兩個層面都有明顯差異。在某些情況下,這些差異會讓企業選擇一個、而不是另一個來得很容易;而在另一些情況下,應用程序規劃人員必須采用混合模式,盡管這增加了一點復雜性。畢竟不存在一應俱全式的方案。
責任編輯:售電衡衡
-
碳中和戰略|趙英民副部長致辭全文
2020-10-19碳中和,碳排放,趙英民 -
兩部門:推廣不停電作業技術 減少停電時間和停電次數
2020-09-28獲得電力,供電可靠性,供電企業 -
國家發改委、國家能源局:推廣不停電作業技術 減少停電時間和停電次數
2020-09-28獲得電力,供電可靠性,供電企業
-
碳中和戰略|趙英民副部長致辭全文
2020-10-19碳中和,碳排放,趙英民 -
深度報告 | 基于分類監管與當量協同的碳市場框架設計方案
2020-07-21碳市場,碳排放,碳交易 -
碳市場讓重慶能源轉型與經濟發展并進
2020-07-21碳市場,碳排放,重慶
-
兩部門:推廣不停電作業技術 減少停電時間和停電次數
2020-09-28獲得電力,供電可靠性,供電企業 -
國家發改委、國家能源局:推廣不停電作業技術 減少停電時間和停電次數
2020-09-28獲得電力,供電可靠性,供電企業 -
2020年二季度福建省統調燃煤電廠節能減排信息披露
2020-07-21火電環保,燃煤電廠,超低排放
-
四川“專線供電”身陷違法困境
2019-12-16專線供電 -
我國能源替代規范法律問題研究(上)
2019-10-31能源替代規范法律 -
區域鏈結構對于數據中心有什么影響?這個影響是好是壞呢!