Container和Injection

 

1.容器(container)的歷史html

容器(container)概念始於 1979 年提出的 UNIX chroot,它是一個 UNIX 操做系統的系統調用,將一個進程及其子進程的根目錄改變到文件系統中的一個新位置,讓這些進程只能訪問到這個新的位置,從而達到了進程隔離的目的。java

2000 年的時候 FreeBSD 開發了一個相似於 chroot 的容器技術 Jails,這是最先期,也是功能最多的容器技術。Jails 英譯過來是監獄的意思,這個「監獄」(用沙盒更爲準確)包含了文件系統、用戶、網絡、進程等的隔離。linux

2001 Linux 也發佈本身的容器技術 Linux VServer,2004 Solaris 也發佈了 Solaris Containers,二者都將資源進行劃分,造成一個個 zones,又叫作虛擬服務器。安全

2005 年推出 OpenVZ,它經過對 Linux 內核進行補丁來提供虛擬化的支持,每一個 OpenVZ 容器完整支持了文件系統、用戶及用戶組、進程、網絡、設備和 IPC 對象的隔離。服務器

2007 年 Google 實現了 Control Groups( cgroups ),並加入到 Linux 內核中,這是劃時代的,爲後期容器的資源配額提供了技術保障。網絡

2008 年基於 cgroups 和 linux namespace 推出了第一個最爲完善的 Linux 容器 LXC。分佈式

2013 年推出到如今爲止最爲流行和使用最普遍的容器 Docker,相比其餘早期的容器技術,Docker 引入了一整套容器管理的生態系統,包括分層的鏡像模型,容器註冊庫,友好的 Rest API。微服務

2014 年 CoreOS 也推出了一個相似於 Docker 的容器 Rocket,CoreOS 一個更加輕量級的 Linux 操做系統,在安全性上比 Docker 更嚴格。工具

2016 年微軟也在 Windows 上提供了容器的支持,Docker 能夠以原生方式運行在 Windows 上,而不是須要使用 Linux 虛擬機。spa

基本上到這個時間節點,容器技術就已經很成熟了,再日後就是容器雲的發展,由此也衍生出多種容器雲的平臺管理技術,其中以 kubernetes 最爲出衆,有了這樣一些細粒度的容器集羣管理技術,也爲微服務的發展奠基了基石。所以,對於將來來講,應用的微服務化是一個較大的趨勢。

爲何須要容器

其一,這是技術演進的一種創新結果,其二,這是人們追求高效生產活動的一種工具。

隨着軟件開發的發展,相比於早期的集中式應用部署方式,如今的應用基本都是採用分佈式的部署方式,一個應用可能包含多種服務或多個模塊,所以多種服務可能部署在多種環境中,如虛擬服務器、公有云、私有云等,因爲多種服務之間存在一些依賴關係,因此可能存在應用在運行過程當中的動態遷移問題,那這時如何保證不一樣服務在不一樣環境中都能平滑的適配,不須要根據環境的不一樣而去進行相應的定製,就顯得尤其重要。

就像貨物的運輸問題同樣,如何將不一樣的貨物放在不一樣的運輸機器上,減小因貨物的不一樣而頻繁進行貨物的裝載和卸載,浪費大量的人力物力。

爲此人們發明了集裝箱,將貨物根據尺寸形狀等的不一樣,用不一樣規格的集裝箱裝載,而後再放到運輸機上運輸,因爲集裝箱密封,只有貨物到達目的地才需拆封,在運輸過程可以再不一樣運輸機上平滑過渡,因此避免了資源的浪費。

 

Injection

 

javava EE CDI主要使用@Inject批註,以便將託管bean的依賴注入執行到其餘容器託管資源。

 

 

 

 

 

 

 

 

 

原文:http://www.bubuko.com/infodetail-2980056.html

相關文章
相關標籤/搜索