结束语 静下心来,享受技术的乐趣

你好,我是韩健。

一晃几个月的时间就过去了,这段日子里,我们一起在课程里沟通交流,与我而言,这是一段很特别的经历。我看到很多同学凌晨还在学习、留言,留言区里经常会看到熟悉的身影,比如约书亚、唔多志、每天晒白牙、小晏子,很感谢你们一直保持着学习的热情。

就要说再见了,借今天这个机会,我想跟你唠点儿心里话。我问自己,如果只说一句话会是啥?想来想去,我觉得就是它了:静下心来,享受技术的乐趣。其实这与我之前的经历有关,我想你也能从我的经历中,看到你自己的影子。

我们都有这样的感觉,无论任何事情,如果想把它做好,其实都不容易。我记得自己在开发InfluxDB系统期间,为了确保进度不失控,常常睡在公司,加班加点;在写稿期间,为了交付更高质量的课程,我总是会有很多想法,偶尔会通宵写稿,核对每句话、每个细节;再比如,为了解答kernel_distribution同学的一个关于外部PPT的问题,我通过Google找到相关代码的出处,然后反复推敲,在凌晨4点准备了一个答案。

当然,技术的学习就更加不容易了,不是读几遍材料、调调代码就可以了,而是需要我们设计检测模型,来验证自己是否准确地理解了技术。我曾见过一些团队,做技术决策的依据是不成立的,设计和开发的系统,尽管迭代多版,也始终稳定不下来。在我看来,这些团队最大的问题,就是对技术的理解不准、不够。

在我看来,我们需要调整下心态,也就是静下心来,全身心地投入,去体会技术的乐趣,“Hack it and enjoy it!”。然后学习和工作中的小成就,又会不断地给我们正反馈,激励我们,最终可以行云流水般地把事情越做越好。

具体到我们课程的主题,也就是分布式技术,该怎么继续精进呢?我们都知道,分布式技术属于新技术,仍在快速发展(比如Raft在2013年才提出),没有体系化的学习材料,而且知识碎片,学习起来尤为不易。今天我想再补充几点个人看法。

首先是“杨不悔”。也就是我们要“衣带渐宽终不悔,为伊消得人憔悴”。想想你在大学的时候,是不是很执着呢?学习分布式技术,也需要这么个劲头儿。

其次是“张无忌”。也就是我们要“不唯书不唯上只唯实”。理论是为了解决问题的,而不是为了“正确”,理论也是在实战中不断发展的,所以在日常学习和使用技术时,我们要注意妥协,没有十全十美的技术,我们需要根据场景特点,权衡折中使用技术,并且实战也会进一步加深我们对技术的理解。

最后是“师夷长技以制夷”。也就是我们要科学上网,多阅读英文资料。

另外,有些同学可能刚刚接触分布式系统和分布式技术,我对你的建议是“单点突破,再全面开花”。比如,你可以反复研究20讲的分布式KV系统,然后研究Raft算法,最后再去研究其他分布式算法,循序渐进地学习。

为了帮助你更好地学习,掌握“渔”的技巧。在这里,我推荐一些适合入门和深究的学习材料(当然材料不能太多,太多了,相当于没推荐)。

说到这里,我还想强调一点,希望能在后续的工作和学习中帮到你。那就是,“技术要具有成本优势”。什么意思呢?

基于开源软件,我们很容易“堆砌”一套业务需要的功能。基于大型互联网后台(比如QQ)的架构理念,我们能支撑极其海量的服务和流量。也就是说,实现功能或支撑海量流量,相关的软件和理念,都已经很成熟,不是挑战了,但功能背后的成本问题突出。

而成本就是钱,功能背后的成本问题是需要重视和解决的,比如,自研KV存储相比Redis降低了数量级倍数的成本。另外,分布式技术本身就是适用于规模业务的,而且随着业务规模的增加,成本的痛点会更加突出。我希望你能注意到这点,在根据实际场景设计系统架构时,如果需要的话,也将成本作为一个权衡点考虑进去。

为什么要考虑这些?因为我真心希望你是分布式系统的架构师、开发者,而不仅仅是开源软件的使用者。

好了,专栏到此就告一段落了。但专栏的结束,也是另一种开始。我会花时间处理还没来得及回复的留言,也会针对一些同学的共性问题策划答疑或者加餐(这是一个承诺,也请你监督)。总的来说,我会继续帮你吃透算法原理,让你掌握分布式系统的开发实战能力。当然,你可以随时在遇到问题时,在留言区留言,我们一起交流讨论。

在文章结尾,我为你准备了一份调查问卷,题目不多,希望你能抽出两三分钟填写一下。我非常希望听听你对这个专栏的意见和建议,期待你的反馈!

