五分钟学后端技术:一篇文章告诉你如何学习云计算!

做者:刘超 java

什么是云计算

早在十年前,市场上就出现了不少和云计算相关的岗位,当时正是云计算技术最火热的时代,无论是BAT仍是华为等企业都开始布局云计算,因而OpenStack研发、容器研发、底层开发等相关岗位相应地也愈来愈多,虽然这几年大数据和AI的风头已经彻底压过了云计算,可是这一门技术仍然在现现在的技术体系中占有很重要的位置。那么,到底什么是云计算,就是咱们每个要学习云计算技术的朋友要了解的事情了,根据百度百科的介绍linux

大数据(big data),IT行业术语,是指没法在必定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是须要新处理模式才能具备更强的决策力、洞察发现力和流程优化能力的海量、高增加率和多样化的信息资产。
在维克托·迈尔-舍恩伯格及肯尼斯·库克耶编写的《大数据时代》 [1] 中大数据指不用随机分析法(抽样调查)这样捷径,而采用全部数据进行分析处理。大数据的5V特色(IBM提出):Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性)。 [2]程序员

思惟导图

云计算

云计算的发展史

物理机时代

云计算的整个过程,用一个词来说就是“分久必合,合久必分”。web

云计算其实主要解决了四个方面的内容:计算,网络,存储,应用。前三者是资源层面的,最后是应用层面的。算法

计算是CPU和内存,为啥?1+1这个最简单的算法是把1放在内存里面,运行加法是CPU作的,作完告终果2又保存在内存里面。
网络就是你插根网线能上网。
存储就是你下个电影有地方放。本次讨论就是围绕这四个部分来说的。
 在原始社会,你们最爱用的是物理设备:docker

服务器用的是物理机,例如戴尔,惠普,IBM,联想等物理服务器,随着硬件设备的进步,物理服务器愈来愈强大了,64核128G内存都算是普通配置。
网络用的是硬件交换机和路由器,例如思科的,华为的,从1GE到10GE,如今有40GE和100GE,带宽愈来愈牛。
存储方面有的用普通的磁盘,也有了更快的SSD盘。容量从M,到G,连笔记本电脑都能配置到T,更况且磁盘阵列。
 若是部署应用直接使用物理机,看起来很爽,总有种土豪的感受,却又大大的缺点:数据库

人工运维:若是你在一台服务器上安装软件,把系统安装坏了,怎么办?只有重装。当你想配置一下交换机的参数,须要串口连上去进行配置。当你想增长一块磁盘,总要买一块插进服务器。这些都须要人工来,并且很大可能要求机房。大家公司在北五环,机房在南六环,这酸爽。
浪费资源:其实你只想部署一个小小的网站,却要用128G的内存。混着部署吧,就有隔离性的问题。
 隔离性差:你把好多的应用部署在同一台物理机上,他们之间抢内存,抢cpu,一个写满了硬盘,另外一个就无法用了,一个弄挂了内核,另外一个也同时挂了,若是部署两个相同的应用,端口还会冲突,动不动就会出错。
 因而有了第一次合久必分的过程,叫作虚拟化。所谓虚拟化,就是把实的变成虚的。编程

虚拟机的诞生

物理机变为虚拟机:cpu是虚拟的,内存是虚拟的,内核是虚拟的,硬盘是虚拟的。
物理交换机变为虚拟交换机:网卡是虚拟的,交换机是虚拟的,带宽也是虚拟的。
物理存储变成虚拟存储:多块硬盘虚拟成一大块。
 虚拟化很好的解决了上面的三个问题:ubuntu

人工运维:虚拟机的建立和删除均可以远程操做,虚拟机被玩坏了,删了再建一个分钟级别的。虚拟网络的配置也能够远程操做,建立网卡,分配带宽都是调用接口就能搞定的。
浪费资源:虚拟化了之后,资源能够分配的很小很小,好比1个cpu,1G内存,1M带宽,1G硬盘,均可以被虚拟出来。
隔离性差:每一个虚拟机有独立的cpu, 内存,硬盘,网卡,不一样虚拟机的应用互不干扰。
可是虚拟化还有如下的缺点,经过虚拟化软件建立虚拟机,须要人工指定放在哪台机器上,硬盘放在哪一个存储设备上,网络的VLAN ID,带宽具体的配置,都须要人工指定。因此单单使用虚拟化的运维工程师每每有一个Excel表格,有多少台机器,每台机器部署了哪些虚拟机。因此,通常虚拟化的集群数目都不是特别的大。windows

