1. 程式人生 > >Analysis of container and Injection in Java, their history and future.

Analysis of container and Injection in Java, their history and future.

目前 前景 傳統 都是 groups 輕量 測試 用戶組 支持

Container:

發展歷程:

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

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 虛擬機

未來趨勢:

我認為container技術目前已經發展的相對成熟了,它和服務器虛擬化都屬於虛擬化的技術,且目標都是為了將一套應用程序所需的執行環境打包起來,建立一個孤立環境,方便在不同的硬件中移動,但為什麽我認為container技術發展會更有前景。簡單來說,常見的傳統虛擬化技術如 vSphere 或 Hyper-V 是以操作系統為中心,而 Container 技術則是一種以應用程序為中心的虛擬化技術。最明顯的差別是虛擬機需要安裝操作系統(安裝 Guest OS)才能執行應用程序,而 Container 內不需要安裝操作系統就能執行應用程序。container簡化了應用在開發測試部署環節的復雜度,相比虛擬機資源開銷更小,起停速度更快,且container推出輕量級組件化的架構,為互聯網應用提供更好的彈性。

injection:

javava EE CDI主要使用@Inject批註,以便將托管bean的依賴註入執行到其他容器托管資源。使用依賴註入的思想是應用程序用到Foo類,Foo類需要Bar類,Bar類需要Bim類,那麽先創建Bim類,再創建Bar類並把Bim註入,再創建Foo類,並把Bar類註入,再調用Foo方法,Foo調用Bar方法,接著做些其它工作。

Analysis of container and Injection in Java, their history and future.