云计算从字面上可以拆成“云”和“计算”两个部分,要理解它的概念,需要从IT的传统技术讲起,了解什么“软件”、什么是“网络”。
  一、什么是软件
  软件也叫程序,要理解软件的概念,不妨先看下面这个例子——老李想画一个三角形并计算出面积,他找了小李帮忙,交给他一张纸,上面写着这些步骤:

  小李收到了这张纸后,询问了老李三角形三个顶点的坐标,然后在书桌上摊开纸开始工作,他画出三角形并计算面积后把纸交给了老李,任务完成。
  如果我们将老李比喻成程序员,小李比喻成计算机的CPU(中央处理器),那么书桌是内存,三角形三个顶点的坐标是三条输入语句,绘制三角形并计算面积的步骤是软件,一个步骤是一条指令(也叫语句),画了三角形并标注了面积的纸相当于软件的输出,“画一个三角形并计算面积”如软件要完成的任务(也叫程序要处理的数据)。

  通俗地来说,软件是由程序员写的需要让CPU来完成某项任务的步骤,只不过这些步骤是用计算机语言来描述的(常见的计算机语言有C、C++、Java、PHP、Go等)。
  为了能够更加直观地理解软件的运行原理,我们用下面这张图表示一个软件:

  一个软件以文件的形式保存在硬盘上,当我们用鼠标双击它时,这个软件被读到内存,此后CPU按照里面的步骤一步步执行。执行到输入步骤时需要从输入设备上获取信息(键盘和鼠标是常见的输入设备),然后执行一些计算步骤(CPU、内存和硬盘一起组成计算设备),后执行输出步骤,把计算的结果通过输出设备输出(显示器和音箱是常见的输出设备)。对于一些较大的软件,在软件执行的过程中,随时可能要输入,也随时可能会输出,计算步骤也可能安排在任何时候。
  计算设备和输入/输出设备的分离是云计算的核心特征。要明白他们是如何分离的,我们需要了解下一个概念 —— 网络。
  二、什么是网络
  我们平常使用QQ发信息的时候,为什么发的信息能准确无误的发给特定的对象,而不会错发给别人呢?如何把一台计算机发出的信息准确无误地送到另外一台计算机,这是计算机网络所要解决的问题。
  写过信的人都知道,如果要把信送到对方手中,我们需要在信封上写上收件人的详细地址,且保证收信地址是的。计算机也是一样,与外界通信的计算机也必须拥有一个的地址。计算机的地址称为IP地址,格式是“xxx.xxx.xxx.xxx”(xxx的范围为0-255)。

  如果我在深圳,想把信息发送给北京的朋友,在我点击发送按钮后,消息、我的计算机的IP地址、朋友的计算机的IP地址被打包在一起通过宽带发送给深圳电信,然后电信内部传递,后到达北京海淀区电信局后由海淀区电信局通过对方的宽带发给对方的计算机。消息的打包和传递都是由计算机网络自动完成的,以电或光的速度传播,非常快。
  计算机网络的两个重要指标分别是 带宽 和 时延。
  带宽定义为每秒钟能传递的数据量,带宽越大则每秒钟传递的数据量越大。如果把计算机网络比喻成一条高速公路,带宽好比是车道数,车道数越多,每秒能通行的车辆越多。
  网络路径上转发机构的多少决定了一条信息到达对方计算机所消耗的时间,术语称时延。如果再将计算机网络比喻成一条高速公路,时延好比是路途经过的所有收费站交钱所耗时间的总和。一个云计算中心的时延半径通常为100毫秒,即一个数据包从云中心出发,50毫秒所能到达的范围(返回也要50毫秒),时延和地理位置上的远近无关,只和网络路径上的转发机构和数目有关,比如在深圳的超算中心50毫秒的时延半径可能包括了美国的洛杉矶,但没有包括广东省的梅州市,因为深圳与梅州之间要经过很多性能低下的转发设备,而到达美国洛杉矶只经过几台高速路由器。实时输入/输出的软件对计算机网络的时延要求高,尤其是实时强交互软件,比如我们日常使用的QQ。
  带宽和时延是部署云计算时不可忽视的两大重要因素。了解了软件和网络的概念后,理解云计算的本质不远了。
  三、什么是云计算
  我们已经知道软件是程序员写的需要CPU执行以完成某项任务的步骤,这些步骤包括输入/输出步骤和计算步骤,CPU在执行输入/输出步骤时需要使用输入/输出设备,在执行计算步骤时需要使用计算设备。对于普通的计算机而言,计算设备指的是CPU、内存和硬盘,输入/输出设备指键盘、鼠标、显示器、话筒和音箱
  对于传统的个人计算机,计算设备和输入/输出设备通过主板连接在一起,计算设备和输入/输出设备通过主板这个纽带实现协同工作。
  然而,主板并不是可以连接计算设备和输入/输出设备的纽带。当一个软件在执行的时候,用到的输入/输出设备和计算设备是被计算机网络连接在一起的,那么这样的软件执行过程叫云计算。

  “云计算”中的“云”指的是计算机网络。位于计算机网络中的设备通常称为云端,位于人们身边的输入/输出设备通常称为终端。像我们不关心信是经历了哪些机构送出的,只关心信寄出之后对方什么时候能够收到一样;我们并不关心计算机网络具体是由什么组成的,我们只关心申请的宽带带宽是多少,时延大不大。对于我们不关心也不了解的网络组成部分,通常人们喜欢画一朵像云一样的东西来代替,这是云计算名称的来历。
  云计算也可简述为“输入/输出设备和计算机设备分离的软件执行过程”,执行与计算表达的含义相同,因此云计算也可以称为云执行。它是针对软件执行而言的,跟计算机的具体结构无关,也和软件本身关系不大。比如我运行自己计算机上的计算器,不是云计算;但如果我的朋友从北京登录到我的计算机并运行里面的计算器,这时是云计算。
  由上可知,云计算其实并不是什么高大上不可触及的概念,我们的生活各个方面都充满了云计算的应用:我们在用百度搜索关键词时,搜索软件运行在百度的计算机上,通过在亿万个网页中查找,把搜索结果反馈到用户的计算机屏幕上,同理还有在视频网站上看电影、使用邮箱、网盘等等。
  云计算为用户提供了足够的计算资源、海量数据和几乎无限的存储空间,为物联网、大数据、人工智能等新兴产业奠定了基础,为我们的未来打开了无限的想象空间。越来越多的企业开始从传统的IT架构开始向云计算架构转型。