在虚拟化阶段,领跑者是Vmware,能够实现基本的计算,网络,存储的虚拟化。

固然这个世界有闭源,就有开源,有windows就有linux,有apple就有andord,有Vmware,就有Xen和KVM。在开源虚拟化方面,Xen方面Citrix作的不错,后来Redhat在KVM发力很多。

对于网络虚拟化,有Openvswitch,能够经过命令建立网桥,网卡,设置VLAN,设置带宽。

对于存储虚拟化,对于本地盘,有LVM,能够将多个硬盘变成一大块盘,而后在里面切出一小块给用户。

为了解决虚拟化阶段剩余的问题,因而有了分久必合的过程。这个过程咱们能够形象的称为池化,也就是说虚拟化已经将资源分的很细了,可是对于如此细粒度的资源靠Excel去管理,成本过高,能不能打成一个大的池,当须要资源的时候,帮助用户自动的选择,而非用户指定。因此这个阶段的关键点:调度器Scheduler。

公有云和私有云

因而vmware有了本身的vcloud。

因而基于Xen和KVM的私有云平台CloudStack,后来Citrix将其收购后开源。

当这些私有云平台在用户的数据中内心面卖的其贵无比,赚的盆满钵满的时候。有其余的公司开始了另外的选择,这就是AWS和Google,开始了公有云领域的探索。

AWS最初就是基于Xen技术进行虚拟化的,而且最终造成了公有云平台。也许AWS最初只是不想让本身的电商领域的利润所有交给私有云厂商吧,因而本身的云平台首先支撑起了本身的业务,在这个过程当中,AWS本身严肃的使用了本身的云计算平台,使得公有云平台不是对于资源的配置更加友好,而是对于应用的部署更加友好,最终大放异彩。

若是咱们仔细观察就会发现,私有云和公有云使用的是相似的技术,却在产品设计上是彻底不一样的两种生物。私有云厂商和公有云厂商也拥有相似的技术,却在产品运营上呈现出彻底不一样的基因。

私有云厂商都是卖资源的,因此每每在卖私有云平台的时候每每伴随着卖计算,网络,存储设备。在产品设计上,私有云厂商每每强调又长又详尽,可是客户几乎不会使用的计算,网络,存储的技术参数,由于这些参数能够用来和友商对标的过程当中占尽优点。私有云的厂商几乎没有本身的大规模应用,因此私有云厂商的平台作出来是给别人用的,本身不会大规模使用,因而产品每每围绕资源展开,而不会对应用的部署友好。

公有云的厂商每每都是有本身的大规模应用须要部署的,因此其产品的设计,能够将常见的应用部署所须要的模块做为组件提供出来,用户能够像拼积木同样,拼接一个适用于本身应用的架构。公有云厂商没必要要关心各类技术参数的PK,没必要关心是否开源,是否兼容各类虚拟化平台,兼容各类服务器设备,网络设备,存储设备。你管我用什么,客户部署应用方便就好。

OpenStack的诞生

固然公有云的第一名AWS活的很爽,第二名Rackspace就不太爽了,没错,互联网行业嘛,基本上就是一家独大。第二名如何逆袭呢?开源是很好的办法,让整个行业你们一块儿为这个云平台出力,兄弟们,你们一块儿上。因而Rackspace与美国航空航天局(NASA)合做创始了开源云平台OpenStack。OpenStack如今发展的和AWS有点像了,因此从OpenStack的模块组成,能够看到云计算池化的方法。

OpenStack包含哪些组件呢?

计算池化模块Nova:OpenStack的计算虚拟化主要使用KVM,然而到底在那个物理机上开虚拟机呢,这要靠nova-scheduler。

网络池化模块Neutron:OpenStack的网络虚拟化主要使用Openvswitch,然而对于每个Openvswitch的虚拟网络,虚拟网卡,VLAN,带宽的配置,不须要登陆到集群上配置,Neutron能够经过SDN的方式进行配置。

存储池化模块Cinder:OpenStack的存储虚拟化,若是使用本地盘,则基于LVM,使用哪一个LVM上分配的盘,也是用过scheduler来的。后来就有了将多台机器的硬盘打成一个池的方式Ceph,则调度的过程,则在Ceph层完成。

