笔者曾在某500强公司旗下的科技公司任职,当时正值中国科技发展浪潮的起步阶段,著名的“ABCD”战略也成了公司战略转型的最重要内容。那么,ABCD到底指的是什么呢?相信喜欢科技或者看过新闻的同学都知道其含义:A(Artificial Intelligence,人工智能)、B(Block Chain,区块链)、C(Cloud,云计算)和D(Data,大数据)。
相信前面看过我写的文章的同学,都应该了解什么是云计算、大数据和人工智能,但是,为什么唯独少了重要的主角——大B(区块链)呢?首先,相比与老生常谈的ACD,区块链技术没有ACD前面的历史铺垫,理解起来会更加抽象;其次,区块链技术的应用场景相对比较少,没有ACD的应用场景与生活紧密相连;最后,在说到区块链之前,不得不先提到一项神秘的技能。
其实,在ABCD到来之前,就曾经拥有这么一项神秘的技能,这项技能也是ABCD发展的核心技能之一,今天就让我们来揭开它的神秘面纱吧。
业务的发展,带来了IT的模式发展
在前面几期内容中,我们提到了无论是云计算,还是大数据,亦或是人工智能的发展,都是源于用户数和数据量的急剧发展而产生的,这几项技术发展的同时,带来的必然是算力的发展和存储能力的发展,也需要网络的极速发展,才能支撑现在的“互联网+”时代。
众所周知,互联网的发展,必须需要带来技术的变革。在很久以前,一台服务器只运行一个应用,所有跟应用相关的资源都放在此台服务器上,在数据量和访问量都很小的阶段,单台服务器就能够满足业务所需要的运算性能,这种模式,也就是我们说的单体模式,也可以成为单机模式。在单机模式下,如果仅仅是一些访问量和数据量的发展,只能通过提升服务器的配置,来应对暂时的业务发展。
单机模式当然像这种单体服务器,由于既要提供服务能力又要充当存储介质,只需要业务增加,就会到达性能的瓶颈,无论如何扩容配置,都很难满足业务的需求,所以很快就被淘汰了。
这时候,就会有人跳出来说,如果一台服务器不行的话,那么,我就加几台服务器啊,让这几台服务器一起干,这样不就可以满足业务的发展了吗?于是乎,在IT界又多了一种运算模式,就是这样的架构组成的:单机处理到达瓶颈的时候,就把单机复制几份,这样就构成了一个“集群”。集群中每台服务器就叫做这个集群的一个“节点”,所有节点构成了一个集群。每个节点都提供相同的服务,那么这样系统的处理能力就相当于提升了好几倍(有几个节点就相当于提升了这么几倍)。
集群模式然而,如果只是不断加机器就真得能够满足业务的要求了吗?大家都应该知道任何事情都存在一个临界点,只要过了临界点就会降低整体的能力,就好比正态分布曲线,单纯的加机器这种模式,渐渐就跟不上性能发展了。
临界点这时候,就需要我们今天的主角来救场了。他就是——分布式系统。
什么是分布式系统?
分布式的理论出现在19世纪70年代,然而,分布式系统的发展却由于最近十年发生的IT变革。狭义上的分布式系统是指通过网络连接的计算机系统,每个计算节点承担独立的计算和存储,节点之间通过网络协同工作,因此整个系统中的事件可以同时发生。这是什么意思呢?我们就拿学校做饭举例吧,分布式和集群可以用学校食堂来比喻。
单点模式:学校刚开始规模小,学生比较少,学校食堂只有一个厨师A,负责洗菜、切菜、炒菜(假设只有这三样工作)。这就是单机服务。其缺点就是人多的时候忙不过来,学生需要排队等待。厨师A因故无法上班则学生就没饭吃了。
学校规模逐渐增大,学生越来越多,一个厨师A忙不过来,学校又聘请了两人B和C。
这样有两种选择:
集群模式:如果B和C都擅长炒菜,那么让B和C都去炒菜。改善点是提高了效率,任何一个厨师辞职都不会影响学生就餐。缺点就是精力不能完全用在专业的领域,因为他们都还需要洗菜、切菜。
分布式系统:如果B擅长洗菜,C擅长切菜,那么让B负责洗菜,C负责切菜,A只负责炒菜。改善点是提高了效率,能专一做一件事。(假设每个人只做自己的事情)缺点是任何一个人因故不能上班,则学生还是没饭吃了。
后来学校规模再次增加,学生人数再次增多,这三人又忙不过来了,学校再次聘请六个人分别是A2、A3、B2、B3、C2、C3。(假设让之前的B负责洗菜、C负责切菜)让A2、A3负责和A一起炒菜,B2、B3和B一起洗菜,C2、C3和C一起切菜。炒菜组、洗菜组、切菜组分别再任命一组长(此组长不负责干活)只负责看谁比较清闲就把任务分给他,让每个人都有事可做,此组长的作用就是管理和调度。这样规划之后既提升了效率,又避免了以上的问题。此模式整体上是分布式的,但是分别在洗菜、切菜、炒菜的工作上,各自都是集群的。无论哪个岗位因故缺席一人,也不会影响学生就餐。
那么如此看来:分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。
分布式架构分布式的好处是什么呢?
分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。其目的是利用更多的机器,处理更多的数据。首先需要明确的是,只有当单个节点的处理能力无法满足日益增长的计算、存储任务的时候,且硬件的提升(加内存、加磁盘、使用更好的CPU)高昂到得不偿失的时候,应用程序也不能进一步优化的时候,我们才需要考虑分布式系统。在一个分布式系统中,一组独立的计算机展现给用户的是一个统一的整体,就好像是一个系统似的。
那么,分布式系统的好处也显而易见。
-
将分布在各个节点的资源充分利用,而这种利用对用户而言是透明的,但是,高效利用机器性能,使得少量的机器也能发挥出“超级计算机”的能力,却省了“超级计算机”的成本。
-
将工作负载能力由单个节点转移到多个,多节点协同工作,从而提高效率。
-
分布式技术可以避免由于单个节点失效而使整个系统崩溃的危险,只要有一定数量的节点存在,系统即可正式工作。
对于ABCD来说,分布式到底利用如何呢?
对于云计算来说,应用架构的分布式:微服务架构;存储数据的模式:分布式存储;分布式的共享带宽:CDN;对于大数据来说,大数据应用最广泛的框架:hadoop,本身就是一个基于分布式处理数据的计算框架;对于区块链来说,区块链的本质就是一个分布式账本;对于人工智能来说,为了解决复杂问题出现了分布式人工智能,多个智能体的协作正好符合分布式人工智能的要求,因此出现了多智能体系统。总之,不管是任何技术的发展,都越来越离不开分布式系统的发展。
标准大数据处理框架:Hadoop分布式框架的发展,使得一个需要非常巨大的计算能力才能解决的问题可以分成许多小的部分,然后把这些部分分配给多个计算机进行处理,最后把这些计算结果综合起来得到最终结果。因为分布式,越来越多大型的运算问题,可以迎刃而解,也促进了各种互联网技术层出不穷的发展起来。
然而,关于分布式,需要研究和深入的问题还有很多,但瑕不掩瑜,相信未来的分布式系统还能给我们带来更好的惊喜,有关分布式的文章,我们往后会继续介绍。本期技术浅谈就到这里了,希望大家在讨论区也来聊聊你们想了解的技术吧~
网友评论