IT领域和娱乐圈一样每一个阶段总有那么几个技术(娱乐人物)去抢头条。今天就来聊一聊云计算,就像去评价一个娱乐人物一样,谁也说不清这个人究竟是什么样子。由于在一定的时间里面人们对一个东西的认识往往是片面的。
你不可能说就凭一篇出轨报道就说哪个明星品格不好,也不能仅凭谁搞了一个希望小学就说明那个人道德高尚。
我们认识一个事物须要时间,往往最后到头来才发现,啊~原来是这么个东西。
扯远了。回来说云计算。
这得从web2.0说起。不知道的童鞋请自行维基。起初web2.0非常easy为了应对与用户的交互仅仅是须要一台机器然后上面装了数据库。装了执行时(jre, .net Framework,或者其它虚拟机等等),装了webserver(tomcat,IIS,Apache等等)。随着用的人越来越多发现一个机器不好使了然后開始把webserver和数据库分开。
这时候是两个机器,一个负责web一个是数据库。
然后用的人再次增多,仅仅好再次调整。把webserver搞成集群,前面弄一个负载均衡。然后逐渐发现瓶颈不在webserver了是后面数据库了,于是又把数据库搞一个集群,有的负责读,有的负责写,俗称读写分离。再往后又发现webserver到瓶颈了,那就開始把动态内容和静态内容分开。然后又发现网络宽带不行了,于是開始用CDN。
再往后又发现数据库撑不住了,于是就切割数据库,不管是水平切割还是垂直切割总归目的是让数据库更快的读写。以上的终于目的是让站点能承受很多其它人的訪问。
正是这些技术架构上的演变才成就了今天的Google。Facebook。Amazon这样伟大的公司。
拿谷歌来说他为了应对大量的訪问高了好多数据中心。据说谷歌的数据中心是一堆(这里的堆是指万以上的级别)机器,这里的机器和我们使用的不太一样,搞一个硬盘。搞一个CPU其它的像外围的东西通通省掉,这样一来单个的机器非常便宜(一个机器可能还不到100美金),就是这种机器几万台在一起构成一个数据中心。怎样来形容这个数据中心之大呢。据说这个数据中心本地的电量不能稳定的供给,所以谷歌当年甚至宣称要自己建立发电站以满足电力的供给。
或许有人会操心这么多机器维护起来一定非常麻烦,事实上不是的。找一个看门的老大爷即可了。
比方说一旦有那个机器坏掉了,告诉这个老大爷说哪个哪个架子上哪个哪个机器宕掉了,然后这个大爷就推着装有新机器的小推车过去。把旧的机器拿下来。把新的机器换上去,剩下的事他就不用管了。这个新的机器会自己主动的增加到这个庞大的队伍,然后会自己主动格式化。自己主动安装一些所需的环境以及自己主动的将数据复制进来,终于開始工作。整个过程就好像一个人吃掉一个面包一样,吃完之后这个面包就逐步成为人的一部分(相似这种感觉,请不要思考人类排泄这个动作)。
有了上面一堆的机器能做那些事呢?比方将全球全部的网页进行爬取然后索引以方便后面的查找。
谷歌是怎么做的呢?他将这一推的机器搞成一个逻辑上的硬盘,专业一点儿说就是搞成一个分布式的文件系统。当然他有自己的一套方法,不管你的硬盘在地球上哪里,仅仅要是连上网就把他们变成一个逻辑的硬盘。
并且这个逻辑的硬盘还有非常多优点,当你往里面写的时候他会自己主动的将数据分成几份做备份,肯定不会是简单的复制,利用他自己的一套冗余的范式达到最高效的备份和最高效的恢复。这种优点是能够做负载均衡,第二个优点是能够容灾。
一个大规模的project使得他们有机会将诸如此类的须要大量的计算切割成众多小的计算单元完毕之后merge到一起,这就是著名的MapReduce。
简单的说就是和寻常的程序不同。我们平时查询一个东西须要将数据从硬盘拽到内存其中。然后做对应的查找。如今不是了。数据分散在各地,那么好了我把程序传送到数据所在的地方。然后进行查找,这样每一个机器都做一点儿然后把结果汇总起来,这就是并发式的计算模式。感兴趣的读者能够參考网格计算相关的内容。
相似这种技术这些大型的基于Web2.0的公司不管是从数据的层次还是架构的层次以及应用的层次,他们都进行了非常多的探索。
在之前的十几年其中随着这些系统的进化形成了一套行之有效的分布式计算模式。而这些技术上的演变终于的目的都是为了构件便宜的并且可靠的大规模分布式系统,从而奠定了今天云计算的技术基础。
到这里相信您可能在技术上对云计算有了一定的了解,从Web2.0到如今的云计算是一个自然演变的过程。而绝不是网上所说的云计算是一个新的东西。正是由于有了上面的这些需求和技术做基础,才会有人去实现构建便宜而又可靠的大规模分布式系统,进而有了我们今天看到的云计算。