有了OpenStack,全部的私有云厂商都疯了,原来VMware在私有云市场实在赚的太多了,眼巴巴的看着,没有对应的平台能够和他抗衡。如今有了现成的框架,再加上本身的硬件设备,你能够想象到的全部的IT厂商的巨头,所有加入到社区里面来,将OpenStack开发为本身的产品,连同硬件设备一块儿,杀入私有云市场。

网易固然也没有错过此次风口,上线了本身的OpenStack集群,网易蜂巢基于OpenStack自主研发了IaaS服务,在计算虚拟化方面,经过裁剪KVM镜像,优化虚拟机启动流程等改进,实现了虚拟机的秒级别启动。在网络虚拟化方面,经过SDN和Openvswitch技术,实现了虚拟机之间的高性能互访。在存储虚拟化方面,经过优化Ceph存储,实现高性能云盘。

可是网易并无杀进私有云市场,而是使用OpenStack支撑起了本身的应用,这是互联网的思惟,没错。仅仅是资源层面弹性是不够的,还须要开发出对应用部署友好的组件。例如数据库,负载均衡,缓存等,这些都是应用部署必不可少的,也是网易在大规模应用实践中,千锤百炼过的。这些组件称为PaaS。

从IAAS到PAAS

前面一直在讲IaaS层的故事,也即基础设施即服务,基本上在谈计算,网络,存储的事情。如今应该说说应用层的事情了。

IaaS的定义比较清楚,PaaS的定义就没那么清楚了,有的把数据库,负载均衡,缓存做为PaaS服务,有的把大数据Hadoop, Spark平台做为PaaS服务,有的讲应用的安装与管理,例如Puppet, Chef, Ansible做为PaaS服务。

其实PaaS主要用于管理应用层的,我总结两部分:一部分是你本身的应用应当自动部署,好比Puppet, Chef, Ansible, Cloud Foundry等,能够经过脚本帮你部署,一部分是你以为复杂的通用应用不用部署,好比数据库,缓存,大数据平台,能够在云平台上一点即得。

要么就是自动部署,要么不用部署,总的来讲就是应用层您也少操心,就是PaaS的做用。固然最好是都不用部署,一键可得,因此公有云平台将通用的服务都作成了PaaS平台。另外一些应用,是您本身开发的,除了你本身,其余人都不知道,因此您能够用工具变成自动部署。

有了PaaS最大的优势,就是能够实现应用层的弹性伸缩。好比双十一来了,10个节点要变成100个节点,若是使用物理设备,再买90台机器当然来不及,仅仅只有IaaS实现资源的弹性是不够的,再建立90台虚拟机,也是空的啊,仍是须要运维人员一台一台的部署。因此有了PaaS就行了,一台虚拟机启动后,立刻运行自动部署脚本,进行应用的安装,90台机器自动安装好了应用,才是真正的弹性伸缩。

固然这种部署方式也有一个问题,就是不管Puppet, Chef, Ansible把安装脚本抽象的再好,说到底也是基于脚本的,然而应用所在的环境千差万别,文件路径的差异,文件权限的差异,依赖包的差异,应用环境的差异,Tomcat, PHP, Apache等软件版本的差异,JDK,Python等版本的差异,是否安装了一些系统软件,是否占用了哪些端口,均可能形成脚本执行的不成功。因此看起来是一旦脚本写好,就可以快速复制了,可是一旦环境稍有改变,就须要把脚本进行新一轮的修改,测试,联调。例如在数据中心写好的脚本,移到AWS上就不必定直接能用,在AWS上联调好了,迁移到Google Cloud上去也可能再会出问题。

容器的诞生

因而容器应运而生。容器是Container,Container另外一个意思是集装箱,其实容器的思想就是要变成软件交付的集装箱。集装箱的特色,一是打包,二是标准。设想没有集装箱的时代,若是从A将货物运到B,中间要通过三个码头,换三次船的话,每次货物都要卸下船来,摆的七零八落,而后再换船的时候,须要从新整齐摆好,因此没有集装箱的时候,船员们都可以在岸上待几天再走。然而有了集装箱,全部的货物都打包在一块儿了,而且集装箱的尺寸所有一致,因此每次换船的时候,总体一个箱子搬过去就能够了,小时级别就能完成,船员不再能上岸长时间休息了。因此设想A就是程序员,B就是用户,货物就是代码及运行环境,中间的三个码头分别是开发,测试,上线。

 

