结束语 在分布式技术的大潮流中自由冲浪吧! 你好,我是陈现麟。

时间一晃三个月就过了,经过这一段时间的学习,你对分布式系统一定有了自己的知识体系和认识,如果现在让你回答一个问题:分布式系统是简单还是复杂呢?你的脑海里可能会出现两种矛盾的声音,无法给出确定的答案。其实出现这个情况是非常正常的,有了专栏的知识积淀,我们是时候重新认识一下分布式系统了。

重新认识分布式系统

分布式系统其实很简单和分布式系统其实很复杂,这两个回答没有对错之分,它们是基于宏观和细节角度的不同思考。

在这个专栏里,我们将分布式技术的知识体系做了一个全面的讨论和梳理,下面我们从简单和复杂这两个不同角度,带你跳出知识体系,对分布式系统有一个全新的理解。

分布式系统其实很简单

分布式系统简单来说就是一句话,由多个计算机节点通过网络组成一个系统,对它的使用者来说和单机系统一样。通过网络组成一个系统是非常简单的事情,而让使用者以为是一个单机系统,则需要解决多个计算机节点内部协调的问题。这些问题在本专栏中,我们都一一讨论过了,具体见下图。

图片

同时,如果我们从分布式系统演进历史的角度来看,分布式系统的发展历史差不多为 30 年,可以简单梳理为史前期、探索期、萌芽期、爆发期和云原生期这 5 个历史阶段。史前期为单机时代,探索期主要是理论边界的思考,萌芽期诞生了第一代分布式系统,爆发期则开始快速发展和不断突破,现在我们处于云原生期,一个新的发展方向是利用云的能力来架构分布式系统,具体见下图。

图片

从上面的讨论中,我们可以看到理解分布式系统是有迹可循的,它解决的问题和演进的历史都简单清晰,很好理解和掌握,所以从宏观的知识角度出发,我们认为分布式系统其实很简单。

分布式系统其实很复杂

但是,分布式系统又是非常广泛的一个概念,它包含了非常多的领域,并且每一个领域都有它特别的领域问题和解决方案。下面我将其分为 6 个领域,分别为分布式文件系统、Stream、NoSQL、OLAP、OLTP 和业务系统,每一个领域都在快速发展中,并且出现了非常不错的进展。这里我进行了简单的梳理,具体见下图。

从上面的图中,我们看到了非常多的分布式系统,它们组成了一个非常复杂的概览图。其实这里的分布式系统只是冰山一角,还有非常多的分布式系统没有被收录进来。所以,分布式系统其实是非常复杂的一个体系。

总体来说,我认为这个问题如同“在战略上藐视敌人,在战术上重视敌人”一样,在宏观层面,分布式系统是简单的,但是在细节上,分布式系统又是复杂的。不过从宏观层面掌握了分布式系统,我们就不会害怕复杂的细节实现了。

开始自由冲浪吧

通过这个专栏的学习,你已经建立好分布式系统的知识体系,这就好比你已经学会了冲浪的技能,整个“分布式技术的大海”向你敞开了怀抱,现在你可以去自由冲浪了,这就达到了本专栏的目标。

在你自由冲浪之前,我还想和你分享一下我在学习方面的一些经验,将这些经验作为本专栏最后的一次谈心,也作为朋友之间的临别赠言,希望能为你今后的学习保驾护航。

时间都去哪儿了

我曾经有一段时间,被一个问题困扰:每天我都花很多的时间学习和阅读,通过手机、平板、电脑和书籍等渠道输入了很多的信息,但是回想起来又感觉没有学习到什么,很疑惑这些学习的时间都去哪儿了?

有上进心并且爱学习的你,是不是也有这方面的困扰呢?下面我来分享一下我是如何解决这个问题的,希望这些方法可以让你的自由冲浪之旅更加快乐。

被动学习 vs 主动学习

首先我们来思考下学习方式的问题。我们的学习方式可以分为两类,一类是主动学习,另一类是被动学习,每一种学习方式都有不同的学习效率,下图是美国国家训练实验室研究的结果,研究了不同学习方式的平均学习效率。

图片

结合上面的图,你是不是很快就发现了问题,我们平时将大量的时间都投入到了被动学习中,所以学习效率是很低的,而改变自己的学习习惯,通过主动学习来提高学习效率是非常有效的

就拿我的经历来说吧,当我发现我花在学习上的时间很多,但是吸收的效果不好,并且记不住也答不出的时候,我就意识到被动学习的效率太低了。然后我就开始有意识地采用做笔记、写博客和做分享的方式去学习,将被动学习转变为主动学习,学习效率和质量都有了非常大的提高。

看完我的学习经历,你可能会联想到费曼学习法,它其实也是一样的思路,通过自己学习,然后将学习结果教给完全不懂的人,将被动学习转变为主动学习。

泛读学习 vs 精读学习

另一个问题是学习精力投入的问题。我们平时进行的大量学习其实都是泛读的方式,但是通过这个方式只是获取了信息,并没有把它变成我们所掌握的知识,这样很容易就会出现学完就忘记的情况,而精读则是聚焦于某一个知识点、某一篇论文或某一本书上,集中大量的时间来 Close 一个问题,这种方式可以让我们把获取的信息变成自己掌握的知识或能力。

记得刚刚开始学习计算机网络的时候,我在网络上看了各种各样的资料,也花了一些时间来总结,但是总感觉自己对于网络的体系化认识是非常不足的。不过,在这些泛读中,我发现有很多的资源,都会提到KevinR.Fall 和 W.RichardStevens 写的书籍《TCP/IP详解》,我在试读后感觉非常不错,于是立即花了几天时间,精读了这本书,从此我对计算机网络基础方面的理解可以说是上了一个台阶。对于当时的我来说,相当于 Close 掉计算机网络这个知识领域了。

所以,通过泛读确定精读的目标和内容,然后精读是一个让我受益匪浅的学习方式,并且在精读的时候,我们还可以采用主动学习的方式或者费曼学习法,使学习效率提高,让效果更持久。

以上这些就是我的学习经验分享,可能这些分享并不是最新潮的,但却是实实在在帮助到我的,希望你也能将这些方法实践起来。

最后,送君千里,终须一别,你已经面朝分布式技术的大海,迎来了春暖花开的季节,现在就带上主动学习和精读学习的习惯,开启你自由冲浪的生活吧!同时,我也要告诉你温故知新非常重要,在后续的复习过程中,你依然可以在留言区提问,我依然会跟你保持交流。

为了让专栏的内容越来越好,我准备了一份结课问卷,希望你能用两分钟的时间填写一下,非常期待你对这个专栏的意见或建议,众人拾柴火焰高,专栏质量的提升离不开你的努力!

参考资料

https://learn.lianglianglee.com/%e4%b8%93%e6%a0%8f/%e6%b7%b1%e5%85%a5%e6%b5%85%e5%87%ba%e5%88%86%e5%b8%83%e5%bc%8f%e6%8a%80%e6%9c%af%e5%8e%9f%e7%90%86/%e7%bb%93%e6%9d%9f%e8%af%ad%20%20%e5%9c%a8%e5%88%86%e5%b8%83%e5%bc%8f%e6%8a%80%e6%9c%af%e7%9a%84%e5%a4%a7%e6%bd%ae%e6%b5%81%e4%b8%ad%e8%87%aa%e7%94%b1%e5%86%b2%e6%b5%aa%e5%90%a7%ef%bc%81.md