container和injection

1.容器的历史

容器概念始于 1979 年提出的 UNIX chroot,它是一个 UNIX 操作系统的系统调用,将一个进程及其子进程的根目录改变到文件系统中的一个新位置,让这些进程只能访问到这个新的位置,从而达到了进程隔离的目的。

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 虚拟机。

基本上到这个时间节点,容器技术就已经很成熟了,再往后就是容器云的发展,由此也衍生出多种容器云的平台管理技术,其中以 kubernetes 最为出众,有了这样一些细粒度的容器集群管理技术,也为微服务的发展奠定了基石。因此,对于未来来说,应用的微服务化是一个较大的趋势。

为什么需要容器

其一,这是技术演进的一种创新结果,其二,这是人们追求高效生产活动的一种工具。

随着软件开发的发展,相比于早期的集中式应用部署方式,现在的应用基本都是采用分布式的部署方式,一个应用可能包含多种服务或多个模块,因此多种服务可能部署在多种环境中,如虚拟服务器、公有云、私有云等,由于多种服务之间存在一些依赖关系,所以可能存在应用在运行过程中的动态迁移问题,那这时如何保证不同服务在不同环境中都能平滑的适配,不需要根据环境的不同而去进行相应的定制,就显得尤为重要。

就像货物的运输问题一样,如何将不同的货物放在不同的运输机器上,减少因货物的不同而频繁进行货物的装载和卸载,浪费大量的人力物力。

为此人们发明了集装箱,将货物根据尺寸形状等的不同,用不同规格的集装箱装载,然后再放到运输机上运输,由于集装箱密封,只有货物到达目的地才需拆封,在运输过程能够再不同运输机上平滑过渡,所以避免了资源的浪费。

Injection

javava EE CDI主要使用@Inject批注,以便将托管bean的依赖注入执行到其他容器托管资源。

容器本身与其生态系统的发展

  • 容器技术标准

容器相关的技术标准的诞生将促进整个大系统的各方更好的协调和兼容。

  • 云计算平台的支持

现有云计算平台要么尽快支持容器技术,要么被新的支持容器的云计算平台超越。中国香港、上海、深圳、青岛、天津在上世纪60~80年代抓住了集装箱发展的机遇,成为全球供应链上的主要枢纽港,2014年仍处在全球10个最大吞吐量集装箱港之列。

  • 使用容器的习惯逐渐形成

培养应用发布者使用容器发布应用的习惯是非技术问题,也需要时间去沉淀。全球运输业花了近15年培养出了发货商使用集装箱的习惯,在互联网行业不需要这么慢。

  • 行业规模

Mesos, Kubernetes等容器管理方案将助力 “巴拿马级”,“马六甲级”[见注释2]的容器“轮船”。Mesos, Kubernetes等成熟通用的集群管理方案将为你做好大规模分布式容器的启停、调度、编排、高可用。与现有的大部分互联网服务类似,容器依赖于规模,云计算平台服务的客户越多,运行的容器规模越大,构建整套容器运行体系的固定成本就被分摊得越薄,客户使用云计算服务的资费就能降下来。

  • 应用在云计算平台间的无缝迁移

未来的应用在不同的云计算平台(支持容器)间迁移成本更低。如同集装箱在汽车、火车、集装箱船之间的无缝迁移。

在未来世界,云计算不止是互联网的公共基础服务,也是被互联网渗透的所有行业的公共基础服务,公有云也好,私有云也罢,几乎所有的信息服务都将在云上。从集装箱诞生到运输业广泛采用集装箱,大宗货物运输成本普遍减少50%以上,耗费了约60年。我相信在互联网领域,容器的普及都用不了6年,希望在这个互联网基础服务里掘金的企业,请跑步入场!

原文地址:https://www.cnblogs.com/448aml/p/10506725.html

时间: 2024-11-14 19:50:55

container和injection的相关文章

Container and Injection

Container 广义上讲容器是用来包装或装载物品的贮存器(如箱.罐.坛)或者成形或柔软不成形的包覆材料.在编程领域中,容器提供组件运行的环境,容器本身可以提供一组服务,让组件按标准方式利用. Spring 提供容器功能,容器可以管理对象的生命周期.对象与对象之间的依赖关系,您可以使用一个配置文件(通常是XML),在上面定义好对象的名称.如何产生(Prototype 方式或Singleton 方式).哪个对象产生之后必须设定成为某个对象的属性等,在启动容器之后,所有的对象都可以直接取用,不用编

