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.

54 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.

# 结束语 | 以梦为马,莫负韶华!
你好我是胡夕。今天我的专栏“Kafka核心技术与实战”就正式结束了。
回顾与你在专栏相聚的这几个月我的内心充满了成就感。且不必说这42讲的文字全是我一字一键敲下来的也不必说那长达十几个小时的录音单是留言区那些踊跃积极的提问与讨论就足以使我深受感动并收获满满了。
此时此刻,千言万语汇成一句话:“感谢!”感谢你对我和本专栏的支持,感谢你曾经的鼓励与提问,也感谢你的肯定与期望。另外,我也要向你表示祝贺,祝贺你完整地学习了专栏的全部课程,你的恒心与坚持令人敬佩。
虽然专栏更新结束了但是我相信我们的Kafka学习之旅不会结束。相反这对于你来说或许是一个新的开始。
还记得开篇词里的那句话吧:“**Stay focused and work hard**”我一直觉得学习任何技术甚至是搞定任何事情只要下足了功夫理论上你可以藐视一切学习方法或捷径。但是如果你忽视了毅力和坚持再多的速成教程也无法引领你达到你期望的高度。著名的“10000小时定律”就明确表示**10000个小时的锤炼是所有人从平凡人变成世界级大师的必要条件**。
还是那句话,只要你持之以恒地投入时间去学习,你就能成为某个领域的专家。因此,从某种意义上说,我这碗“鸡汤”的配料非常简单,就四个字:**干就完了**。
那这是不是在说书籍、专栏之类的他人智慧总结就没用了呢?当然不是!他山之石,可以攻玉,书籍和专栏的最大作用就在于,当你遇到岔路口时,它们能够帮助你快速地识别前进中的已知路障,让你少走弯路,更快地实现目标。但**前提是你要在路上,而不是单纯地想要依赖它们速成**。
在专栏的最后我想再和你分享一些学习大数据框架的个人经验。这些经验不仅仅适用于学习Kafka对于其他框架甚至是分布式系统的学习都是适用的。
**首先最重要的就是夯实技术基本功。这是我们IT从业者赖以生存的基石。**
这里的基本功包含很多方面,比如**操作系统**、**数据结构**等,但我更想说的,还是**对Java语言的掌握**。
目前大数据框架多是以Java或JVM系语言开发而成的因此**熟练掌握甚至精通Java是学好大数据框架的基石**所谓精通不仅仅是要求你熟练使用Java进行代码开发更要求你对JVM底层有详细的了解。就这个层面的学习而言我想给你3条建议。
1. **持续精进自己的Java功底**。比如你可以去Java官网上把Java语言规范和JVM规范熟读一遍。很多人都不太重视语言规范文档但实际上Java中关于线程和同步的知识在Java语言规范中都有相关的阐释。
2. **提升自己的Java多线程开发以及I/O开发能力**。很多大数据框架底层都大量使用Java多线程能力以及NIO帮助实现自身功能。就拿Kafka来说多线程自不必说Kafka可是大量使用NIO实现网络通信的。所以这部分的知识是你必须要熟练掌握的。
3. **掌握JVM调优和GC**。我推荐你去读一读“Java Performance”这本书。虽然目前GC收集器大部分演进到了G1时代但书中大部分的调优内容依然是适用的。调优Kafka的JVM也要依赖这部分知识给予我们指导。
**除此之外,你还要学习分布式系统的设计。**
分布式系统领域内的诸多经典问题是设计并开发任何一款分布式系统都要面临和解决的问题比如我们耳熟能详的一致性问题、领导者选举问题、分区备份问题等。这些问题在Kafka中都有体现我们在专栏里面也有所涉及。因此**分布式系统的诸多基础性概念,是帮助你日后深入掌握大数据分布式框架的重要因素**。
而且,很多经典的分布式问题在业界早已被研究多年,无论是理论还是实践案例,都有着翔实的记录。比如我们在专栏前面谈到的分区概念,分区在分布式系统设计中早就不是什么新鲜的概念了,早在上世纪六七十年代,就已经有行业专家在研究分区数据库的实现问题了。要较好地掌握大数据框架中的分区或分片,是不可能绕过分布式系统中的分区以及分区机制的。
这些经验都偏重理论的学习。你千万不要小看理论的价值,毕竟,列宁说过:“没有革命的理论,就没有革命的运动。”这里的“运动”就是一种实践。先让理论指导实践,再借助实践补充理论,才是学习任何东西无往而不利的最佳法则。
强调完理论自然就要引出实践了。我这里所说的实践不仅仅是对框架的简单使用。你从官网上下载Kafka启动它然后创建一个生产者和一个消费者跑通端到端的消息发送这不叫实践这只是应用罢了。**真正的实践一定要包含你自己的思考和验证,而且要与真实业务相绑定**。我不排斥你单纯地学习某个框架,但以我个人的经验而言,在实际工作中进行学习,往往是学得最快、掌握得也最扎实的学习方式。
另外,**在实际学习过程中,你最好记录下遇到问题、解决问题的点点滴滴,并不断积累**。要知道,很多技术大家之所以成为技术大家,不仅仅是因为理论掌握得很牢固,填过的“坑”多,更重要的是,**他们不重复犯错**。
孔子曾经称赞他的学生颜回“不贰过”。“不贰过”也就是不重复犯错。在我看来,在实践方面,一个不犯相同过错的人,就已经可以被称为大家了。
好了,这些就是我在学习技术的过程中总结的经验,现在全部分享给你,希望对你有所帮助。
我为你准备了一份结课问卷,题目不多,两三分钟就可以完成。希望你能畅所欲言,把自己真实的学习感受和意见表达出来,我一定会认真看,期待你的反馈。
[![](https://static001.geekbang.org/resource/image/f8/f8/f851a448681ff99d117c1fb78e688ff8.jpg)](https://jinshuju.net/f/FFQ5PT)
最后一期了,也欢迎你在这里给自己的专栏学习做个总结。关于专栏或是其他内容,如果你还有什么问题,也尽管提出来,我会持续回复你的留言。
送君千里,终须一别。所谓行百里者半九十,愿你继续在技术这条道路上深耕,并得偿所愿,不负韶华。我们江湖再见!
![](https://static001.geekbang.org/resource/image/f3/54/f330cc5229c83bba005815515f0f5654.jpg)