云计算与大数据
- 1、虚拟化简介
- 1.1、什么是虚拟化
- 1.2、虚拟化的分类
- 2、云计算与云服务
- 2.1、云计算
- 2.2、云服务
- 2.3、云计算的特点
- 3、云服务模式(IaaS、PaaS、SaaS和DaaS)
- 4、云计算分类(公有云、私有云和混合云)
1、虚拟化简介
当下,云计算(Cloud Computing)已经成为企业和个人应用的核心技术之一。而虚拟化是云计算的基础技术
1.1、什么是虚拟化
百科词条对虚拟化的解释为:
虚拟化在计算机方面通常是指计算元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模拟多CPU 并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率
虚拟化技术与多任务是完全不同的。多任务是指在一个操作系统中多个程序同时并行运行,而在虚拟化技术中,则可以同时运行多个操作系统,而且每一个操作系统中都有多个程序运行,每一个操作系统都运行在一个虚拟的CPU或者是虚拟主机上
总结来说,虚拟化就是创建计算资源、网络系统和存储系统的软件模拟。虚拟化就是在一个操作系统内,模拟多个操作系统,以软件的方式模拟物理设备的功能。虚拟化是一种通过在物理服务器上创建多个虚拟的、逻辑分离的计算环境的技术,使得一台物理服务器可以同时运行多个虚拟机,可以让资源的分配更加灵活,可以更高效地利用物理硬件资源
通过虚拟化技术将一台计算机虚拟为多台逻辑计算机,在一台计算机上同时运行多个逻辑计算机,同时每个逻辑计算机可运行不同的操作系统,应用程序都可以在相互独立的空间内运行而互相不影响,从而提高计算机的工作效率
例如,在一个操作系统中(Windows)可以模拟多个操作系统(CentOS、Ubuntu、MacOS等),同时每个操作系统可以运行不同的服务(Nginx、Tomcat等),且互不影响,从而实现一台宿主机搭建一个集群
传统主机和虚拟化主机的区别如下:
从上面可以看出,虚拟化主机比传统主机多了两层,分别是虚拟机层和Hypervisor层
- 虚拟机:虚拟硬件资源层,可以理解为虚拟出来的CPU、内存、网络、磁盘等资源
- Hypervisor:也称为虚拟机监视器或VMM(Virtual Machine Monitor),是虚拟化中的关键组件,其作用在于管理和执行虚拟机实例
在虚拟化环境下,物理服务器的各种资源,如CPU、内存、硬盘和网卡等硬件资源被虚拟化后,通过Hypervisor的调度和协调,使得多个操作系统可以共享这些虚拟化后的硬件资源,同时每个操作系统又可以保存彼此的独立性
虚拟机整体架构如下:
简化后的模型如下:
QEMU、KVM两大核心组件:
- QEMU:QEMU是I/O控制的模块,可以理解为队列,核心目的是调用资源内核中的资源,需要把KVM逻辑分割出来的资源运输给QEMU,再给虚拟机。QEMU不是直接调用,而是使用I/O方式,QEMU把资源调用来的过程借用ioctl(用于运输),QEMU借助libvirt这个工具调用ioctl,再通过接口,给虚拟机应用程序
- KVM:KVM主要用来逻辑分割物理资源,抽象化为虚拟化资源,根据VMM里的配置,会逻辑分割出多少给应用程序,去进行虚拟化。KVM只接受来自QEMU的请求指令。对于应用程序直接过来的敏感指令会拦截,然后通过接口发给QEMU,让QEMU判断是否需要执行该敏感指令
为什么需要虚拟化?
- 提高资源利用率:允许在一台服务器上创建多个虚拟机,减少闲置资源
灵活性和弹性:可以实现资源的弹性伸缩 - 硬件隔离和安全性:可以将虚拟机之间的资源隔离开,保护应用程序和数据的安全性
- 简化管理和维护:可以集中管理和维护一系列的虚拟机,简化了硬件部署、配置和管理的复杂性
- 快速部署和备份恢复:虚拟化使得虚拟机的部署和备份恢复变得更加简便和快速
1.2、虚拟化的分类
Hypervisor可以划分为两大类,一类是裸机型,Hypervisor直接运行在硬件设备上的,也叫做Bare-Metal Hardware Virtualization(裸机虚拟化环境);一类是主机托管型,也叫做Hosted Virtualization(宿主机虚拟化环境)
概念简介:
- HostOS:在物理服务器上运行的操作系统
- GuestOS:在虚拟机中运行的独立操作系统,可以是Linux、Windows、Unix等
- Soc:片上系统
裸机虚拟化:裸机型的Hypervisor不依赖主机操作系统,其自身具备操作系统的基础功能。设计上更简洁,直接运行于硬件之上,整体代码量和架构更为精简,对内存和存储资源要求更少,可满足自动驾驶车控系统功能安全等级要求,也具备进行形式化验证的条件
宿主机虚拟化:宿主机型的Hypervisor需要借助宿主操作系统来管理CPU、内存、网络等资源,由于Hypervisor和硬件之间存在一个宿主操作系统,Hypervisor及VM的所有操作都要经过宿主操作系统,所以就不可避免地会存在延迟、性能损耗,同时宿主操作系统的安全缺陷及稳定性问题都会影响到运行在之上的VM(虚拟机),因此 , 该型的Hypervisor主要用于对性能和安全要求不高的场合
另外,全虚拟化是将物理硬件资源全部通过软件的方式抽象化,最后进行调用。大多数情况下,客户机在全虚拟化模式下运行与原生系统在非虚拟化环境中运行性能一样。而半虚拟化中,GuestOS需要通过修改自身内核来使用VMM提供的特定接口,以避免使用不可虚拟化(需要进行翻译)的指令。这样就可以减少VMM翻译,获得更高的性能和效率
最后,云计算需要硬件资源抽象化、可弹性扩展、安全隔离的资源存放,还有简单轻便的配置部署等,这些特性都是虚拟化天生自带的,可以说没有虚拟化云计算也到达不了今天这个高度
2、云计算与云服务
2.1、云计算
“云”实质上就是一个网络,狭义上讲,云计算就是一种提供资源的网络,使用者可以随时获取“云”上的资源,按需求量使用,并且可以看成是无限扩展的,只要按使用量付费就可以,“云”就像自来水厂一样,我们可以随时接水,并且不限量,按照自己家的用水量,付费给自来水厂就可以
从广义上说,云计算是与信息技术、软件、互联网相关的一种服务,这种计算资源共享池叫做“云”,云计算把许多计算资源集合起来,通过软件实现自动化管理,只需要很少的人参与,就能让资源被快速提供。也就是说,计算能力作为一种商品,可以在互联网上流通,就像水、电、煤气一样,可以方便地取用,且价格较为低廉
云计算(Cloud Computing)一般意译为网络计算,是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需求提供给计算机各种终端和其他设备,使用服务商提供的电脑基建作计算和资源
云计算的资源是动态扩展且虚拟化的,通过互联网提供,终端用户不需要了解云中基础设施的细节,不必具有专业的云技术知识,也无须直接进行控制,只要关注自身真正需要什么样的资源以及如何通过网络来获得相应的服务即可
云计算的核心概念就是以互联网为中心,在网站上提供快速且安全的云计算服务与数据存储,让每一个使用互联网的人都可以使用网络上的庞大计算资源与数据中心
云计算是通过计算机网络形成的一种计算能力极强的系统,可存储、计算和管理相关资源并可按需配置,向用户提供个性化服务
2.2、云服务
随着互联网的发展以及物联网的普及,数据正在以前所未有的指数级增长。海量的数据不但需要存储,而且还需要大量的计算。海量数据的处理先后从基于Hadoop的分布式存储与计算发展到目前的云计算。在云时代,将传统的服务器组成一朵“云”,而这朵“云”提供了存储、计算等强大的能力与服务
在大数据领域,主流的云平台均提供了相应的解决方案,从分布式存储到分布式计算,从批处理框架到流式计算,从ETL到数据管道,从BI分析到数据挖掘等方面均有对应的产品来解决企业的需求
目前,国内外多个大厂都提供了自己的云计算平台,包括亚马逊的AWS,微软的Microsoft Azure,Google的GCP(Google Cloud Platform)等,国内的有阿里云,腾讯云,华为云等
对于国际大公司来说,要想给全球用户一个良好的产品使用体验(低延迟),必然要在全球主要节点部署机房,构建数据中心。对于小公司来说,没有这个财力进行全球部署,大公司从中看到了商机,既然小公司有这个需求、自身也为此维持了相当的人力成本,那为何不多部署一些,分成可精确计费的服务(IaaS、PaaS、SaaS、DaaS),然后售卖给小公司呢?例如AWS等云计算平台可以做到按请求次数、计算资源使用时间(100毫秒)来计费
这样一来,云计算平台上面既运行着自家的产品,也对外提供计算、存储、网络、机器学习、大数据分析处理等各种能力与服务
例如打开手机QQ,初始界面下方有一行字“腾讯云提供计算服务”。从2017年开始,腾讯要求内部服务都逐渐迁移到腾讯云上面,迁移的过程总是缓慢的,但是一旦上云上就再也不想回去了。在以前,升级一个公众号消息发送服务(有100多台8核8GB内存机器)需要花费小半天:先将待升级的机器上面的流量切走,开始升级,升级完之后观察没有问题后再接入流量,为避免将剩余的机器压爆,每次升级的时候最多升总量的10%~15%。这样来回切,费时费力。以容器和K8S为代表的先进技术出现后,服务的扩容、缩容、升级基本不再花费开发的额外精力
计算、存储、网络是云计算平台提供的三个最基本的服务,称之为基础架构(IaaS),就像一个城市的水、电、公共交通,当从自建的数据中心迁移上云,首先想到的就是这些基础设施。但是光有这些还是不够,优秀的云提供商,还会提供各种IaaS、PaaS、SaaS、DaaS服务,例如,客户只负责选择需要的计算节点个数,剩下的由云计算平台负责搭建和维护K8S集群。更进一步,客户只需要写事件触发函数(Function),完全不用关心后面需要多少计算资源,如何做负载均衡,如何配置网络拓扑等
机房选址、硬件服务器资源购买、网络设置、多机房异地容灾、全球负载均衡、边缘计算节点部署、防止网络攻击(例如DDoS),对小公司、初创公司或者个人开发者,几乎是不可能完成的事情,对大公司来说,这些都已经做过一遍了,是现成的。有买方,有卖方,生意就这样做起来了
近几年,云计算已经发生了巨大的演进:
- 企业自建机房:企业承担机房所有工作,例如规划、建设、部署、运维等
- 传统IDC(数据中心)托管:企业无需自建机房,但需要自己购买硬件发往机房,并承担运维
- 云计算:企业无需自建机房,无需关注硬件及性能,直接购买相关服务即可获得高可靠和高可用的存储、计算等能力,企业只专注内部业务开发
2.3、云计算的特点
云计算的可贵之处在于高灵活性、可扩展性和高性比等,与传统的网络应用模式相比,其具有如下优势与特点:
-
虚拟化技术
必须强调的是,虚拟化突破了时间、空间的界限,是云计算最为显著的特点,虚拟化技术包括应用虚拟和资源虚拟两种。众所周知,物理平台与应用部署的环境在空间上是没有任何联系的,正是通过虚拟平台对相应终端操作完成数据备份、迁移和扩展等 -
动态可扩展
云计算具有高效的运算能力,在原有服务器基础上增加云计算功能能够使计算速度迅速提高,最终实现动态扩展虚拟化的层次达到对应用进行扩展的目的 -
按需部署
计算机包含了许多应用、程序软件等,不同的应用对应的数据资源库不同,所以用户运行不同的应用需要较强的计算能力对资源进行部署,而云计算平台能够根据用户的需求快速配备计算能力及资源 -
灵活性高
目前市场上大多数IT资源、软、硬件都支持虚拟化,比如存储网络、操作系统和开发软、硬件等。虚拟化要素统一放在云系统资源虚拟池当中进行管理,可见云计算的兼容性非常强,不仅可以兼容低配置机器、不同厂商的硬件产品,还能够外设获得更高性能计算 -
可靠性高
倘若服务器故障也不影响计算与应用的正常运行。因为单点服务器出现故障可以通过虚拟化技术将分布在不同物理服务器上面的应用进行恢复或利用动态扩展功能部署新的服务器进行计算 -
性价比高
将资源放在虚拟资源池中统一管理在一定程度上优化了物理资源,用户不再需要昂贵、存储空间大的主机,可以选择相对廉价的PC组成云,一方面减少费用,另一方面计算性能不逊于大型主机 -
可扩展性
用户可以利用应用软件的快速部署条件来更为简单快捷的将自身所需的已有业务以及新业务进行扩展。如计算机云计算系统中出现设备的故障,对于用户来说,无论是在计算机层面上,亦或是在具体运用上均不会受到阻碍,可以利用计算机云计算具有的动态扩展功能来对其他服务器开展有效扩展。这样一来就能够确保任务得以有序完成。在对虚拟化资源进行动态扩展的情况下,同时能够高效扩展应用,提高计算机云计算的操作水平
3、云服务模式(IaaS、PaaS、SaaS和DaaS)
按照服务划分,云计算的服务类型分为四类,即基础设施即服务(IaaS)、平台即服务(PaaS)、软件即服务(SaaS)和数据即服务(DaaS)。前三种云计算服务有时也称为云计算堆栈,因为它们构建堆栈位于彼此之上
-
基础设施即服务(IaaS)
IaaS向云计算提供商的个人或组织提供虚拟化计算资源,如虚拟机、存储、网络和操作系统。是基础层。在这一层,通过虚拟化、动态化将IT基础资源(计算、网络、存储)聚合形成资源池。资源池即计算能力的集合,终端用户(企业)可以通过网络获得自己需要的计算资源,运行自己的业务系统。这种方式使用户不必自己建设这些基础设施,而是通过付费即可使用这些资源 -
平台即服务(PaaS)
PaaS为开发人员提供通过全球互联网构建应用程序和服务的平台。PaaS为开发、测试和管理软件应用程序提供按需开发环境。这一层除了提供基础计算能力,还具备了业务的开发运行环境,提供包括应用代码、SDK、操作系统以及API在内的IT组件,供个人开发者和企业将相应功能模块嵌入软件或硬件,以提高开发效率。对于企业或终端用户而言,这一层的服务可以为业务创新提供快速、低成本的环境 -
软件即服务(SaaS)
SaaS通过互联网提供按需软件付费应用程序,云计算提供商托管和管理软件应用程序,并允许其用户连接到应用程序并通过全球互联网访问应用程序。实际上,SaaS在云计算概念出现之前就已经存在,并随着云计算技术的发展得到了更好的发展。SaaS的软件是“开箱即用”的,不需要用户安装,软件升级与维护也无须终端用户参与。同时,它还是按需使用的软件,与传统软件购买后就无法退货相较具有无可比拟的优势 -
数据即服务(DaaS)
越来越多的数据沉淀、抽象形成了新的服务DaaS。数据聚合抽象,把数据转换成通用信息,从而为公众提供公共信息服务。不同用户均可利用DaaS满足自己的诉求。此外,通过对各类数据信息进一步加工形成信息组合应用,会进一步盘活数据,提升数据价值。就像搭积木一样,对基础数据信息块以不同的方式进行组装,可以达到千变万化的效果。DaaS服务已成为当下数字化转型的重要抓手
对企业而言,可根据需要使用上述某一种模式的云服务
4、云计算分类(公有云、私有云和混合云)
按照商业模式的不同,云计算被分为了三大类:公有云、私有云和混合云。这三种模式构成了云计算基础设施构建和消费的基础
1)公有云
公有云为第三方云厂商所拥有和运营,他们通过Internet提供其计算资源(如服务器和存储空间)。在公有云中,所有硬件、软件和其他支持性基础结构均由云厂商提供和管理。公有云使用Web浏览器访问服务和管理账户
公有云开放给所有公众用户。这种云计算模式由拥有其庞大数据中心的服务商运营,其中的计算和存储资源在客户之间进行共享
公有云优点:
- 灵活性: 企业可以立即配置和部署新的计算资源,产品和服务可以实现第一时间上线。而且在之后的运行中,根据需求变化而进行的计算资源组合更改也会变得非常简单
- 可扩展性: 当应用程序的使用或数据增长时,根据需求而进行的计算资源增加会变得非常轻松。很多公有云服务商的服务还包括自动扩展功能,所以用户不必考虑何时要增添计算实例或存储——这一切都将自动完成
- 实用性: 虽然公有云的运行中断在一定程度上影响了其实用性,但这也是事出有因的,因为公有云要考虑其大量的用户。一般来说,公有云要比传统数据中心和依托自己数据中心的私有云要花费更多的运行时间。很多公司将公有云服务纳入其业务连续性(BC)和灾难恢复(DR)计划中,从而可以实现远程数据中心的运行与访问,并避免可能会出现的自然灾害
- 高性能: 当公司为部分工作任务提供高性能计算(HPC)时,公有云将使得这部分工作变得轻松,并且客户只用为所需要的功能进行支付。反之,在自己的数据中心安装HPC系统将会是十分昂贵的。还有,不同于小型公司需要花费较长的更新周期,大型公有云服务商可以在其数据中心安装最新的应用与程序
- 低成本: 由于规模的原因,公有云数据中心可以取得大部分公司难以企及的经济效益。所以,公有云服务商的产品定价通常处于一个相当低的水平。除了购买成本,通过公有云,用户同样也可以节省其他成本,因为他们可以减少或去除用来雇佣IT管理人员的资金。同时,用户可以摆脱为了满足激增的需求而不停的增加服务器的局面。 而且,公有云将一些资本费用(购买软硬件时的一次性成本)转化为业务费用(经常性订阅费用),这会有利于公司的财务报表的数据呈现
- 位置独立性: 用户可以从任何终端设备上获得公有云的服务。所以企业可以在员工实现高移动性,并打通地域的限制的协作,从而提高整体的生产力
公有云缺点:
- 安全问题
2)私有云
私有云是指专供一个企业或组织使用的云计算资源。不同于公有云模式中共享的设施使用,私有云模式中每个公司使用的服务器或存储应用都是单独的
私有云有两种不同的模式:
-
公司在自己的数据中心中建立的私有云
-
服务商提供设施和存储中心的私有云。该模式中,服务商将负责数据应用的托管服务,和客户间并不会共享服务器
私有云优点:
-
安全:这是用户选择私有云的最主要原因。通过内部的私有云,公司可以控制其中的任何设备,从而部署任何他们觉得合适的安全措施。不过需要指出的是,小型公司可能不会具备大型公有云供应商那样的云安全知识,因此他们可能不会像这些服务商一样做好保护网络安全的工作
-
可预测成本:因为用户将要购买自己的软件与硬件,所以他们会确切知道每月的花费成本。而且他们也不必担心使用更多服务所带来的额外开支
-
定制化:内部私有云还可以让公司能够精确的选择进行自身程序应用和数据存储的硬件。不过实际上,他们也不必亲自来购买这些硬件,因为服务商可以提供这些硬件的服务
-
位置独立性:如同公有云,私有云也支持任何网络连接设备
-
提升灵活性和扩展性:比起传统数据中心,私有云会带来更高的灵活性和扩展性;不过私有云所提升的效果不如公有云明显
私有云缺点:
-
总体成本:由于公司购买并管理自己的设备,所以私有云不会像公有云那样带来很多的成本节约。而且,在私有云部署时,员工成本和资本费用依然会很高
-
管理复杂性: 使用私有云时,公司必须处理内部的所有事务,而在公有云中,这些事务将由服务商来解决。因此,公司必须独自进行自己内部私有云中的配置,部署,监控和设备保护等一系列的工作。此外,他们还需要购买和运行用来管理,监控和保护云环境的软件
-
有限灵活性,扩展性和实用性:私有云的灵活性不高,如果某个项目所需的资源尚不属于目前的私有云,那么获取这些资源并将其增添到云中可能会花费几周甚至几个月的时间。 同样,当需要满足更多的需求时,扩展私有云的功能也会比较困难。而实用性则需要依靠基础设施管理和连续性计划及灾难恢复计划(BC/DR)工作的成果决定
3)混合云
众所周知,混合云是将单个或多个私有云和单个或多个公有云结合为一体的云环境。这样用户可以同时回避公有云和私有云的劣势。例如,用户可以将机密性的数据保存于更安全的私有云中,但同时使用低成本高性能的公有云应用来获取数据。或者用户可以在私有云中运行电子商务网站,但在销售时应用公有云端的服务
混合云的优点:
-
灵活性:这是混合云的一大制胜法宝。混合云允许用户根据自身需求,同时使用最适合的私有云和公有云应用;用户可以将二者取长补短,而不用去考虑到底哪种云更具优势
-
提升灵活性、可扩展性和实用性:因为混合云连接了公有云和私有云,因此其自身亦具有公有云的这些特性
-
位置独立性:混合云的该优势如同上面所介绍的三种云一样,在此不多赘述
混合云的缺点:
-
管理复杂性:该劣势也是目前混合云的最大症结所在。如果公司想要在单一的环境中同时管理不同类型的云,那么他们就需要额外购买自动化和其他专用的工具。而且,公司还需要对员工进行培训,以确保他们可以在混合云环境中进行建立,集成,管理,监控和保护等一系列的工作任务。对任何公司来说,培训通常都是个很大的难题,而且当用户增加云服务应用的使用时,该问题还会变得愈发严重
-
不可预测的成本:因为混合云使用了一些公共服务资源,用户可能将会面对由高利用率而带来的高额花费。不过,一般来说,用户公司还是会比较关注于混合云所带来的成本下降,而不是这些不可预测的成本
最后,总结一下本文中涉及到的云计算、云存储、云服务和云平台之间的区别:
-
云计算(Cloud Computing)是一种基于互联网的计算方式,它通过虚拟化技术将计算资源、存储资源、网络资源等资源组合起来,提供给用户按需使用,用户可以通过互联网随时随地访问这些资源,无需自己购买和维护硬件设备
-
云存储(Cloud Storage)是云计算的一种应用场景,它是指将数据存储在云计算平台上,用户可以通过互联网随时随地访问自己的数据,无需自己购买和维护存储设备
-
云服务(Cloud Service)是指在云计算平台上提供的各种服务,包括计算服务、存储服务、数据库服务、安全服务、监控服务等
-
云平台(Cloud Platform)是指在云计算基础上提供的一种平台服务,它可以支持开发者在上面构建自己的应用程序和服务,包括应用程序开发、测试、部署、管理等。常见的云平台有AWS、阿里云等