容器優勢
1、可移植性:使用容器,開發人員可以確保他們的應用程序可以在任何雲平臺或本地服務器上運行。
2、輕量化:容器鏡像以層疊加,在本地擁有鏡像層緩存;計算資源使用方面,容器也比虛擬機更高效。
3、快速啓動:容器啓動在鏡像只讀層上疊加一層讀寫層,啓動快速。
缺點:
1、有狀態的程序擴展伸縮複雜
2、容器集羣編排的網絡、存儲性能有一定損耗
無服務器計算
serverless:整個應用程序或應用程序的一部分被解耦爲多個函數,每個函數都響應諸如
HTTP請求、
新消息到達消息隊列、
或在存儲中保存或修改新對象等時間觸發的。
平臺可以在特定的時間或週期運行這些函數,這對cron jobs(定時任務)很有幫助。
優點:
1、開發邏輯簡單:開發人員只需編寫功能代碼,並將其及其依賴項打包到zip文件中發送到服務器端點,由提供商負責供應和擴展。
2、按需付費:僅按函數的實際執行時間付費。
3、無狀態性,自動伸縮。
缺點:
使用無服務器方法不容易實現可觀察性、監視和調試。由於應用程序可以被分散到多個部分,而每個部分都有自己的 bug 和錯誤,所以控制和查看全局變得非常重要。
目前還沒有一個統一的平臺架構和事件網關標準。(類似之前容器編排kubernetes和mesos之爭,現在還有很多serverless框架百花齊放)
容器和無服務器共同之處
1、使開發人員專注代碼而不是基礎設施。
2、都適合微服務架構和基於組件的體系結構,部署和擴展比傳統單體應用更快。
容器的用例
容器適合於長時間運行的應用程序,以及具有特定系統需求的應用程序。
不適用於強烈注重於性能(cpu、內存、網絡IO,存儲IO)的重負載應用(例如,大數據存儲組件)
無服務器的用例
serverless的事件驅動特性使得它對於不總是需要運行的應用程序(或其部分)非常有用。
serverless大部分與微服務類似,都是講整體拆分一個個組件,不過微服務架構的服務一直處於運行中,即使它不被調用。