Injection Container

容器是什麼?

    容器是一種輕量級操做系統層面的虛擬機,它爲應用軟件及其依賴組件提供了一個資源獨立的運行環境。應用軟件所依賴的組件會被打包成一個可重用的鏡像,鏡像運行環境並不會與主操做系統共享內存、CPU和硬盤空間,由此也保證了容器內部的進程與容器外部進程的獨立關係。java

對於開發人員,須要引入複雜的代碼解決事務以及狀態管理問題,處理多線程、資源的調度等底層細節,不少業務邏輯能夠封裝在可重用的組件當中去,此外,Java EE爲每一種組件都提供了基於容器的底層服務。容器就是組件和底層服務細節之間的接口。使用java ee能夠在容器的幫助下,解放雙手去專一於解決其餘問題。web

 

Java EE Server and Containers:docker

Java EE server:Java EE產品運行中的一部分,Java EE server 提供EJB和web容器小程序

EJB container:管理企業beans和Java EE應用的執行,企業beans和Java EE容器在Java EE server上運行瀏覽器

Web container:管理web頁面、小程序和一些Java EE程序的EJB組件的執行,web容器及其組件運行在Java EE Server上安全

Application client container:管理應用客戶端組件的執行,應用程序客戶端和它們的組件運行在客戶端上多線程

Applet container:管理小程序的執行,由一個Web瀏覽器和一個Java插件組成,一塊兒運行在客戶機上網站

 

Java EE的上下文和依賴注入定義了一組相關服務,由Java EE容器支持,方便開發人員在Web應用程序上使用企業Beans和Java Server Faces技術。spa

容器技術的特色

  • \1. 極其輕量:只打包了必要的Bin/Lib;
  • \2. 秒級部署:根據鏡像的不一樣,容器的部署大概在毫秒與秒之間(比虛擬機強不少);
  • \3. 易於移植:一次構建,隨處部署;
  • \4. 彈性伸縮:Kubernetes、Swam、Mesos這類開源、方便、好使的容器管理平臺有着很是強大的彈性管理能力。

容器的標準化

      當前,docker幾乎是容器的代名詞,不少人覺得docker就是容器。其實,這是錯誤的認識,除了docker 還有coreos。因此,容器世界裏並非只有docker一家。既然不是一家就很容易出現分歧。任何技術出現都須要一個標準來規範它,否則各搞各的很容易致使技術實現的碎片化,出現大量的衝突和冗餘。所以,在2015年,由Google,Docker、CoreOS、IBM、微軟、紅帽等廠商聯合發起的OCI(Open Container Initiative)組織成立了,並於2016年4月推出了第一個開放容器標準。標準主要包括runtime運行時標準和image鏡像標準。標準的推出,有助於替成長中市場帶來穩定性,讓企業能放心採用容器技術,用戶在打包、部署應用程序後,能夠自由選擇不一樣的容器Runtime;同時,鏡像打包、創建、認證、部署、命名也都能按照統一的規範來作。操作系統

兩種標準主要包含如下內容:

  1. 容器運行時標準 (runtime spec)

            a). creating:使用 create 命令建立容器,這個過程稱爲建立中

            b). created:容器建立出來,可是尚未運行,表示鏡像和配置沒有錯誤,容器可以運行在當前平臺

            c). running:容器的運行狀態,裏面的進程處於 up 狀態,正在執行用戶設定的任務

            d). stopped:容器運行完成,或者運行出錯,或者 stop 命令以後,容器處於暫停狀態。這個狀態,容器還有不少信息保存在平臺中,並無徹底被刪除

         2.容器鏡像標準(image spec)

            a). 文件系統:以 layer 保存的文件系統,每一個 layer 保存了和上層之間變化的部分,layer 應該保存哪些文件,怎麼表示增長、修改和刪除的文件等;

            b). config 文件:保存了文件系統的層級信息(每一個層級的 hash 值,以及歷史信息),以及容器運行時須要的一些信息(好比環境變量、工做目錄、命令參數、mount 列表),指定了鏡像在某個特定平臺和系統的配置。比較接近咱們使用 docker inspect。

容器技術的發展示狀

     容器技術主要能夠分爲容器運行技術和容器編排技術。其中:容器運行技術主要包括Docker和rkt等;容器編排技術主要包括Kubernetes、Mesos和Swarm等。

     歷經5年發展,Docker公司揭露了今年最新的Docker年度數據報告,從2013年3月PyCon大會上,Docker首度亮相以後,至今在Docker上的容器鏡像下載次數已經超過了370億次,容器化的應用有高達350萬個,目前在LinkedIn網站上的Docker相關職缺也有15,000個。全球活躍的Docker使用者社羣已有200多個,包括臺灣也有。全球使用企業版Docker EE的企業顧客目前則約有450家。

    而過去一年,Docker功能的進展很少,主要有擁抱Kubernetes,在Docker產品中能夠和Swarm並用。其次最重要的新功能是增長了RBAC角色存取控管機制,這也是企業最想要的安全機制。

Injection 

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

相關文章
相關標籤/搜索