1. 程式人生 > >微服務與Docker介紹

微服務與Docker介紹

什麼是微服務

微服務應用的一個最大的優點是,它們往往比傳統的應用程式更有效地利用計算資源。這是因為它們通過擴充套件元件來處理功能瓶頸問題。這樣一來,開發人員只需要為額外的元件部署計算資源,而不需要部署一個完整的應用程式的全新迭代。最終的結果是有更多的資源可以提供給其它任務。

• 一種軟體架構模式
• 複雜應用解耦為小而眾的服務
• 各服務精而專
• 服務間通訊通過API完成

image

微服務應用程式的另一個好處是,它們更快且更容易更新。當開發者對一個傳統的單體應用程式進行變更時,他們必須做詳細的QA測試,以確保變更不會影響其他特性或功能。但有了微服務,開發者可以更新應用程式的單個元件,而不會影響其他的部分。測試微服務應用程式仍然是必需的,但它更容易識別和隔離問題,從而加快開發速度並支援DevOps和持續應用程式開發。

第三個好處是,微服務架構有助於新興的雲服務,如事件驅動計算。類似AWS Lambda這樣的功能讓開發人員能夠編寫程式碼處於休眠狀態,直到應用程式事件觸發。事件處理時才需要使用計算資源,而企業只需要為每次事件,而不是固定數目的計算例項支付。

擴充套件立方模型(Scale  Cube)

cube

Y軸 功能解耦 通過分解 不同模組擴充套件
X軸 水平副本 通過副本擴充套件
Z軸 資料分割槽 通過分解 相似內容擴充套件

Docker是什麼

Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何介面(類似 iPhone 的 app)。幾乎沒有效能開銷,可以很容易地在機器和資料中心中執行。最重要的是,他們不依賴於任何語言、框架包括系統。

image

Docker包含兩方面技術

-映象技術 
打破“程式碼即應用”的觀念
從系統環境開始,自底至上打包應用

image

image

微服務和Docker

Dev
開發簡單有效的模組       
配置是一個執行時的限制    
不再是異常複雜的應用   
new    WebServer().start(8080);
   
Ops
管理硬體設施
監控&反饋   
不是應用的執行細節    


結合擴充套件立方(Scale   Cube)

image

Docker化實踐

本質:程序隔離,資源管理

• App-Centric的體現
• Single-Process的真實含義

image

Docker化實踐——程序隔離

image

Dockerfile、Docker映象與Docker容器

image

容器內技術棧:
1.單程序理念
2.不存在傳統的init程序(全域性PID=1)
——dockerinit與init程序的區別
3.缺少基本的服務程序
——cron
——rsyslogd等
4.與核心程序通訊能力薄弱(ipc名稱空間隔離)
 
導致遺留系統Docker化存在壓力。 重構?非重構下的最佳實踐?

Docker化實踐——日誌管理


原理:stdout&stderr

傳統模式:
      -stdout&stderr   
      -磁碟日誌檔案
      -日誌伺服器
日誌持久化磁碟的弊端
      -移植性
      -部署複雜度
日誌Docker層面管理
      -json-file    
      -syslog(並非應用呼叫syslog)
      -fluetd

image

以syslog為例
image

Docker化實踐——日誌管理

image

Docker化實踐——配置管理

傳統方式:配置檔案
• Docker容器的無狀態
• 配置檔案的狀態性
• Docker容器依賴配置檔案
• 額外的配置管理需求
• 非自動化
• 非標準化

• 沿用傳統模式——配置檔案
——使用掛載volume的方式
——配置檔案與宿主機耦合

• 採用環境變數方式
——打包配置進入Docker映象
——打包配置進入Docker容器
——完美支援編排工具compose
 
• 環境變數與配置檔案共存
——修改Docker映象執行入口
——使用環境變數替換配置檔案

如有想了解更多軟體設計與架構,系統 IT,企業資訊化 資訊,請關注我的微信訂閱號:

MegadotnetMicroMsg_thumb1_thumb1_thu[2]


作者:Petter Liu
出處:http://www.cnblogs.com/wintersun/
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。
該文章也同時釋出在我的獨立部落格中-Petter Liu Blog