为什么会出现container、injection技术?发展历史及未来发展趋势

container 原因: 随着软件开发的发展,相比于早期的集中式应用部署方式,现在的应用基本都是采用分布式的部署方式,一个应用可能包含多种服务或多个模块,因此多种服务可能部署在多种环境中,如虚拟服务器.公有云.私有云等,由于多种服务之间存在一些依赖关系,所以可能存在应用在运行过程中的动态迁移问题,那这时如何保证不同服务在不同环境中都能平滑的适配,不需要根据环境的不同而去进行相应的定制,就显得尤为重要.而container技术和虚拟机一样,容器技术也是一种资源隔离的虚拟化技术,容器概念始于 19

Container、Injection

Container: 容器技术是Linux Container的直译.Container有集装箱.容器的含义.集装箱的特色,在于格式划一,并且可以层层重叠,所以可以大量放置在特别设计的远洋轮船中,这样大大提高了输出效率,有了集装箱,就可以更快恶的为生产商提供廉价的运输服务. Linux Container容器技术的诞生(2008年)就解决了IT世界里“集装箱运输”的问题.Linux Container(简称LXC)它是一种内核轻量级的操作系统层虚拟化技术.Linux Container主要由Na

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

Container: 发展历程: 2000 年的时候 FreeBSD 开发了一个类似于 chroot 的容器技术 Jails,这是最早期,也是功能最多的容器技术.Jails 英译过来是监狱的意思,这个“监狱”(用沙盒更为准确)包含了文件系统.用户.网络.进程等的隔离. 2001 Linux 也发布自己的容器技术 Linux VServer,2004 Solaris 也发布了 Solaris Containers,两者都将资源进行划分,形成一个个 zones,又叫做虚拟服务器. 2005 年推出

Dependency injection in ASP.NET Core

原文 ASP.NET Core supports the dependency injection (DI) software design pattern, which is a technique for achieving Inversion of Control (IoC) between classes and their dependencies. For more information specific to dependency injection within MVC con

ASP.NET Web API是什么?

[翻译]ASP.NET Web API是什么? 说明:随微 软ASP.NET MVC 4一起发布的还有一个框架,叫做ASP.NET Web API.目前国内关注这项技术的人似乎还很少,这方面的文章也不多见.开发Web应用程序也许可以只用MVC这样的技术,而不用这项Web API技术,但如果用了,会给你的应用程序带来极大的好处.为此,本人转载并翻译了以下这篇文章,后面还会陆续翻译该项技术的一些官方教程.大家一起学 习,共同提高. Microsoft ASP.NET: What's This New

Asp.Net Web API 2 官网菜鸟学习系列导航[持续更新中]

前言 本来一直参见于微软官网进行学习的, 官网网址http://www.asp.net/web-api.出于自己想锻炼一下学习阅读英文文章的目的,又可以学习下微软新发布的技术,其实也很久了,但自己菜鸟一枚,对自己来说都是新技术了.鉴于以上两个原因,本人打算借助google翻译和有道词典,来翻译学习这个系列,并通过博客园来记录自己的翻译学习过程.由于自己阅读水平的确太菜,在借助工具的情况下,有时候搞出来的也是蹩脚的语句,自己读着都难受,尤其是到了Web API路由的那两篇,所以自己想着是不是有别人

ASP.NET Web API 特性

1.先进的 HTTP 编程模型: 使用新的强类型的 HTTP 对象模型直接操作 HTTP 请求和响应, 在 HTTP客户端使用相同的编程模型和 HTTP 管道: 2.支持路由: Web API 完整支持 ASP.NET 路由, 包括路由参数和约束. 此外, 到动作的映射支持约定, 从此将不再需要向类或者方法添加类似于 [HttpPost] 之类的属性: 3.内容协商: 客户端与服务端可以一起决定 API 返回数据的格式. 默认支持 XML, JSON 以及 Form URL-Encoded 格式

什么是 Web API

http://www.cnblogs.com/developersupport/p/aspnet-webapi.html Web API 强势入门指南 Web API是一个比较宽泛的概念.这里我们提到Web API特指ASP.NET Web API. 这篇文章中我们主要介绍Web API的主要功能以及与其他同类型框架的对比,最后通过一些相对复杂的实例展示如何通过Web API构建http服务,同时也展示了Visual Studio构建.net项目的各种强大. 目录 什么是 Web API 为什么