假设代码的运行环境以下:

1.        Ubuntu操做系统

2.        建立用户hadoop

3.        下载解压缩JDK 1.7在某个目录下

4.        将这个目录加入JAVA_HOME和PATH的环境变量里面

5.        将环境变量的export放在hadoop用户的home目录下的.bashrc文件中

6.        下载并解压缩tomcat 7

7.        将war放到tomcat的webapp路径下面

8.        修改tomcat的启动参数,将Java的Heap Size设为1024M

 

看,一个简单的Java网站,就须要考虑这么多零零散散的东西,若是不打包,就须要在开发,测试,生产的每一个环境上查看保证环境的一致,甚至要将这些环境从新搭建一遍,就像每次将货物打散了重装同样麻烦,中间稍有差池,好比开发环境用了JDK 1.8,而线上是JDK 1.7,好比开发环境用了root用户,线上须要使用hadoop用户,均可能致使程序的运行失败。

容器如何对应用打包呢?仍是要学习集装箱,首先要有个封闭的环境,将货物封装起来,让货物之间互不干扰,互相隔离,这样装货卸货才方便。好在ubuntu中的lxc技术早就能作到这一点,这里主要使用了两种技术,一种是看起来是隔离的技术,称为namespace,也即每一个namespace中的应用看到的是不一样的IP地址,用户空间,进程号等。另外一种是用起来是隔离的,称为cgroup,也即明明整台机器有不少的CPU,内存,而一个应用只能用其中的一部分。

有了这两项技术,集装箱的铁盒子咱们是焊好了,接下来是决定往里面放什么的时候了。最简单粗暴的方法,就是将上面列表中全部的都放到集装箱里面。可是这样太大了,由于虚拟机的镜像就是这样的,动辄几十G,若是你安装一个干干静静的ubuntu操做系统,什么都不装,就很大了。这其实至关于把船也放到了集装箱里面,答案固然是NO.

因此撇下第一项操做系统,剩下的全部的加起来,也就几百M,就轻便多了。因此一台服务器上的容器是共享操做系统内核的,容器在不一样机器之间的迁移不带内核,这也是不少人声称容器是轻量级的虚拟机的缘由。轻不白轻,天然隔离性就差了,一个集装箱把船压漏水了,全部的集装箱一块儿沉。

另外一个须要撇下的就是随着应用的运行而产生并保存在本地的数据,多以文件的形式存在,例如数据库文件,文本文件。这些文件会随着应用的运行,愈来愈大,若是这些数据也放在容器里面,会让容器变得很大,影响容器在不一样环境的迁移。并且这些数据在开发,测试,线上环境之间的迁移是没有意义的,生产环境不可能用测试环境的文件,因此每每这些数据也是保存在容器外面的存储设备上。也是为何人们称容器是无状态的。

至此集装箱焊好了,货物也装进去了,接下来就是如何将这个集装箱标准化,从而在哪艘船上都能运输。这里的标准一个是镜像,一个是容器的运行环境。所谓的镜像,就是将你焊好集装箱的那个时刻,将集装箱的状态保存下来,就像孙悟空说定,集装箱里面就定在了那一刻,而后将这一刻的状态保存成一系列文件。这些文件的格式是标准的,谁看到这些文件,都能还原当时定住的那个时刻。将镜像还原成运行时的过程,就是读取镜像文件,还原那个时刻的过程,也就是容器的运行的过程。除了大名鼎鼎的Docker,还有其余的容器,例如AppC,Mesos Container,都能运行容器镜像。因此说容器不等于Docker。

总而言之,容器是轻量级的,隔离差的,适用于无状态的,基于镜像标准实现跨主机,跨环境的随意迁移。

有了容器,使得PaaS层对于用户自身应用的自动部署变得快速而优雅。容器快,快在了两方面,第一是虚拟机启动的时候要先启动操做系统,容器不用启动操做系统,由于是共享内核的。第二是虚拟机启动后使用脚本安装应用,容器不用安装应用,由于已经打包在镜像里面了。因此最终虚拟机的启动是分钟级别,而容器的启动是秒级。容器咋这么神奇。其实一点都不神奇,第一是偷懒少干活了,第二是提早把活干好了。

