<audio id="audio" title="结束语 | 静下心来，享受技术的乐趣" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/d7/5a/d73b5543529b44c1cb285e885369a05a.mp3"></audio>

你好，我是韩健。

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

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

我们都有这样的感觉，无论任何事情，如果想把它做好，其实都不容易。我记得自己在开发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降低了数量级倍数的成本。另外，分布式技术本身就是适用于规模业务的，而且随着业务规模的增加，成本的痛点会更加突出。我希望你能注意到这点，在根据实际场景设计系统架构时，如果需要的话，也将成本作为一个权衡点考虑进去。

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

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

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

[<img src="https://static001.geekbang.org/resource/image/b8/72/b8538443cdc6fff2962a5bf1f692bd72.jpg" alt="">](https://jinshuju.net/f/e470QX)

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

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

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