最后,我想用一段话结束今天的分享,学习技术的路上你可能会遇到对无法准确理解某技术原理的问题,但你不要觉得孤单,因为这是一个正常的情况,大家都会遇到。如果你觉得某技术的原理,理解起来很吃力,你不妨先把这个技术使用起来,然后多想想,如果是你,你会怎么设计,接着你可以带着自己的猜测去研究技术背后的原理。

希望你能在繁忙的工作中,保持一颗极客的初心,享受技术的乐趣!


编辑角:目前课程已经结束了,为了交付更好的内容,《分布式协议与算法实战》于2020年4.26日启动迭代计划,15讲为迭代版本,后面也会对ZAB协议进行更细致化的讨论,敬请期待!

精选留言(15)
  • Tim 👍(12) 💬(1)

    晚来了,我才买了课程不到一周利用上班时间偷偷刷和下班回家理论刷了一遍,决定再刷五遍(自己的一贯做法,repeating is the first principle.),很多东西真的是获益匪浅。感谢老师给与的高质量的输出,期待后续有更优秀的作品。

    2020-05-18

  • 忆水寒 👍(8) 💬(1)

    这个专利从头跟到尾,真的不错。 以我自己的经历来说,我大学里面的专业是通信工程,在校期间是最FPGA逻辑设计的。校招的时候因为一些原因进入了软件行业。工作的前半年,由于基础不足,连RPC都没听说过,设计模式也不会,网络编程及抓包也不会。 由于基础不足,开发比较慢,好在我师傅愿意给我规划如何实现。从那时候起,我就开始从基础开始学起,一年半以后,我出去面试了大量企业,基本上是各行业的龙头。总统来说,大部分企业都认可了我,不过从面试中也暴露了很多问题。特别是分布式相关的问题。因此这半年在研究分布式(我们自己产品也要用到),到给团队的小组成员讲解分布式理论,这个专栏给了我很多形象的比喻。也让我更容易理解。 静下心来享受技术的乐趣,这句话与我共鸣也共勉。 在我看来,学习也需要具备发散思维。在我主持设计主备选举模块的时候,我基于bully算法到Raft算法,其中Raft算法引入了随机时间,目的就是防止活锁。有时候多问自己几个问题,面试的时候就不会慌,技术进步也会更快了。 有感而发,写的有点多了。

    2020-04-01

  • 每天晒白牙 👍(5) 💬(1)

    很荣幸被老师扶上墙,专栏跟到最后并不能代表学会了,还需要有选择性的重复读,然后对照相关源码去深入理解,感谢老师一路的陪伴

    2020-04-01

  • 阿卡牛 👍(3) 💬(1)

    期待课程结束后的加餐

    2020-04-07

  • pedro 👍(3) 💬(2)

    又走过了一个专栏,对分布式有了更深的理解,多谢老师载了一程😃

    2020-04-01

  • 小晏子 👍(2) 💬(1)

    谢谢这么课程对分布式协议和算法的总结,真是受益匪浅!

    2020-04-01

  • Geek_zbvt62 👍(2) 💬(1)

    辛苦了。分布式算法是码农技能树某一个分支的最顶点,想要通过几篇文章给所有人讲述清楚不太可能,起到引路的作用就可以了。希望未来能看到作者其他针对一些细节的内容。谢谢

    2020-04-01

  • 吴小智 👍(2) 💬(1)

    谢谢老师,在分布式的算法地图里走了一圈,接下来就是单点突破,最后全面开花了。

    2020-04-01

  • 小郑 👍(0) 💬(1)

    请问老师,https://blog.csdn.net/lin819747263 这是您的账号吗?看到这人搬运您的文章到csdn并标记为原创

    2020-08-04

  • 庄墨寒 👍(0) 💬(1)

    1.CAP: CP, AP互斥; 2.多副本一致性, 强一致性: raft; 最终一致性: gossip; 可动态配置: NWR 3.一致性hash, 当规模过大时需要sharding 4.两阶段提交(TCC, XA)解决sharding后的分布式事务. 总结: 1&2解决的是HA问题, 3&4解决是规模可伸缩的问题. 不知理解对不对?

    2020-06-12

  • CRT 👍(0) 💬(1)

    非常感谢老师的优质内容,一路下来受益良多。

    2020-06-10

  • 指尖以东 👍(0) 💬(1)

    打开了一致性算法的一片天,学而时习之不亦乐乎

    2020-05-12

  • 竹马彦四郎的好朋友影法師 👍(0) 💬(1)

    打卡完毕,谢谢老师!

    2020-05-06

  • QQ怪 👍(0) 💬(1)

    十分感谢老师的分享,终于跟着老师的脚步一直到这里,之前相关知识很碎片化,这次终于系统化的学习了一遍,但这也仅仅是个开始,我也会好好继续享受技术的乐趣,加油!感谢老师!

    2020-04-24

  • 苍漠胡杨 👍(0) 💬(1)

    又学习了一个专栏,谢谢

    2020-04-20