《微服務架構設計模式》讀書筆記---第十二章:部署微服務應用

部署包含兩個相關聯的概念:流程和架構

部署流程包括一些由開發(fā)人員和運維人員執(zhí)行的步驟,以便將軟件投入到生產環(huán)境。
部署架構,定義了該軟件運行的環(huán)境結構。

四種部署選項:

  1. 使用編程語言特定的發(fā)布包格式部署服務,例如JAVA JAR或者WAR文件。
  2. 將服務部署為虛擬機,把服務打包為虛擬機鏡像
  3. 將服務部署為容器
  4. 使用Serverless部署模式部署服務。

使用編程語言特定的發(fā)布包格式部署服務

好處是快速高效;高效的利用資源,一臺機器上,可以運行多個實例

弊端是:

  1. 缺乏對技術棧的封裝,運維團隊需要了解每個服務的細節(jié),以準備對應的環(huán)境和web容器。
  2. 無法約束服務實例消耗的資源
  3. 同一臺服務器上運行多個服務實例,缺乏隔離

將服務部署為虛擬機

將作為虛擬機鏡像打包的服務部署到生產環(huán)境中,每個服務實例都是一個虛擬機。
好處:

  • 封裝了技術棧
  • 隔離的服務實例

弊端:

  • 資源利用率較低
  • 部署速度較慢。構建鏡像,從鏡像實例化虛擬機都比較耗時
  • 系統(tǒng)管理的額外開銷。需要負責更新鏡像的操作系統(tǒng)和運行時打補丁

將服務部署為容器

在構建時,部署流水線使用容器鏡像構建工具,該工具讀取服務代碼和鏡像描述,以創(chuàng)建容器鏡像并將其存儲在鏡像倉庫中。在運行時,從個景象倉庫中拉取容器鏡像,并用于創(chuàng)建容器。
好處是:

  • 封裝技術棧
  • 服務實例是隔離的。
  • 服務實例的資源收到限制

弊端,還是需要負責更新鏡像的操作系統(tǒng)和運行時打補丁

Serverless部署

之前的三種部署方式,

  1. 都會存在資源浪費的情況,例如即使處于閑置狀態(tài),也需要為容器和虛擬機付費
    2.需要負責系統(tǒng)管理,必須承擔操作系統(tǒng)和軟件打補丁的工作

Serverless提供一種受約束的編程模型,以換取最小化的系統(tǒng)管理開銷。如果需要更加精細化的管理基礎設施,那么就不要選擇Serverless
以AWS Lambda為例,只需要將應用程序打包為ZIP或者JAR文件,上載到AWS Lamdba,并指定相應請求的函數名稱。AWS Lambda會自動運行你的微服務實例來影響請求,只需要為所花費的時間和消耗的內存付費。

好處:

  • 消除系統(tǒng)管理任務
  • 彈性,不需要預測負載,而判斷實例數量。AWS Lamdba會幫忙處理。
  • 基于使用情況定價

弊端:

  • 長尾延遲。AWS需要花費時間來配置應用程序實例和啟動應用程序,可能導致某些請求具有高延遲。
  • 基于有限事件與請求的編程模型。不適應長時間運行的服務,例如消息代理服務。
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容