用户故事 愿做技术的追梦人 你好,我是徐拥,目前是京东科技交易相关部门的软件开发工程师。

我从《中间件核心技术与实战》刚上架的时候,就一直在跟随丁老师的脚步学习中间件相关的知识。在这个过程中,我对各种中间件有了一些新的认知,也收获了很多新的思维方式。很高兴能在这里跟你分享我学习课程的心得体会和学习方法。

为什么要学习和中间件相关的专栏?

在互联网电商领域,高并发场景下,数据流量动辄就是 GB 级、TB 级甚至是 PB 级的,这些数据都需要服务器在短时间内处理完,这就涉及到如何充分利用单机的性能,如何保障服务间的交互等问题了。

于是, 削峰填谷、降级限流、异步解耦、分布式,各种概念扑面而来。而它们也成为了系统交互、任务处理的关键。在我所在的岗位上,分布式事务、数据一致性、突发流量的应对、大数据处理,这些都是工作必备的基础知识。

比如,某个审计系统通过 KafkaStream 对接实时流量数据,在经过过滤清洗后,存储在 Es 的数据量依旧非常大。

比如,每天的订单量虽然会流转很多系统,但是必须保证事务的最终一致性和补偿 / 对账机制,不能有一丝的差错。

再比如,在活动系统中,每天官网都会有优惠秒杀、限时折扣等类型的活动。

如果负责这些板块,但却不能尽快熟知各个组件的原理,尽快解决或者避免各种问题的发生,那既是一种失职,也会让自己的技术水平日益落后于同事。所以在工作之余,我会主动地收集从点到面再到点的相关资料,修炼专项技能,吸取很多业界大佬和同事们的经验。

兴趣是最好的老师

作为一名初级程序员,我和很多人都一样,学习的动力主要是基于对新技术的兴趣,看到各种新技术就想 demo 它。对于不同中间件推出的新特性,我也经常迫不及待地想要尝尝鲜,可以说是乐在其中。但是每次出现没见过的问题,自己解决不了,我就只能去 Google。这也是大家的常规操作了,不过时间久了,我也发现自己对它太依赖了。

这么做的问题是,如果我对组件的了解只停留在用的程度,也就是黑盒。一旦出现问题,就可能自乱阵脚。这时候我们需要知道的是,组件这块是怎么写的,然后扒拉一下它的代码,看看各种包、类、方法和思想。

理解组件的原理和思想,要从 case 入手

接下来,我想跟你分享一下我在学习 Kafka 时的经验。

首先,push 下代码后,要把对应的环境搭建好。然后从 case 入手,理解这个 case 的用途,它是测试什么的。然后一层层、一行行地 Debug。如果对哪个模块感兴趣,就去写个小 demo 运行一下,了解这个模块的具体作用(要想研究源码,首先得知道这个模块是干啥的,有什么作用)。

在 Debug 的过程中,我们第一遍的重点是根据方法名,简略地看下逻辑,每个方法都用了哪些类。

第二遍看源码,要深入特定模块,看看这些类承担了哪些功能,使用了哪些设计模式。如果看完还是有点迷糊,就需要重复这一步,同时根据主要类画出调用时序图。这样,根据图再去看代码,思路就会更加清晰一些。其实这个过程也是在印证你思考的过程。你会被带入某些场景中,有更深刻的理解。

学习的另一条“捷径”——线上问题

学习的另一个“捷径”,就是让 Bug 给自己带路,通过解决线上遇到的问题,来扩大自己的知识储备,提高应对问题的能力。这个学习思路在丁威老师的案例课里也有体现。

虽然我们踩过的坑前人基本都踩过,但不得不说,什么事都有例外。因为各种环境不一致导致的问题就是这样。

举个例子,在 KStream 消费时,如果中间件或者网络不稳定,超过了 Kafka 的默认配置,这个时候服务虽然健康,但是消息已经不消费了。因为线上消息是非常庞大的,在很短的时间内, Lag 就会特别大。

出现这个问题之后,我们也是第一时间重启恢复了消费,紧接着就是复盘。以前,我的学习都是这样由 Bug 驱动的。出现问题我会第一时间 Google 一下, 但是还是找不到原因,所以我发邮件请教了 Kafka 团队。同时,把 Kafka 代码下载下来看,最终发现修改某些心跳参数和拉取量,就能尽可能避免这种问题的出现。

在这期间,我对这模块代码的理解也有了质的飞跃。不过,只是 Bug 驱动的学习,会让知识体系变得比较零散。今年 6 月,我发现了极客时间的专栏,这个新大陆发现得太及时,我一眼就爱上了。

丁威老师的这个专栏,刚好弥补我在系统性上的欠缺。它让我慢慢开始从架构师的视角来看待业务,同时也让我认识到,技术是服务于业务的,所以不要过度设计,因为这样会提高团队的学习成本。

写在最后

很荣幸能和大家共同学习,我也认为,订阅这门课程的同学本身就对技术和视野有更高的追求。

借用黄清昊老师的一句话 :“优秀的同学往往对技术本身有着更强烈的好奇,比如出现一些事故的时候,想办法快速解决问题之后,他们往往会做更深刻的复盘,去了解相关中间件或者代码背后的运行机制,甚至还会做一些分享。”也祝我们在学完课程后,自身的能力都可以更上一层楼。

最后,我想借这个专栏,感谢一下在我刚进入团队时就带着我的成良和英草导师,是他们让我成为一个更坚定、更有温度的技术追梦人。世界急剧变化,未来山高路远,但相信一定可以江湖再见。

期待你的留言,我们一起交流和讨论,共同进步!

参考资料

https://learn.lianglianglee.com/%e4%b8%93%e6%a0%8f/%e4%b8%ad%e9%97%b4%e4%bb%b6%e6%a0%b8%e5%bf%83%e6%8a%80%e6%9c%af%e4%b8%8e%e5%ae%9e%e6%88%98/%e7%94%a8%e6%88%b7%e6%95%85%e4%ba%8b%20%20%e6%84%bf%e5%81%9a%e6%8a%80%e6%9c%af%e7%9a%84%e8%bf%bd%e6%a2%a6%e4%ba%ba.md