前不久參加了深圳的Azure開源者峯會,會上張善友張老師推薦了微軟的一個架構網站:.NET Application Architecture服務器
這幾天正好工做比較閒,看了下里面關於微服務架構的介紹,很是詳盡。架構
因而順帶翻譯了一下,方便後來人和之後回顧。微服務
容器化是軟件開發的一種方法,它能夠將應用程序或服務,其依賴性及其配置(好比部署時的配置文件)做爲容器鏡像打包在一塊兒。 容器化應用程序能夠做爲一個單元進行測試,並做爲容器鏡像實例部署到宿主操做系統(OS)。測試
就像集裝箱能夠經過船隻,火車或者卡車來運輸貨物,卻不用關心貨物是什麼。容器充當一個能夠包含不一樣代碼與依賴的軟件的標準單位。經過這種方式容器化軟件可讓開發者或者IT從業人員在不修改或者幾乎不修改環境的狀況下部署軟件。網站
容器還能夠用於在共享的操做系統上將應用程序彼此隔離開來。 容器化應用程序運行在容器宿主之上,容器宿主又在操做系統(Linux或Windows)上運行。 所以,容器的佔用空間遠小於虛擬機(VM)鏡像。操作系統
每一個容器均可以運行一個完整的Web應用或者服務,以下圖所示。在這個例子裏,Docker宿主是一個容器宿主,App1,App2,Svc1和Svc2都是容器化的應用或服務。翻譯
(多個容器運行在一個容器宿主中)blog
容器化的另外一個好處是可擴展性。你能夠爲短時間任務建立一個新容器來快速擴展。從應用的角度看,初始化一個鏡像(建立一個容器)相似於起一個Web應用或服務的進程。可是爲了可靠性,當你在多個宿主服務器上面運行同一個鏡像的多個實例時,一般須要每一個容器(鏡像實例)運行在不一樣的宿主服務器或在不一樣容錯域的VM中。生命週期
簡而言之,容器在整個應用程序工做流的生命週期中提供了隔離性,可移植性,靈活性,可擴展性和可控性的優勢。 最重要的有點是隔離了Dev(開發)和Ops(運營)。進程