Injection Container

容器是什么?

    容器是一种轻量级操作系统层面的虚拟机,它为应用软件及其依赖组件提供了一个资源独立的运行环境。应用软件所依赖的组件会被打包成一个可重用的镜像,镜像运行环境并不会与主操作系统共享内存、CPU和硬盘空间,由此也保证了容器内部的进程与容器外部进程的独立关系。

对于开发人员,需要引入复杂的代码解决事务以及状态管理问题,处理多线程、资源的调度等底层细节,很多业务逻辑可以封装在可重用的组件当中去,此外,Java EE为每一种组件都提供了基于容器的底层服务。容器就是组件和底层服务细节之间的接口。使用java ee可以在容器的帮助下,解放双手去专注于解决其他问题。

Java EE Server and Containers:

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技术。

容器技术的特点

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

猜你喜欢

转载自www.cnblogs.com/dashuaiB/p/10724494.html
今日推荐