《云计算核心技术解剖》迷你书连载五-谷歌的云计算产品
3.1 Google的云计算产品
从云计算角度而言,几乎Google的所有产品都可以被认为是典型的云计算产品。因为Google本身就是世界上最大的云,在全球有30多个数据中心,服务器的总数超过100万台,而且在运营效率和自动化管理程度这两个非常重要的云指标上也是独领风骚的,并且这些产品大都以Web的形式发布。另外,在最近一段时间,Google在云客户端方面也有发力。下面从SaaS、PaaS、IaaS和云客户端这4个方面介绍Google的云计算产品。
3.1.1 SaaS层
在SaaS层,Google的云服务主要可分为两大部分:其一是主要面向个人用户的普通SaaS服务,其二是面对公司和机构的企业级SaaS服务。
1. 普通SaaS服务
大多数Google服务(包括最重要的搜索)都可以归为这类。这些服务可总结为下面这6大类,具体请参考表3-1。
类 别 |
产 品 |
搜索类 |
网页搜索、图片搜索、视频搜索和学术搜索等 |
地图产品 |
Google地图、Google Earth和Google Sky等 |
视频播放 |
YouTube |
照片共享 |
Picasa |
社交站点 |
Orkut |
协作工具 |
Gmail、Google 日历和Google 文档等 |
2. 企业级SaaS服务
Google的企业级SaaS服务统称为Google Apps,它可以有效降低 IT 成本,有助于提高现有员工的工作效率,并且有超过200万家企业已经购买了Google Apps服务,而且每天新注册的企业达数千个。Google Apps主要包括6大组件,下面将介绍这6大组件所支持的特性和功能。
- 企业版Gmail。每位用户都可获得容量达25GB的存储空间,并提供强大的垃圾邮件过滤,与黑莓和Outlook之间的交互,以及99.9% 的正常运行时间可靠性保证。
- Google日历。基于网络的日历应用程序使员工可以有效地协作,并帮助降低成本和IT负担,支持轻松简单的预约,共享项目日历,进行日历的同步,与电子邮件系统集成和通过移动设备进行访问等功能。
- Google文档。可在线编辑和创建Word文档、电子表格和演示文稿,并且支持多人之间的协作编辑和强大的安全访问机制。
- Google网上论坛。用户可创建群组,提供邮件列表,轻松共享内容和搜索存档。
- Google协作平台。它是一种快速创建网页的工具,比较适合Intranet(内联网)和小型团队项目,只需单击几下鼠标即可创建网页,无需编写任何代码,而且支持企业级的安全控制。
- Google视频。可以安全地托管和流化企业的视频,因此员工可随意地分享视频,也无需因复杂的本地视频解决方案而加重企业IT部门的负担。
虽然Google Apps里面有许多服务也存在面向个人用户的普通SaaS版本,但是身为企业级服务的Google Apps,在下面这3方面有一定的增强。其一是在客户支持和可靠性方面。对于重大问题,Google提供全天候电话和电子邮件支持,并保证99.9%正常运行时间的SLA和提供自助式在线支持等。其二是在安全性方面。为确保安全而提供HTTPS访问,同时强制执行SSL协议,并可定制垃圾邮件过滤机制和密码强度要求等。其三是在迁移和集成工具方面,Google Apps提供用于电子邮箱迁移的工具和API,并可与企业的LDAP(Lightweight Directory Access Protocol,轻量目录访问协议)系统进行目录方面的同步,还支持电子邮件的路由和网关、单点登录API以及用户与群组配置API等。
在2010年3月,Google 还发布了Google Apps专属的应用商店Google Apps Marketplace,在这个商店中已经有上百种出色的应用供Google Apps用户选择。比如,用于在客户端的Office和Google文档之间进行同步的OffiSync、出色的在线图片编辑器Aviary和提供在线文件存储的Box.net等。
3.1.2 PaaS层
Google App Engine 提供一整套开发组件让用户轻松地在本地构建和调试网络应用,之后能让用户在Google强大的基础设施上部署和运行网络应用程序,并自动根据应用所承受的负载对应用进行扩展,免去用户对应用和服务器等的维护工作。同时提供大量的免费额度和灵活的资费标准。在开发语言方面,现支持Java和Python两种语言,并为这两种语言提供基本相同的功能和API。关于Google App Engine的具体介绍,将在3.4节展开。
3.1.3 IaaS层
由于与Google本身的业务相比,普通IaaS层的业务在利润率上相对较低,再加上其他一些原因,到现在为止,Google只推出类似Amazon S3的名为Google Storage的云存储服务。
Google Storage是一次构建在Google基础设施之上的云服务,开发者可以非常容易地使用其基于REST模式的API,将他们的应用程序和Google Storage连接起来。这些数据将保存在若干机房内,所以将非常可靠。Google Storage支持数据的强一致性,同时每个请求都可以调用数百GB的对象。开发者可以通过Web管理界面或者 gsulti 这个开源的命令行工具来管理他们的存储内容,比如新建存储库(Bucket)、新建文件夹、批量上传、批量删除和共享文件等。
Google Storage 内置基于 Google 账户的验证与访问控制机制,但目前它只支持个人的Google 账户,未来会加入对 Google Apps 账户的支持。Google Storage 首先向小批开发者开放,在此期间每个开发者将有100GB免费的数据存储空间,每月的数据流量限制为300GB。
3.1.4 云客户端
虽然Google现在的利润主要来源于搜索这样的基于Web的SaaS服务,但是近两年来,Google投入了大量的人力和物力在云客户端方面,并推出了Android、Chrome和Chrome OS这3个产品。
1. Android
Android是主要用于智能移动终端(包括手机和车载设备等)的操作系统和软件平台,并基于Linux内核。这个项目由前苹果工程师、现Google副总裁Andy Rubin创立。2005年7月,Google收购了Android这个项目,并对其进行重点培育。在2007年11月5日,Google正式对外发布了Android,并成立了开放手机联盟(Open Handset Alliance),其中HTC、英特尔、Sprint-Nextel、T-Mobile、中国移动以及NVIDIA等大企业都是这个联盟的成员。
Android平均每半年发布一个新版本,而且都以甜点命名。到现在为止,Android共发布了5个比较重要的版本,具体请看表3-2。
版本号 |
代 号 |
发布日期 |
内 容 |
1.1 |
无 |
2009年2月 |
主要特性包括:闹钟、浏览器、联系人、地图和音乐等基本功能 |
1.5 |
Cupcake |
2009年2月 |
这是第一个主要版本,新增特性包括:录像、蓝牙和复制/粘贴等 |
1.6 |
Donut |
2009年9月 |
新增特性包括:Android 应用市场、手势搜索、语音搜索和应用集成等 |
2.0/2.1 |
Eclair |
2009年10月 |
这个版本的重点在于硬件速度的提升,更多屏幕以及分辨率选择,大幅度的用户界面改良和支持Exchange等 |
2.2 |
Froyo |
2010年5月 |
重要新特性有完整的Flash 10.1支持,最高 5 倍速度提升,Android 云集成,摄像头/视频改进,大量Exchange相关的支持和能将应用安装在记忆卡上等 |
在架构方面,Android总体来说和传统PC架构比较类似,但也有创新的地方,共可分为4个层次。
- 应用程序层。以Java为编程语言,Android从接口到功能都有层出不穷的变化,其中Activity等同于J2ME的MIDlet,一个Activity类负责创建Window,一个活动中的Activity就是在前台(Foreground)模式,后台运行的程序叫作服务(Service)。两者之间通过ServiceConnection机制进行通信,从而实现多个程序同时运行的效果。如果运行中的Activity的全部画面都被其他Activity所取代,该Activity便被停止,甚至系统会清除其所占用的资源。
- 中间件。它是操作系统与应用程序之间沟通的桥梁,分为两部分:函数库(Library)和虚拟机(Virtual Machine)。在函数库方面,有作为改良libc的Bionic,名为OpenCORE的基础多媒体框架,名为skia的内核图形引擎(它支持OpenGL/ES规范)和SQLite数据库系统等。在虚拟机方面,采用了定制的Dalvik 虚拟机。Dalvik虚拟机是一种“寄存器型(Register Based)”的Java虚拟机,变量皆存放于寄存器中,这使得虚拟机的指令得到了一定程度的消减,对手机这种移动设备非常有帮助。Dalvik虚拟机可以有多个实例同时运行,每个Android应用程序都用一个其专属的Dalvik虚拟机来运行,让系统在运行程序时达到优化。Dalvik 虚拟机不是运行Java二进制代码,而是运行一种称为.dex格式的文件。
- 硬件抽象层。Android的硬件抽象层的作用是将Android本身的框架与 Linux的内核隔开,从而降低对Linux内核的依赖,以实现内核独立。Android硬件抽象层目前以存根(stub)的形式存在,本身是“.so”库,是一种类似代理的概念。Android的运行时会向硬件抽象层取得存根的动作,再以回调的方式执行这个动作。
- 操作系统。Android是运行于Linux内核之上的,但并不是传统的GNU/Linux。一般在GNU/Linux 里支持的功能,Android大都不支持。比如Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了,因为Android为了达到商业应用的目的,必须移除被严格的GNU GPL所约束的部分。目前,Android的Linux内核中包括了安全、存储器管理、进程管理、网络栈和驱动程序的模型等模块。
在终端方面,由于其开放性和免费性,所以受到了除RIM、Nokia和苹果之外,其他几乎所有手机厂商的认可。已经推出的著名智能手机终端有:G1 (HTC Dream)、HTC Hero、Motorola Droid、HTC EVO、Motorola Droid X、三星的Galaxy S系列和Google自己的Nexus One,而且在市场占有率方面节节攀升,并在2010年8月份超过iPhone。
2. Chrome
Google Chrome是一个由Google公司开发的网页浏览器,Chrome是化学元素“铬”的英文名称。Google Chrome采用BSD许可证授权并开放源代码,开源计划名为Chromium。截至2010年6月,Chrome浏览器的市场占有率高达7.24%,排名第三,仅次于微软的IE和Mozilla的Firefox。其代码基于其他开源软件所撰写,包括WebKit和Mozilla,并开发出代号为“V8”的高效能的JavaScript处理引擎。Google Chrome的整体发展目标是在稳定性、速度和安全性3方面不断提升,并创造出简单且高效的用户界面。
和其他主流浏览器相比,特别是IE,Chrome在以下4个方面有一定的优势。
- 安全性。在这方面主要有两个机制。其一是黑名单(Blacklists):Chrome会定期地更新用于防止网络钓鱼和恶意软件侵入的黑名单,并在用户试图浏览有潜在危险的网站时予以警告。其二是沙盒(sandbox):Chrome中的每一个标签页都是一个沙盒,以防止恶意软件破坏用户系统。由于遵守最小权限原则,所以Chrome中每个动作的权限都会被限制,一般仅能运算而无法写入文件或者读取存储在敏感区域内的文件。
- 稳定性。支持多进程机制,能容许多个程序同时运行而互不影响,每个网页标签独立于窗口程序存在。当资源过高或崩溃时,不会因为一个停顿而导致整个程序崩溃。
- 速度。利用其内置的JavaScript处理引擎V8来加快运行JavaScript的速度。V8的机制是把JavaScript代码转换成机器码,利用CPU直接运算,减少了解释JavaScript的时间,并使用简易小巧、能有效利用内存的WebKit HTML排版引擎。
- 对HTML5的支持。虽然HTML5规范还没正式发布,但是Chrome已经对大多数的HTML5规范有了很好的支持,比如在高清视频领域,它不仅支持商业的H.264格式,而且还支持开源的VP8格式。
3. Chrome OS
Chrome OS是一个开源、轻量级的操作系统,主要面向移动设备,但与Android主打手机不同的是,Chrome OS主要关注上网本(netbook)和平板(tablet),并且运行Chrome OS系统的上网本CR-48已经作为样品在2010年年底提供给试用者进行测试。这个项目本身也是Chrome的一个延伸。
和Android一样,Chrome OS也是基于Linux内核的,并能够在x86和ARM两个架构下的芯片上运行。在内核之上就只有一个Chrome浏览器,但通过这个Chrome能访问所有基于Web的应用和服务,并支持多种插件。
在设计上,Chrome OS非常关注速度、简便和安全性。首先是速度:Chrome OS在启动后能让用户在几秒钟后就能访问互联网。其次是简便:用户界面就是大家常用的Chrome,而且能直接访问任意基于Web的应用和服务,无需安装任何软件。最后,在安全性方面:和Chrome一样,Google重新设计了Chrome OS的底层安全架构,使用户不必担心病毒和恶意软件,并保障它一直能正常运行。
总体而言,由于Chrome OS基本上以依赖云服务为主,而不是本地的原生应用,所以ChromeOS可以被认为是第一个云操作系统。