zoukankan      html  css  js  c++  java
  • 云计算,因何而生?

    互联网体系结构

    上面这幅图,简单的描绘了互联网的体系结构。各种终端设备(常见的有台式电脑、笔记本电脑、平板电脑、手机),通过网络(互联网)连接到数据中心的服务器,从而获得互联网服务。比如,你的手机通过互联网,连接到腾讯数据中心的腾讯视频服务器,观看腾讯视频的电影、电视剧。

    服务器结构

    服务器和个人电脑的结构非常相似,也有CPU、内存、硬盘等,但也有些许不同。普遍来说服务器的CPU,核心数要多一些,主频要低一些,服务器可以插多个CPU(真实的存在的CPU,不是超线程技术),服务器内存支持ECC校验机制,服务器硬盘通常搭配RAID卡使用,支持热插拔等等,可以前往ZOl查看一些服务器的价格和配置:http://detail.zol.com.cn/server/

    不过由于多种原因,服务器硬件在个人电脑上的使用效果并不好,网上有个很形象的比喻:你觉得开坦克去上班,会觉得舒适吗?此外,还有一个技术更迭带来的问题,虽然现在多数服务器的CPU都采用和个人电脑相同的x86架构,但是在更早的时候,服务器CPU还有一些不同的架构,比如Power PC架构。由于历史遗留,它们可能仍然存在于一些数据中心中。

    CPU架构不同带来的问题就是:不同CPU架构的配套硬件(比如主板)、软件、操作系统不能够通用。

    简单概括:多数服务器和个人电脑都是x86架构,x86架构的服务器和个人电脑结构几乎相同,软件、操作系统可以通用,但硬件不通用(强行使用,硬件能发挥的性能极低),特别说明平板电脑多数不是x86架构。

    数据中心的服务器

    大型互联网企业,都有自己的数据中心,而且通常不只一个。每个数据中心里面都部署的有大量的服务器,它们借助内部网络通过极其复杂的方式协同工作,最终通过互联网向公众提供互联网服务。

    数据中心的服务器和家庭电脑接入互联网的方式并不同,家庭电脑通常是所有终端直接接入路由器,没有类似上图交换机组成的“协同工作”的网络,而数据中心一般只将少量的服务器通过路由器直接接入互联网,这些少量的服务器负责将来自互联网的服务请求通过“协同工作”的网络分发给对应的处理服务请求的服务器,这些服务请求被对应的服务器处理后产生相应的信息,再通过“协同工作”的网络传输回分发请求的服务器,最后分发请求的服务器再将这些信息通过互联网传输给用户。

    上图展示了一个假想的精简腾讯视频解决方案,“服务器-处理请求”处理来自互联网的腾讯视频服务请求,如果这个服务请求的是看电影,则通过交换机交由“腾讯视频-电影”这台服务器处理,如果这个服务器请求的是看电视剧,则通过交换机交由“腾讯视频-电视剧”这台服务器处理,对应的服务请求被处理后,产生的信息再通过交换机传输回“服务器-处理请求”,“服务器-处理请求”最终通过互联网,将信息传输给用户。

    传统数据中心的弊端

    以上图,使用腾讯视频看电影,由“腾讯视频-电影”这台服务器提供服务,使用腾讯视频看电视剧,由“腾讯视频-电视剧”这台服务器提供服务这个假想的案例为例。

    • 规划这两台服务器的配置的时候,肯定要考虑到以后用户量增长的问题,所以服务的硬件配置都会高于当前的需求,这就造成了当前硬件利用率不高的问题。
    • 如果腾讯视频新增一个少儿频道,则需要额外增加一台“腾讯视频-少儿”服务器。购买个人电脑,有的时候都不一定能够立即购买到,数据中心购买服务器更不是今天买,明天到,除了公司内部申请、审批、下单的流程,还有代理商和厂商之间的流程,可能长达几个月服务器都没到。
    • 因为电影、电视剧、少儿这三个栏目的需求量不同,也许看电视剧的人要多一些,所以“腾讯视频-电视剧”的硬件配置就要更高一些。这样,不单无法储备合适的服务器,也给管理带来诸多不便。

    虽然现实情况并非完全如此,但硬件利用率低、无法及时新增服务器,服务器硬件配置不一,这些情况在数据中心是真实存在的。当数据中心规模较小的时候,也许这些只是小问题,对于拥有成百上千台服务器的大型数据中心来说,这些小问题会被放大,造成极高的TCO。

    服务器虚拟化

    上述传统数据中心的弊端可以通过服务器虚拟化技术解决,这是一种将多个操作系统同时运行在一台服务器上的技术。在传统的认知里面,一台电脑只能装一个操作系统,即使安装了双操作系统,也只能同时运行其中一个。初次理解这个也许有些困难,就像操作系统为什么可以同时运行多个程序一样,为什么服务器不可以同时运行多个操作系统呢?

     

    服务器能够同时运行多个操作系统,并不是因为服务器有什么特别之处,相反x86服务器和个人电脑是一样的架构,也就是说他们都可以同时运行多个操作系统。实现这一切依靠的是hypervisor,hypervisor又被称为虚拟机监视器(VMM,Virtual Machine Monitor),它有两种类型:一种是特殊的操作系统,直接安装在服务器上;另一种是应用程序,这需要先在服务器上安装一个操作系统,称为Host OS,再在Host OS中安装hypervisor。最终是在hypervisor中安装这多个操作系统,每个操作系统使用hypervisor提供的服务器的部分硬件,比如一台服务器有12G内存,它上面的一个操作系统可能只使用其中的4G。

    引用一个Redhat的案例,假设您有 3 台物理服务器,分别用于不同的特定用途。 其中一台是邮件服务器,一台是 Web 服务器,最后一台则用于运行企业内部的传统应用。每台服务器只使用了大约 30% 的性能,这仅是运行潜能的一小部分。

    过去确实如此。相对简单和可靠的做法是在单独的服务器上运行单独的任务:1 台服务器, 1 个运行操作系统,1 个处理任务。我们很难让 1 台服务器有多个大脑(操作系统)。但是,借助服务器虚拟化技术,您可以将邮件服务器分为 2 个能够处理独立任务的“特殊服务器”,这 2 个特殊服务器都有自己的操作系统,相互独立,从而实现传统应用的迁移。您仍然使用相同的硬件,但可以更加高效地利用这些资源。

     

    这里的“特殊服务器”一般我们称为虚拟机(VM,Virtual Machine),每台虚拟机都有自己的操作系统,使用物理服务器的部分硬件。假设原本MAIL服务器的CPU有10个核心,实现服务器虚拟化后,MAIL虚拟机还是使用3个核心,LEGACY APPS使用剩下核心中的 3 个。物理服务器硬件资源的分配和管理统一由hypervisor完成,同时hypervisor采用一些“欺骗”手段,让虚拟机中的操作系统认为自己工作在物理服务器上,真的有 3 个CPU核心。

    很明显,通过服务器虚拟化技术,传统数据中心的弊端得到了解决。

    • 硬件利用率低的问题,参考案例中原来的MAIL服务器利用率提高到了60%。
    • 只要物理服务器的资源充足,新增服务器也变得非常简单灵活(建虚拟机就可以了),
    • 服务器可以自由扩展性能,比如可以将MAIL虚拟机的性能提升到50%,单MAIL服务就使用 5 个CPU核心。

    Tips:也可以一台服务器只安装一个操作系统,MAIL、WEB、LEGACY APPS都部署在这一个操作系统中。这样虽然提高了硬件利用率,但是一旦其中一个应用异常,导致操作系统崩溃,届时 3 个应用都无法正常运行。而服务器虚拟化,一台服务器上运行多个操作系统,它们之间相互隔离,某个操作系统的异常,并不会影响其它操作系统,从而避免了这个问题。

    云计算

    服务器虚拟化似乎解决了灵活性问题,其实不全对。因为虚拟化软件一般创建一台虚拟的电脑,是需要人工指定这台虚拟电脑放在哪台物理机上的,可能还需要比较复杂的人工配置,所以使用Vmware的虚拟化软件,需要考一个很牛的证书,能拿到这个证书的人,薪资是相当的高,也可见复杂程度。所以仅仅凭虚拟化软件所能管理的物理机的集群规模都不是特别的大,一般在十几台,几十台,最多百台这么一个规模。这一方面会影响时间灵活性,虽然虚拟出一台电脑的时间很短,但是随着集群规模的扩大,人工配置的过程越来越复杂,越来越耗时。另一方面也影响空间灵活性,当用户数量多的时候,这点集群规模,还远达不到想要多少要多少的程度,很可能这点资源很快就用完了,还得去采购。所以随着集群的规模越来越大,基本都是千台起步,动辄上万台,甚至几十上百万台,如果去查一下BAT,包括网易,包括谷歌,亚马逊,服务器数目都大的吓人。这么多机器要靠人去选一个位置放这台虚拟化的电脑并做相应的配置,几乎是不可能的事情,还是需要机器去做这个事情。

    人们发明了各种各样的算法来做这个事情,算法的名字叫做调度(Scheduler)。通俗一点的说,就是有一个调度中心,几千台机器都在一个池子里面,无论用户需要多少CPU,内存,硬盘的虚拟电脑,调度中心会自动在大池子里面找一个能够满足用户需求的地方,把虚拟电脑启动起来做好配置,用户就直接能用了。这个阶段,我们称为池化,或者云化,到了这个阶段,才可以称为云计算,在这之前都只能叫虚拟化。

    这里引用了http://www.cnblogs.com/popsuper1982/p/8505203.html的一段

    简单概括:服务器虚拟化技术使数据中心以更加灵活的方式(虚拟机)使用服务器,最开始管理虚拟机使用虚拟化平台,需要靠人工配置,能够管理的虚拟机、服务器有限,云计算使用特殊的算法自动配置虚拟机。

    这里记录使用某云计算平台创建一台虚拟机的步骤:

    • 选择虚拟机的操作系统

     

    • 选择虚拟机的配置(CPU、内存、硬盘)

    • 配置虚拟机的网络

    • 付钱

    云计算远不只于此

    云计算远不止于此,更详细的云计算介绍见后续文章。

  • 相关阅读:
    JavaWeb学习总结(二)——Tomcat服务器学习和使用(一)
    JavaWeb学习总结(一)——JavaWeb开发入门
    javaweb学习总结(四)——Http协议
    Eclipse中应用的调试
    Java Web快速入门——全十讲
    Spring 系列: Spring 框架简介
    分布式环境中三种Session管理方法的使用场景及优缺点
    Cookie/Session机制详解
    HTTP 协议详解
    Webx3学习笔记(2)——基本流程
  • 原文地址:https://www.cnblogs.com/yogurtwu/p/10551817.html
Copyright © 2011-2022 走看看