Container、Injection

Container:

  容器技术是Linux Container的直译。Container有集装箱、容器的含义。集装箱的特色,在于格式划一,并且可以层层重叠,所以可以大量放置在特别设计的远洋轮船中,这样大大提高了输出效率,有了集装箱,就可以更快恶的为生产商提供廉价的运输服务。

  Linux Container容器技术的诞生(2008年)就解决了IT世界里“集装箱运输”的问题。Linux Container(简称LXC)它是一种内核轻量级的操作系统层虚拟化技术。Linux Container主要由Namespace和Cgroup两大机制来保证实现。那么Namespace和Cgroup是什么呢?刚才我们上面提到了集装箱,集装箱的作用当然是可以对货物进行打包隔离了,不让A公司的货跟B公司的货混在一起,不然卸货就分不清楚了。那么Namespace也是一样的作用,做隔离。光有隔离还没用,我们还需要对货物进行资源的管理。同样的,航运码头也有这样的管理机制:货物用什么样规格大小的集装箱,货物用多少个集装箱,货物哪些优先运走,遇到极端天气怎么暂停运输服务怎么改航道等等... 通用的,与此对应的Cgroup就负责资源管理控制作用,比如进程组使用CPU/MEM的限制,进程组的优先级控制,进程组的挂起和恢复等等。

 

Java容器: 

  相似的,docker容器中如果装的是app,java容器中装载的就是组件 ,而容器之外的程序需要和这些组件交互必须通过容器 。

  举个例子,IE发送了一个请求给容器,容器通过调用其中的一个组件进行相关处理之后将结果反馈给IE,这种与客户端软件交互的组件就叫做servlet

 

组件:

  组件其实就是一个应用程序块 。但是它们不是完整的应用程序,不能单独运行 。就有如一辆汽车,车门是一个组件,车灯也是一个组件 。但是光有车灯车门没有用,它们不能跑上公路 。在java中这些组件就叫做javabean,有点像微软以前的com组件 。

  要特别说明的是,由于任何一个java文件编译以后都是以类的形式存在 。所以javabean肯定也是一个类,这是毫无疑问的。

 

Injection:

  

 Java的依赖注入:依赖注入,出自spring的IOC和DI,是Spring的两大特性之一(另一个AOP面向切面编程)

   以前对象使我们手动实例化,比如:Service层调用Dao层,需要Dao d = new Dao;但是这样会导致两个层之间的耦合性大大增强。而spring的IOC,反转控制,会在我们需要实例对象的时候,由spring容器为我们提供,并通过DI依赖注入来实现目标对象的获得,完成解耦操作。

  可以通过setter方法注入、构造注入、注解注入。  依赖注入是Spring的思想,在使用Spring进行开发时,可以将对象交给spring进行管理,在初始化时spring创建一批对象,当你需要用的时候只要从spring的容器中获取对象,而不用自己去new,当然在对象创建的时候可以注入另一个对象。比如A,B两个对象都由spring管理,A中持有对B的引用,那么spring在生成A对象的时候就已经吧B对象的一个实例给到A了,当你在A中用到B的时候直接使用就可以了。

  

对于未来技术的预测:

  容器技术应该会越来越强大,并且能够适应更多的环境,做出相应的选择,即更加的智能化。可能会根据人工智能的发展做出更加智能的Container Master?

 

 

 

 

posted @ 2019-03-17 23:48  Teay  阅读(216)  评论(0编辑  收藏  举报