由于容器的启动快,人们每每不会建立一个个小的虚拟机来刚刚部署应用,由于这样太费时间了,而是建立一个大的虚拟机,而后在大的虚拟机里面再划分容器,而不一样的用户不共享大的虚拟机,能够实现操做系统内核的隔离。

这又是一次合久必分的过程。由IaaS层的虚拟机池,划分为更细粒度的容器池。

容器的粒度更加细,管理起来更难管,甚至是手动操做难以应对的。假设你有100台物理机,其实规模不是太大,用Excel人工管理是没问题的,可是一台上面开10台虚拟机,虚拟机的个数就是1000台,人工管理已经很困难了,可是一台虚拟机里面开10个容器,就是10000个容器,你是否是已经完全放弃人工运维的想法了。

因此容器层面的管理平台是一个新的挑战,关键字就是自动化:

自发现:容器与容器之间的相互配置还能像虚拟机同样,记住IP地址,而后互相配置吗?这么多容器,你怎么记得住一旦一台虚拟机挂了重启,IP改变,应该改哪些配置,列表长度至少万行级别的啊。因此容器之间的配置经过名称来的,不管容器跑到哪台机器上,名称不变,就能访问到。
自修复:容器挂了,或是进程宕机了,能像虚拟机那样,登录上去查看一下进程状态,若是不正常重启一下么?你要登录万台docker了。因此容器的进程挂了,容器就自动挂掉了,而后自动重启。
弹性自伸缩 Auto Scaling:当容器的性能不足的时候,须要手动伸缩,手动部署么?固然也要自动来。
若是有了容器的管理平台,又是一次分久必合。

容器管理平台

当前火热的容器管理平台有三大流派:

一个是Kubernetes,咱们称为段誉型。段誉(Kubernetes)的父亲(Borg)武功高强,出身皇族(Google),管理过偌大的一个大理国(Borg是Google数据中心的容器管理平台)。做为大理段式后裔,段誉的武功基因良好(Kubernetes的理念设计比较完善),周围的高手云集,习武环境也好(Kubernetes生态活跃,热度高),虽然刚刚出道的段誉武功不及其父亲,可是只要跟着周围的高手不断切磋,武功既能够飞速提高。

一个是Mesos,咱们称为乔峰型。乔峰(Mesos)的主要功夫降龙十八掌(Mesos的调度功能)独步武林,为其余帮派所无。并且乔峰也管理过人数众多的丐帮(Mesos管理过Tweeter的容器集群)。后来乔峰从丐帮出来,在江湖中特例独行(Mesos的创始人成立了公司Mesosphere)。乔峰的优点在于,乔峰的降龙十八掌(Mesos)就是在丐帮中使用的降龙十八掌,相比与段誉初学其父的武功来讲,要成熟不少。可是缺点是,降龙十八掌只掌握在少数的几个丐帮帮主手中(Mesos社区仍是以Mesosphere为主导),其余丐帮兄弟只能远远崇拜乔峰,而没法相互切磋(社区热度不足)。

一个是Swarm,咱们称为慕容型。慕容家族(Swarm是Docker家族的集群管理软件)的我的功夫是很是棒的(Docker能够说称为容器的事实标准),可是看到段誉和乔峰可以管理的组织规模愈来愈大,有一统江湖的趋势,着实眼红了,因而开始想建立本身的慕容鲜卑帝国(推出Swarm容器集群管理软件)。可是我的功夫好,并不表明着组织能力强(Swarm的集群管理能力),好在慕容家族能够借鉴段誉和乔峰的组织管理经验,学习各家公司,以彼之道,还施彼身,使得慕容公子的组织能力(Swarm借鉴了不少前面的集群管理思想)也在逐渐的成熟中。

云计算方面核心技术有哪些?

做者:冰岛社区-陈昊 
来源:知乎
著做权归做者全部。商业转载请联系做者得到受权,非商业转载请注明出处。

云计算是一种以数据和处理能力为中心的密集型计算模式,它融合了多项ICT技术,是传统技术“平滑演进”的产物。其中以虚拟化技术、分布式数据存储技术、编程模型、大规模数据管理技术、分布式资源管理、信息安全、云计算平台管理技术、绿色节能技术最为关键。

