zoukankan      html  css  js  c++  java
  • GIS+=地理信息+容器技术(1)——容器技术概述

    --------------------------------------------------------------------------------------

    Blog:    http://blog.csdn.net/chinagissoft

    QQ群:16403743

    宗旨:专注于"GIS+"前沿技术的研究与交流,将云计算技术、大数据技术、容器技术、物联网与GIS进行深度融合。探讨"GIS+"技术和行业解决方式

    转载说明:文章同意转载。但必须以链接方式注明源地址,否则追究法律责任!

    --------------------------------------------------------------------------------------


    题记

    假如我们须要部署一个Webserver,我们须要做什么样的工作呢?

    1、申请、扩展、购买硬件server资源;或者租用或购买VPS(公有云虚拟云主机)

    2、安装操作系统(Windows或者Linux)

    3、部署Webserver软件(Apache或者Nginx)

    4、部署支持Web所需的开发环境(PHP、Python等)以及数据库(MySQL)

    5、有些还须要在某些框架开发(Python的Django)

    6、部署代码到Webserver软件的指定文件夹

    7、配置公网IP地址

    当然,走到这一步我们会感觉,看上去是比較麻烦。只是现实中我们有成熟的技术来解决这些问题啊,比如虚拟化镜像,可是我们仍然会有非常多问题须要解决。比如:

    • 1、同样软件环境的多个server安装(比如我们为了负载均衡)
    • 2、不同软件环境server的安装(比如我们的Python环境,有的须要2.7。但有的需求3.4)
    • 3、不同硬件环境的同样软件环境的安装(比如酷睿1的CPU不能满足需求。升级到酷睿5却没有同样的OS和软件环境)
    这些都是我们所面临的问题,而虚拟化镜像就不能解决全部问题,他能够非常好的解决1和3。可是并不能同一时候解决2的问题。那么我们就能够通过容器技术来解决全部的问题。

    容器技术



    容器技术就是一种系统主要的虚拟化(System-level virtualization),它同意在同一个硬件环境和内核环境下。同意多个独立的用户空间实例的同意,多个User Space共享操作系统的Kernal。而我们所说的User Space事实上就是一个个的容器。

    常见的SLV的解决方式包含:LXC、OpenVZ、Docker、Lmctfy。其它三个我们都有所耳闻,关于Lmctfy事实上是Google开源的容器虚拟化的实现,据说Google公司内部每周都会创建或者销毁近20亿个容器。

    容器的核心技术

    1、Cgroups限制容器的资源使用
    事实上Linux内核本身就提供限制、记录和隔离进程组所使用的资源。通过不同的子系统(blkio、CPU等)记录对不同资源使用的控制和记录。

    root@controller:/sys/fs/cgroup/cpu# ls
    cgroup.clone_children  cpu.cfs_period_us  cpu.stat           tasks
    cgroup.procs           cpu.cfs_quota_us   notify_on_release  user
    cgroup.sane_behavior   cpu.shares         release_agent
    root@controller:/sys/fs/cgroup/cpu# cat cpu.stat
    nr_periods 0
    nr_throttled 0
    throttled_time 0
    



    2、NameSpace机制,实现容器间的隔离
    因为我们能够在同一个OS上面。实现N个容器的同步执行,所以我们一般通过NameSpace机制来实现容器间的隔离。包含下面相关參数:
    •pid。容器有自己独立的进程表和1号进程
    •net,容器有独立的networkinfo
    •ipc。在ipc通信时,须要增加额外信息来标识进程
    •mnt。每一个容器都有自己唯一的文件夹挂载
    •utc。每一个容器有独立的hostname和domain


    3、Chroot。文件系统的隔离
    相同,我们知道一提起Linux操作系统。有Redhat,有Ubuntu,有Suse。有CentOS,不同Linux版本号基本上在同一Linux内核,仅仅是他们的Root file system不同,容器也是一样,他们有基于容器须要的类似于Root Fs的文件系统,能够实现基于同一个宿主机RootFS,并且还有容器自身不同的Root文件。


    容器VS.虚拟机

    不论什么提起容器的文件都不免会得到一个疑问。既然最早我们接触虚拟机的概念,如今又讲到容器,怎样来差别两者呢。两者是互相替代关系还是能够互补呢?

    虚拟机

    虚拟机是执行在物理宿主机上的软件抽象。配置一个虚拟机就像是购买一台计算机:你须要定义你想要的 CPU 数目、RAM 和磁盘存储容量。配置好了机器后,你为它载入操作系统。以及你想让虚拟机支持的不论什么server或者应用程序。

    虚拟机同意你在一台硬件主机上执行多个模拟计算机。你充分利用硬件资源。

    这是虚拟机的优势。


    可是虚拟机也有自己的不足:

    全部分配给一个虚拟机的资源,不管是什么。都是专有的。

    这里没有资源的流动。每台虚拟机拥有分配给它的全部资源。让它们跑起来须要非常长时间。假设你处于基础设施须要高速增长的情形,即使添加虚拟机是自己主动的。你仍然会发现你的非常多时间都浪费在等待机器上线。




    容器

    容器是一个Linux 进程,Linux 觉得它仅仅是一个执行中的进程。该容器进程也分配了它自己的 IP 地址。一旦给予了一个 IP地址,该进程就是宿主网络中可识别的资源。

    容器/进程以动态、合作的方式共享主机上的资源。CPU、内存和存储空间的分配是动态的,和典型虚拟机的静态方式不同。因为容器作为OS的一个进程,所以容器能很高速地启动。


    总结



    事实上如今对于两者而言,并没有绝对的替代关系。如今慢慢的把传统虚拟化当成云计算的IaaS,提供基础设施服务,容器很多其它的是在PaaS层。也就是执行在虚拟机内,提供服务。


  • 相关阅读:
    metal的gpu query
    体积雾 global fog unity 及改进
    hdr rt format对颜色的影响
    unity deferred lighting
    unity linear space时 photoshop blend的正确设置
    unity linear work flow
    一些数据 bandwidth之类
    deferred rendering with msaa
    unity 显示mipmaplevel
    【转】在C#中使用SendMessage
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/7098360.html
Copyright © 2011-2022 走看看