什么叫做云计算?
主要是提出的概念:用户的手机、pc、笔记本统称为端;网络的服务称为云。端和云的网络格局。
可以从“端”通过“云”(网络)获得强大的计算能力,数据处理能力及其它。
每个端也可以为整个云贡献自己的计算能力。——云计算
狭义云计算指IT基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需资源;
广义云计算指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需服务。这种服务可以是IT和软件、互联网相关,也可是其他服务。
云计算的核心思想,是将大量用网络连接的计算资源统一管理和调度,构成一个计算资源池向用户按需服务。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。
云计算的产业三级分层:云设备、云平台、云软件
那么“云设备、云平台、云软件”又是什么呢?先看看这张图:
基础设施即服务(IaaS):消费者通过Internet可以从完善的计算机基础设施获得服务。
平台即服务(PaaS):PaaS实际上是指将软件研发的平台作为一种服务,以SaaS的模式提交给用户。因此,PaaS也是SaaS模式的一种应用。但是,PaaS的出现可以加快SaaS的发展,尤其是加快SaaS应用的开发速度。
软件即服务(SaaS):软件即服务。它是一种通过Internet提供软件的模式,用户无需购买软件,而是向提供商租用基于Web的软件,来管理企业经营活动。
这些概念挺起来很难懂吧,我在来看一个图:
这样图写的非常明白了,IaaS其实就是一些硬件,网络和操作系统的组成,对于我们程序员来说这部分不需要太多了解,因为我们不可能去组建自己的Iaas,提供给大家使用,就如同我们在各个云计算平台中提到的云存储、VM(虚拟机)或者云服务器。对于开发者来说如果我们使用IaaS,就像我们操作一个服务器一样,只是不用安装操作系统了,因为OS已经包括在IaaS中了。但是和操作服务器又不一样,如果服务器硬盘扩容,加内存,换CPU,扩充带宽等,必须要经过备份/迁移/测试等大量的工作,但IaaS就不一样,我们可以直接“设置”就能解决,实际上就是我们把这些东西都外包给别人,然后我们使用他的服务,一般IaaS供应商会提供这些操作,我们只需要选择我们要什么操作系统,什么样的带宽,什么样的硬件配置,然后设置就可以了,根部不用担心安装OS,防火墙,网络升级,换硬件了什么的了。即“基础设施即服务”。
这已经很大的进步了,不是吗?我们再来看看PaaS吧,我们使用云服务器的时候虽然操作系统不用安装了,硬件网络问题不用担心了,但是我们还是要安装和配置程序的环境,比如说安装IIS,Tomcat,数据库等等。PaaS,就是加入了中间件和数据库,常见的有GAE/SAE/BAE这些。如果我们使用的是PaaS,这些也不用做了,我们只关心程序的开发和部署就可以了,因此我们选择PaaS的时候首先要考虑的就是自己使用的是什么语言和习惯使用的数据库。也就是说我使用的是一个平台,是PaaS供应商提供给我们在互联网上的一种服务。即“平台即服务”
又是一个很大的进步吧?然后是SaaS,如果我们不是万能的程序员,我想用一个OA系统,我们把软件买过来(或者找人开发)后,还要安装部署呢?即便是使用的PaaS,我们也必须知道安装方法啊?想想我们如果想邮箱一样使用OA系统多好,我只需要注册一个账号即可使用,甚至组建自己企业的内部邮箱。这就是SaaS的作用,其实本身企业邮箱(163或者腾迅提供)就是一个SaaS的应用,自己只需要注册用户,然后设置自己企业的邮箱域名,就整个企业的用户可以使用了。我们虽然使用的是软件,但是并不需要自己光盘安装,也不需要软件的维护,我们其实享受的是SaaS这些供应商提供的服务,也就是说“软件即服务”的概念。
如果上面的讲解还不够让你形象的理解,那么我们来打个比方吧:如果我们需要修建一条马路,那么iaas就是这条马路的基石,paas就是这条马路的钢筋水泥,让马路更加牢固,而saas则是这条马路修建后用于别人使用的用途。
对于一般开发者而言:Iaas的具体内容不用去关心太多,那些确实不是我们程序员考虑的。而SaaS我们只需要知道目前比较好用的SaaS有哪些就行了,举一个例子,我们如果想做一个旅游网站,里面用到了天气预报的功能,没有必要我们单独做一个这样功能,我找一个接口好用的天气预报的SaaS,使用他的服务,然后融入到我们的旅游网站就OK了,再如果我们想通过短信提醒用户,那我们我们就使用短信发送的SaaS等。剩下的就只剩下PaaS了,如果我们想把精力全部放在软件开发方面,不想再考虑什么硬件负载,网络连接,黑客攻击,平台兼容,环境搭建这些,那么PaaS绝对是首选,甚至你看不到“我的电脑”,“IIS”看到的就是PaaS供应商为你提供的专业界面,简单实用。
那么下面来看看,我对几大云计算平台做的对比吧:站在程序员角度,我们只考虑一下几个方面:是否提供云服务器(虚拟机)、应用程序引擎、开发环境(语言)、数据库支持等。
|
百度云 |
阿里云 |
腾迅云 |
新浪云 |
盛大云 |
微软云 |
网址 |
yun.baidu.com |
www.aliyun.com |
www.qcloud.com |
sae.sina.com.cn |
www.grandcloud.cn |
www.windowsazure.com |
云服务器 |
无 |
有 |
有 |
无 |
有 |
有 |
应用程序引擎 (Paas) |
BAE |
ACE |
即将推出 |
SAE |
CAE (Beta) |
Windows Azure |
开发环境 |
Node.js PHP Python Java Static |
PHP Java |
预计 PHP Java |
PHP Java Python |
PHP Ruby Java Python 预计.net |
Node.js PHP Python .Net |
云数据库 |
MySQL MongoDB Redis |
MySQL SQL Server |
MySQL |
MySQL |
MySQL MongoDB |
SQL Server |
其他服务 |
语音识别 人脸识别 百度翻译 百度地图 云推送 |
阿里系应用的良好对接 |
腾迅系应用的良好对接 |
短信服务 邮件群发 分词 人脸检测 有道翻译 地理信息 语音识别 音频二维码 |
暂无 |
不用说了 |
备注 |
很成熟 后台硬阿 |
很成熟 后台硬阿 |
收费较高 后台硬阿 |
国内首家 |
后起之秀 基于:CloudFoundry |
目前不支持中国大陆(注册都注册不了) |
这里还要在补充说明一点:云数据库不等于虚拟机中安装的数据库,更不等于放在互联网上的数据库服务器。他们的最大差别就是:云数据库,你只需要关系数据库的内容(表,关系,字段,记录),不用关心怎么安装实例,如何恢复,什么时候备份等这些对于数据库服务这个级别的操作。其实云数据库本身就是一种SaaS。
看完了上面的表格,相信很多.Net爱好者一定很失望吧。哎,没有办法现在支持.Net的太少了,PaaS中的老大CloudFoundry倒是支持,但是现在也不提供注册了。盛大云是基于这个的,估计正式版推出因该支持。
我认为Python有绝对的优势,以后我写一个Python+Django+SAE系列的文章,敬请期待。