一、虚拟化技术

 虚拟化是云计算最重要的核心技术之一,它为云计算服务提供基础架构层面的支撑,是ICT服务快速走向云计算的最主要驱动力。能够说,没有虚拟化技术也就没有云计算服务的落地与成功。随着云计算应用的持续升温,业内对虚拟化技术的重视也提到了一个新的高度。与此同时,咱们的调查发现,不少人对云计算和虚拟化的认识都存在误区,认为云计算就是虚拟化。事实上并不是如此,虚拟化是云计算的重要组成部分但不是所有。

  从技术上讲,虚拟化是一种在软件中仿真计算机硬件,以虚拟资源为用户提供服务的计算形式。旨在合理调配计算机资源,使其更高效地提供服务。它把应用系统各硬件间的物理划分打破,从而实现架构的动态化,实现物理资源的集中管理和使用。虚拟化的最大好处是加强系统的弹性和灵活性,下降成本、改进服务、提升资源利用效率。

  从表现形式上看,虚拟化又分两种应用模式。一是将一台性能强大的服务器虚拟成多个独立的小服务器,服务不一样的用户。二是将多个服务器虚拟成一个强大的服务器,完成特定的功能。这两种模式的核心都是统一管理,动态分配资源,提升资源利用率。在云计算中,这两种模式都有比较多的应用。

二、分布式数据存储技术

  云计算的另外一大优点就是可以快速、高效地处理海量数据。在数据爆炸的今天,这一点相当重要。为了保证数据的高可靠性,云计算一般会采用分布式存储技术,将数据存储在不一样的物理设备中。这种模式不只摆脱了硬件设备的限制,同时扩展性更好,可以快速响应用户需求的变化。

  分布式存储与传统的网络存储并不彻底同样,传统的网络存储系统采用集中的存储服务器存放全部数据,存储服务器成为系统性能的瓶颈,不能知足大规模存储应用的须要。分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提升了系统的可靠性、可用性和存取效率,还易于扩展。

  在当前的云计算领域,Google的GFS和Hadoop开发的开源系统HDFS是比较流行的两种云计算分布式存储系统。

  GFS(Google File System)技术:谷歌的非开源的GFS(GoogleFile System)云计算平台知足大量用户的需求,并行地为大量用户提供服务。使得云计算的数据存储技术具备了高吞吐率和高传输率的特色。

  HDFS(Hadoop Distributed File System)技术:大部分ICT厂商,包括Yahoo、Intel的“云”计划采用的都是HDFS的数据存储技术。将来的发展将集中在超大规模的数据存储、数据加密和安全性保证、以及继续提升I/O速率等方面。

三、编程模式

  从本质上讲,云计算是一个多用户、多任务、支持并发处理的系统。高效、简捷、快速是其核心理念,它旨在经过网络把强大的服务器计算资源方便地分发到终端用户手中,同时保证低成本和良好的用户体验。在这个过程当中,编程模式的选择相当重要。云计算项目中分布式并行编程模式将被普遍采用。

  分布式并行编程模式创立的初衷是更高效地利用软、硬件资源,让用户更快速、更简单地使用应用或服务。在分布式并行编程模式中,后台复杂的任务处理和资源调度对于用户来讲是透明的,这样用户体验可以大大提高。MapReduce是当前云计算主流并行编程模式之一。MapReduce模式将任务自动分红多个子任务,经过Map和Reduce两步实现任务在大规模计算节点中的高度与分配。

  MapReduce是Google开发的java、Python、C++编程模型,主要用于大规模数据集(大于1TB)的并行运算。MapReduce模式的思想是将要执行的问题分解成Map(映射)和Reduce(化简)的方式,先经过Map程序将数据切割成不相关的区块,分配(调度)给大量计算机处理,达到分布式运算的效果,再经过Reduce程序将结果汇整输出。

