云计算的实施可划分为三个层次,在底层的是构成一个网络架构的基础硬件,包括CPU、内存;基于最底层硬件之上的是一个软体层,包括支持并行计算的操作系统、中间件;位于最上层的由很多具体应用构成,诸如Gmail、Google Docs、Google Picasa Web等等。
Google的三大核心技术构成了实现云计算服务的基础:GFS(Google文件系统)、MapReduce(分布式计算系统) 、BigTable(分布式存储系统)。
GFS位于这三项技术的最底层,负责许多服务器、机器数据的存储工作。它将一个大体积数据(通常在百兆甚至千兆级别)分隔成固定大小的数据块放到两到三个服务器上。这样做的目的是当一个服务器发生故障时,可以将数据迅速从另外一个服务器上恢复过来。在一定程度上,在存储层面,机器故障的处理由Google文件系统来完成。
MapReduce(分布式计算系统),它是Google开发的C++编程工具,用于大于1TB数据的大规模数据集并行运算。这项技术的意义在于,实现跨越大量数据结点将任务进行分割,使得某项任务可被同时分拆在多台机器上执行。例如把一项搜索任务拆分成一两百个小的子任务,经并行处理后,将运算结果在后台合并,最后把最终结果返回到客户端。
BigTable(分布式存储系统),作为 Google一种对于半结构化数据进行分布存储与访问的接口或服务,它是建立在GFS和MapReduce之上的结构化分布式存储系统,可以帮助Google最大限度利用已有的数据存储能力和计算能力,在提供服务时降低运行成本。
如果没有以上软体的支持,云计算战略的最终实现就只能是一个虚幻的梦。Google一直坚信所有的硬件都有可能在某个时间出错,不可靠的硬件数量最好是可靠机型的两倍,最重要的,需要将可靠性放在软件层面。过于关注单个线程的性能意义并不大,对于Google来说,更重要的是对于并行处理技术的完善。为了应对海量级的数据访问和查询,他们需要让每台廉价的服务器的性能发挥到极致,将核心的技术优势牢牢掌握在自己手中才是最安全的。
云计算时代的到来,对于开发者最大的影响就是,如果还像以前一样只和一台计算机和有限的存储打交道已远远不够,以前开发的软件或许只在单机上运行就可以了。但云时代的工程师应该更多的掌握分布式计算的基本原理和开发方法,有能力掌握用于分布式计算的协议或语言,开发出可以运行在几百台、几千台甚至几万台计算机上的应用程序,并用该程序管理分布在不同数据中心的海量存储设备,软件执行的速度需要非常快。
风无形,云无相。 金鳞岂是池中物,一遇风云便化龙。