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方法,接着作些其它工做。

相关文章
相关标签/搜索