云计算概念发端于Google和Amazon等超大规模的互联网公司,随着这些公司业务的成功,作为其支撑技术的云计算也得到了业界的高度认可和广泛传播。时至今日,云计算已被普遍认为是IT产业发展的新阶段,从而被赋予了很多产业和产品层面的意义。由于意义多重,各种概念纷繁复杂,众多公司和从业人员的眼中都有自己的一朵云,正如徐志摩在《偶然》一诗中所说:“我是天空里的一片云,偶尔投影在你的波心”。
传统的系统设计考虑的主要是单机环境,而云计算主要考虑的环境却是数据中心。从单机到数据中心,很多设计原则发生了根本变化,极端点甚至可以说PC时代30年来一以贯之的系统设计原则到今天已完全不适用。
考虑到云计算的诸多内涵,从技术角度讲,数据中心计算 (Datacenter Computing)可能是更合适的表述。本文对数据中心计算的技术领域和设计原则的变化进行了粗浅的探讨。一家之见,仅供参考。
云计算简介
从20世纪80年代个人电脑的发展开始,PC的计算能力不断增强,用一台PC就可以存放个人需要的所有数据并完成处理工作,比如编写文档、处理邮件等。但在互联网时代,一家互联网公司提供服务时需要用到远超过个人规模的数据,这些数据的存储和处理需要成千上万台机器的协同工作才能完成。这种服务器规模不是个人能够提供的,只有大型公司或机构才能拥有,这好像又回到了更早以前的Mainframe时代。从Mainframe到PC再到云,这正是计算机技术螺旋上升的发展过程。
简单来说,云计算就是利用系统架构技术把成千上万台服务器整合起来,为用户提供灵活的资源分配和任务调度能力。这里有几个关键字:一是超大规模,包括机器的数量、用户的数量和并发任务的数量;二是资源整合,成千上万台的服务器资源能集合起来做一件事情,比如存储大量数据,或者处理一个大型任务;三是灵活与快速交付,大规模的服务器资源能进行灵活的调配,按应用需求分解成若干个虚拟的资源池,快速地支持大量的并发请求或作业。
云计算技术的出 现,使整理和加工数据的能力变得空前强大,这种能力可以帮我们找出很多看似无关的事件背后的规律,并用其来预测未来发展。结合移动和物联网等技术,还可以 更好地服务于社会和人们的日常生活,如灾难预警、智慧城市和智能交通等。这种数据处理能力是在海量数据之上发展起来的,与作为基础支撑的系统架构技术同步 发展并逐渐融合,共同组成了现在大家所看到的云计算技术。
综合系统架构和数据处理技术两方面,云计算技术自下而上可分为硬件基础架构、软件基础架构和数据智能三个层面,如图1所示。
图1 云计算技术可分为三个层面
硬件基础架构包括服务器、网络和数据中心的设计与实施等技术领域,软件基础架构聚焦于存储、计算与大规模分布式系统等技术领域,数据智能则关注数据仓库(Data Warehouse)、机器学习(Machine Learning)及数据分析与可视化(Data Analysis & Visualization)等技术领域。值得一提的是,这三个层次的划分主要以技术领域为出发点,而通常提到的云计算三个层次SaaS/PaaS/IaaS则更多地是从资源的提供形态和接口为考虑进行划分的,二者并非同一维度。
时下流行的大数据(Big Data)概念可以看成从海量数据的角度看数据分析技术和软件架构支撑,包括软件基础架构与数据智能相关技术。二者都与数据有关,但其区别在于:软件基础架构关心的主要是数据的格式、容量以及访问模式等,而数据智能更在意数据的语义。
而数据中心计算则是从体系结构的角度看待软硬件系统设计。下文将就相关的技术领域和设计原则进行讨论。
数据中心计算
技术领域与挑战
如图2所示,数据中心计算包含存储、计算、实时存储与计算、超大规模系统、体系结构以及数据中心等技术领域。存储系统的需求来自两个维度。首先,大量的无结构数据需要表(Table)、对象(Object)与文件(File)等多种存储结构进行支持;其次,访问模式的不同(如只读不写、只写少读、读写均匀等)将很大程度上影响对存储系统设计和优化的考虑。
图2 数据中心所包含的技术领域
计算系统的需求和技术特点与计算任务的类型有很大关系。数据密集型的代表是MapReduce,它对CPU和I/O的需求比较均衡。计算密集型任务与通信密集型任务都是CPU密集计算,但二者访问数据的规模不同。如果只需要少量数据则是计算密集型。而如果需要访问大量数据,比如大矩阵迭代,内存限制这些数据必须存放在多台机器上,那么往往此时系统瓶颈将转移到通信的延迟上,这类似于传统的高性能计算。
通常的存储系统和计算系统只能支持到一定级别的延迟和并发度,对于更高的要求则需要基于内存构造实时的存储与计算系统。考虑到内存的特点,在存储上更适合提供具有丰富语义的数据结构。在分布式数据结构的基础上,加入流式数据处理和触发式事件处理的模型,则可以更好地支持实时检索、OLAP、PubSub等应用。
超大规模系统主要通过分布式相关技术保证系统的可用性(availability)和可管理性 (manageability),包括系统建模、设计、开发以及运维等多方面。体系结构包括虚拟机、服务器设计等。数据中心包括机柜设计、网络规划与设计、数据中心设计与建设等,主要关注于能效比(PUE)。
123下一页