从零开始理解云计算 Vol.1:什么是云计算

导语

这个系列其实是写给自己的云计算知识学习笔记——作为一个没有专业背景的小白,从零开始理解云计算的过程。王良明的《云计算通俗讲义》是一本入门的好书,本文根据书中的内容进行了思考提炼,尝试从通俗易懂的角度理解云计算的分类。

云计算从字面上可以拆成“云”和“计算”两个部分,要理解它的概念,需要从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架构开始向云计算架构转型。

这个系列的下一篇将从传统IT架构开始进行整理,进一步说明云计算的分类和优势。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据文摘

Twitter新政:变革140字推文限定背后,Twitter有何新目标?

1506
来自专栏峰会SaaS大佬云集

更新c++学习笔记 第一章

参加了几次笔试,发现有很多c++方面的问题被卡了。从现在开始进攻c++。之后会陆续更新c++学习笔记。

271
来自专栏Golang语言社区

转--我们为什么选择Golang重构Worker系统

之前发了一篇帖子,讲了暴漫用golang重构了worker系统,有好多朋友问到语言选择的问题。 其实在用Golang重写我们的worker系统之前是做过很多调研...

3875
来自专栏程序员互动联盟

小菜学Chromium开发系列:OpenGL学习

风雨送春归,飞雪迎春到。已是悬崖百丈冰,犹有花枝俏。俏也不争春, 只把春来报。待到山花烂漫时,她在丛中笑。 这首《毛泽东诗词》·卜算子·咏...

2745
来自专栏QQ会员技术团队的专栏

Unity引擎与C#脚本简介

本文基于 Unity 游戏开发引擎,主要会讲两部分内容:第一部分简单讲讲游戏开发的原理,第二部分会聊聊 Unity 的 C# 游戏脚本。

1.3K9
来自专栏Crossin的编程教室

【每周一坑】3道练习题

如题图所示,今天把论坛(crossin.me)的服务器迁移到一个很萌的云服务上,速度还可以。欢迎大家常来。 这里再次感谢 aresli 同学提供的服务器,让论坛...

34217
来自专栏Python爬虫实战

Python爬虫之六:智联招聘进阶版

运行平台: Windows Python版本: Python3.6 IDE: Sublime Text 其他工具: Chrome浏览器

2001
来自专栏玉树芝兰

如何用Python和R对《权力的游戏》故事情节做情绪分析?

想知道一部没看过的影视剧能否符合自己口味,却又怕被剧透?没关系,我们可以用情绪分析来了解故事情节是否足够跌宕起伏。本文一步步教你如何用Python和R轻松愉快完...

1232
来自专栏哲学驱动设计

UML 图使用心得

在软件开发中,从需求工程到代码工程,都离不开 UML 图的绘制。今天简要总结一下我以往使用 UML 图的一些体会。 很多图,都是由原始需求到代码的一种转换,只是...

1906
来自专栏何俊林

一种支持多种流媒体协议的播放内核

1285

扫码关注云+社区