You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

52 lines
6.7 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 结束语 | 静下心来,享受技术的乐趣
你好,我是韩健。
一晃几个月的时间就过去了,这段日子里,我们一起在课程里沟通交流,与我而言,这是一段很特别的经历。我看到很多同学凌晨还在学习、留言,留言区里经常会看到熟悉的身影,比如约书亚、唔多志、每天晒白牙、小晏子,很感谢你们一直保持着学习的热情。
就要说再见了,借今天这个机会,我想跟你唠点儿心里话。我问自己,如果只说一句话会是啥?想来想去,我觉得就是它了:**静下心来,享受技术的乐趣。**其实这与我之前的经历有关,我想你也能从我的经历中,看到你自己的影子。
我们都有这样的感觉无论任何事情如果想把它做好其实都不容易。我记得自己在开发InfluxDB系统期间为了确保进度不失控常常睡在公司加班加点在写稿期间为了交付更高质量的课程我总是会有很多想法偶尔会通宵写稿核对每句话、每个细节再比如为了解答kernel\_distribution同学的一个关于外部PPT的问题我通过Google找到相关代码的出处然后反复推敲在凌晨4点准备了一个答案。
当然,技术的学习就更加不容易了,不是读几遍材料、调调代码就可以了,而是需要我们设计检测模型,来验证自己是否准确地理解了技术。我曾见过一些团队,做技术决策的依据是不成立的,设计和开发的系统,尽管迭代多版,也始终稳定不下来。在我看来,这些团队最大的问题,就是对技术的理解不准、不够。
在我看来我们需要调整下心态也就是静下心来全身心地投入去体会技术的乐趣“Hack it and enjoy it!”。然后学习和工作中的小成就,又会不断地给我们正反馈,激励我们,最终可以行云流水般地把事情越做越好。
具体到我们课程的主题也就是分布式技术该怎么继续精进呢我们都知道分布式技术属于新技术仍在快速发展比如Raft在2013年才提出没有体系化的学习材料而且知识碎片学习起来尤为不易。今天我想再补充几点个人看法。
**首先是“杨不悔”。**也就是我们要“衣带渐宽终不悔,为伊消得人憔悴”。想想你在大学的时候,是不是很执着呢?学习分布式技术,也需要这么个劲头儿。
**其次是“张无忌”。**也就是我们要“不唯书不唯上只唯实”。理论是为了解决问题的,而不是为了“正确”,理论也是在实战中不断发展的,所以在日常学习和使用技术时,我们要注意妥协,没有十全十美的技术,我们需要根据场景特点,权衡折中使用技术,并且实战也会进一步加深我们对技术的理解。
**最后是“师夷长技以制夷”。**也就是我们要科学上网,多阅读英文资料。
另外有些同学可能刚刚接触分布式系统和分布式技术我对你的建议是“单点突破再全面开花”。比如你可以反复研究20讲的分布式KV系统然后研究Raft算法最后再去研究其他分布式算法循序渐进地学习。
为了帮助你更好地学习,掌握“渔”的技巧。在这里,我推荐一些适合入门和深究的学习材料(当然材料不能太多,太多了,相当于没推荐)。
* [迭戈·安加罗Diego Ongaro的博士论文](https://github.com/ongardie/dissertation#readme)安加罗的博士论文对Raft算法做了很详细的描述我建议你反复读结合源码比如Hashicorp Raft直到读懂每一句话。
* [《Paxos Made Live》](http://www.read.seas.harvard.edu/~kohler/class/08w-dsi/chandra07paxos.pdf)这是Google团队的Paxos实践总结我建议你从工程实践的角度去阅读多想想如果是你你会怎么做。
* [《Eventually Consistent》](https://www.allthingsdistributed.com/2008/12/eventually_consistent.html)了解下沃纳·威格尔亚马逊CTO对一致性的理解和定义。
说到这里,我还想强调一点,希望能在后续的工作和学习中帮到你。那就是,“技术要具有成本优势”。什么意思呢?
基于开源软件我们很容易“堆砌”一套业务需要的功能。基于大型互联网后台比如QQ的架构理念我们能支撑极其海量的服务和流量。也就是说实现功能或支撑海量流量相关的软件和理念都已经很成熟不是挑战了但功能背后的成本问题突出。
而成本就是钱功能背后的成本问题是需要重视和解决的比如自研KV存储相比Redis降低了数量级倍数的成本。另外分布式技术本身就是适用于规模业务的而且随着业务规模的增加成本的痛点会更加突出。我希望你能注意到这点在根据实际场景设计系统架构时如果需要的话也将成本作为一个权衡点考虑进去。
为什么要考虑这些?**因为我真心希望你是分布式系统的架构师、开发者,而不仅仅是开源软件的使用者。**
好了,专栏到此就告一段落了。但专栏的结束,也是另一种开始。我会花时间处理还没来得及回复的留言,也会针对一些同学的共性问题策划答疑或者加餐(这是一个承诺,也请你监督)。总的来说,我会继续帮你吃透算法原理,让你掌握分布式系统的开发实战能力。当然,你可以随时在遇到问题时,在留言区留言,我们一起交流讨论。
在文章结尾,我为你准备了一份调查问卷,题目不多,希望你能抽出两三分钟填写一下。我非常希望听听你对这个专栏的意见和建议,期待你的反馈!
[![](https://static001.geekbang.org/resource/image/b8/72/b8538443cdc6fff2962a5bf1f692bd72.jpg)](https://jinshuju.net/f/e470QX)
最后,我想用一段话结束今天的分享,学习技术的路上你可能会遇到对无法准确理解某技术原理的问题,但你不要觉得孤单,因为这是一个正常的情况,大家都会遇到。如果你觉得某技术的原理,理解起来很吃力,你不妨先把这个技术使用起来,然后多想想,如果是你,你会怎么设计,接着你可以带着自己的猜测去研究技术背后的原理。
希望你能在繁忙的工作中,保持一颗极客的初心,享受技术的乐趣!
* * *
编辑角目前课程已经结束了为了交付更好的内容《分布式协议与算法实战》于2020年4.26日启动迭代计划15讲为迭代版本后面也会对ZAB协议进行更细致化的讨论敬请期待