四、大规模数据管理

  处理海量数据是云计算的一大优点。那么如何处理则涉及到不少层面的东西,所以高效的数据处理技术也是云计算不可或缺的核心技术之一。对于云计算来讲,数据管理面临巨大的挑战。云计算不只要保证数据的存储和访问,还要可以对海量数据进行特定的检索和分析。因为云计算须要对海量的分布式数据进行处理、分析,所以,数据管理技术必需可以高效的管理大量的数据。

  Google的BT(BigTable)数据管理技术和Hadoop团队开发的开源数据管理模块HBase是业界比较典型的大规模数据管理技术。

  BT(BigTable)数据管理技术:BigTable是非关系的数据库,是一个分布式的、持久化存储的多维度排序Map.BigTable创建在 GFS,Scheduler, Lock Service和MapReduce之上,与传统的关系数据库不一样,它把全部数据都做为对象来处理,造成一个巨大的表格,用来分布存储大规模结构化数据。 Bigtable的设计目的是可靠的处理PB级别的数据,而且可以部署到上千台机器上。

  开源数据管理模块HBase:HBase是Apache的Hadoop项目的子项目,定位于分布式、面向列的开源数据库。HBase不一样于通常的关系数据库,它是一个适合于非结构化数据存储的数据库。另外一个不一样的是HBase基于列的而不是基于行的模式。做为高可靠性分布式存储系统,HBase在性能和可伸缩方面都有比较好的表现。利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。

五、分布式资源管理

  云计算采用了分布式存储技术存储数据,那么天然要引入分布式资源管理技术。在多节点的并发执行环境中,各个节点的状态须要同步,而且在单个节点出现故障时,系统须要有效的机制保证其它节点不受影响。而分布式资源管理系统恰是这样的技术,它是保证系统状态的关键。

  另外,云计算系统所处理的资源每每很是庞大,少则几百台服务器,多则上万台,同时可能跨跃多个地域。且云平台中运行的应用也是数以千计,如何有效地管理这批资源,保证它们正常提供服务,须要强大的技术支撑。所以,分布式资源管理技术的重要性可想而知。

  全球各大云计算方案/服务提供商们都在积极开展相关技术的研发工做。其中Google内部使用的Borg技术很受业内称道。另外,微软、IBM、Oracle/Sun等云计算巨头都有相应解决方案提出。

六、信息安全

  调查数据代表,安全已经成为阻碍云计算发展的最主要缘由之一。数据显示,32%已经使用云计算的组织和45%还没有使用云计算的组织的ICT管理将云安全做为进一步部署云的最大障碍。所以,要想保证云计算可以长期稳定、快速发展,安全是首要须要解决的问题。

  事实上,云计算安全也不是新问题,传统互联网存在一样的问题。只是云计算出现之后,安全问题变得更加突出。在云计算体系中,安全涉及到不少层面,包括网络安全、服务器安全、软件安全、系统安全等等。所以,有分析师认为,云安全产业的发展,将把传统安全技术提到一个新的阶段。

  如今,无论是软件安全厂商仍是硬件安全厂商都在积极研发云计算安全产品和方案。包括传统杀毒软件厂商、软硬防火墙厂商、IDS/IPS厂商在内的各个层面的安全供应商都已加入到云安全领域。相信在不久的未来,云安全问题将获得很好的解决.

七、云计算平台管理

  云计算资源规模庞大,服务器数量众多并分布在不一样的地点,同时运行着数百种应用,如何有效地管理这些服务器,保证整个系统提供不间断的服务是巨大的挑战。云计算系统的平台管理技术,须要具备高效调配大量服务器资源,使其更好协同工做的能力。其中,方便地部署和开通新业务、快速发现而且恢复系统故障、经过自动化、智能化手段实现大规模系统可靠的运营是云计算平台管理技术的关键。

  对于提供者而言,云计算能够有三种部署模式,即公共云、私有云和混合云。三种模式对平台管理的要求大不相同。对于用户而言,因为企业对于ICT资源共享的控制、对系统效率的要求以及ICT成本投入预算不尽相同,企业所须要的云计算系统规模及可管理性能也大不相同。所以,云计算平台管理方案要更多地考虑到定制化需求,可以知足不一样场景的应用需求。

  包括Google、IBM、微软、Oracle/Sun等在内的许多厂商都有云计算平台管理方案推出。这些方案可以帮助企业实现基础架构整合、实现企业硬件资源和软件资源的统一管理、统一分配、统一部署、统一监控和统一备份,打破应用对资源的独占,让企业云计算平台价值得以充分发挥。

博客

Java技术仓库《Java程序员复习指南》 

整合全网优质Java学习内容,帮助你从基础到进阶系统化复习Java 

相关文章
相关标签/搜索