撸完Dubbo3源码,我总结了这些阅读源码的技巧
今天,就为小伙伴们分享下我是如何利用不到一个月的业余时间(每天不到2小时)快速掌握Dubbo的原理和源码的。
(相关资料图)
最近收到很多小伙伴的微信私聊消息,大部分都是在询问如何快速掌握一个框架的原理和源码,比如:Spring、Dubbo、MyBatis等。针对这个问题,周末我简单总结了下,今天,就为小伙伴们分享下我是如何利用不到一个月的业余时间(每天不到2小时)快速掌握Dubbo的原理和源码的。
阅读源码的前提
阅读某一项技术框架,或者说开源项目的源码前,你必须了解这个框架是干啥用的,说白了,就是你至少了解这个框架该怎么用,在什么场景下用,使用的过程中会遇到哪些坑,如何解决。而学习一个框架,最简单有效的方式就是它的官方文档。Dubbo也不例外,我在学习Dubbo的时候,也是首先看的Dubbo的官方文档,基本没看其他的文章或者资料。为啥?因为Dubbo的官方文档是最权威的,是最可信的。
即使你在项目中没有使用过Dubbo框架,你也可以按照Dubbo的官方文档基于Dubbo写一个简单的示例程序,通过示例能够让自己快速的了解Dubbo。
为何要阅读源码
阅读源码前,你要清楚的知道自己为何要阅读源码,带着问题去看源码。想要看框架的源码,无外乎两种情况:一种就是在项目中遇到了无法通过文档或者其他技术资料解决的问题,想通过源码来找解决方案;另一种就是对框架的底层实现好奇,这么牛逼的技术是如何实现的?而我,基本属于后者。在我经历的用户上亿的高并发电商系统中,部分核心子系统使用了Dubbo,经过性能调优,Dubbo的表现良好。我就很好奇:Dubbo是如何抗住这么高的并发的?它内部是如何实现的?
其次,阅读源码前,你要为自己提几个问题,比如我在看Dubbo源码前,就明确了很多问题,比如:Dubbo是如何实现RPC服务的?服务提供者和调用者之间是如何交互的?Dubbo是如何封装网络调用使其看起来和调用本地方法一样?Dubbo又是如何实现服务治理的?等等一系列的问题,我记得我当时看源码前,足足给自己提了上百个问题。带着问题看源码,能够让你事半功倍,不仅仅是Dubbo,对于其他的框架,也是如此。
还有就是,不要为了看源码而看源码,很多小伙伴看了不少框架的源码,可没过多久就忘记了,跟没看一样,还浪费了很多时间。这种就是典型的为了看源码而看源码,并没有去深究这个框架的实现原理和细节,遇到看不懂的,可以先跳过,记录下,等把相关联的代码看懂后,再反过头来重新梳理没有看懂的源码。
框架使用了哪些技术
阅读源码前,还有一项重要的工作就是,要了解框架中使用了哪些技术。对所用的技术要有个大体的了解。比如:在Dubbo中使用了SPI、时间轮定时任务、服务注册与发现、Netty、序列化、自定义协议等等技术。所以,在阅读源码前,先要对这些技术有个大体的了解。
比如,在看Dubbo源码前,我就已经了解到Dubbo的网路交互底层使用的Netty,正好在我工作不久的时候,我又深入研究过Netty的源码,这就有助于我在看Dubbo源码时,能够更好的理解Dubbo的网络编程部分。
所以说,台上一分钟,台下十年功,在看Dubbo源码前,我也是做了充分的准备。
阅读源码时注意什么
任何一项技术框架,或者说开源项目,肯定是为了解决某些场景而生的,就比如Dubbo,相信小伙伴们都知道,Dubbo作为一个分布式服务治理框架,一个典型的使用场景就是分布式系统。
其次,一个优秀的技术框架或开源项目背后肯定蕴含着众多其他技术的原理与实现。我们同样是以Dubbo为例,在Dubbo中,为了实现在分布式场景下,调用远程RPC服务就像调用本地服务一样,其至少需要实现如下功能:
服务之间高性能的通信。服务调用需要做到负载均衡、高可用、限流。服务治理。高可靠、容错。服务能够自动注册和发现。而实现这些功能时,Dubbo借助了哪些优秀的开源框架?这些开源框架Dubbo是如何集成起来的?是硬编码方式集成?还是其他更好的方式?这些都是需要我们在阅读源码的时候,去源码中找到答案。
阅读源码的方式
我把阅读源码的方式总结为:先整体再局部,先宏观再微观,先粗略再细节。
什么意思呢?就是在看源码的时候,先从整体上把握源码的设计原理和设计理念,先整体上大概了解源码是如何实现的。比如在Dubbo中,网络编程是基于Netty实现的,你就可以先做个了解,知道这么回事。从整体上把握基本的框架源码后,再从细节中死磕具体的实现,比如,在Dubbo中是如何使用Netty实现网络交互的?
记住,阅读源码时切忌在还没有搞懂整体的设计原理和整体源码设计前,就开始死扣源码的细节。否则,你会在源码里面迷失自己。
如何验证自己掌握了源码?
阅读源码光看源码还不行,还要自己去动手实践,正所谓“实践是掌握整理的唯一标准”。你不实践,怎么知道自己是不是掌握了。
我把实践部分分为两个组成部分:在看源码的过程中动手实践;在看源码后动手实践。
在看源码的过程中动手实践就是说:在看源码的过程中,将自己不明白的地方记录下来,查阅官网文档或者其他资料,如果是由于自己的技术能力有欠缺,看不懂的,就要及时为自己充电来补充相关的知识点了。如果是遇到自己认为比较好的实现方式时,可以在框架的代码上以注释的方式标记自己的理解。比如,我在看Dubbo源码的时候,就标注了大量的注释。
在看源码后,一定要动手实操。看过Dubbo的整体源码后,如果你认为自己掌握了Dubbo,就不妨自己动手实现一个RPC框架,看看自己实现的框架与Dubbo框架有哪些区别,为啥Dubbo框架是这样实现的。再反过头来带着问题看Dubbo的源码,你肯定会理解的更加深入。而我,在看完Dubbo框架的源码后,也是这样做的。
阅读源码的总结
最后,跟小伙伴们透露下:我从开始看Dubbo源码,到掌握Dubbo的原理和源码,前前后后只用了不到一个月,而且都是用的业余时间(每天不到2小时)。
记住,阅读源码前,一定要明确为何读源码,带着问题读源码,对于源码中所涉及的其他技术或框架,一定要有所了解。阅读源码的过程中,要遵循:先整体再局部,先宏观再微观,先粗略再细节的原则。最重要的一点是:在阅读源码的过程中和阅读源码后都要动手实践。
- 撸完Dubbo3源码,我总结了这些阅读源码的技巧
- 拓宽思路合作共赢 河南辉县市生态环境局局长带队赴宁波开展招商引资
- 天天快消息!暴雨将至!湖北发布灾害风险提示
- 小麦蚜虫防治警报
- 品牌联动强化消费者服务 蒙牛摘得“京东618”八连冠_观天下
- 苏州湾音乐喷泉具体地址在哪里_焦点日报
- 关注:丹麦反重力瀑布 原理是什么 长什么样_图
- 外交部:第七轮中德政府磋商高效务实,成果丰硕 当前资讯
- 世界简讯:超能陆战队国语版下载 1080P_超能陆战队国语版下载
- 环球热推荐:性生活对于老年人,到底有多重要?从5个方面,给你分析清楚
- 当前看点!“作家新干线·散文”赵艺宏|回民街
- 每周医药看点(6.14—6.20)-全球新要闻
- 注意防范!福建启动防暴雨Ⅳ级应急响应_每日热点
- 天天精选!企业文化内容_企业文化的内容有哪些
- 长安汽车:动力电池行业产能严重过剩 环球新动态
- 2022年度山东省科学技术奖公布!这些医学项目(人选)榜上有名-全球观察
- settle in和settle down_settle和settle down 的区别 世界快报
- 环球滚动:中国科大在气体传感器方面取得进展 实现一氧化碳等准确识别
- 飞利浦5300电视(飞利浦530)_每日热讯
- 苹果手机和电脑相连用什么软件_苹果手机与电脑连接需要下载什么软件
- 今日关注:美国气候特使克里谈布林肯访华:着急,我啥时候能去
- 全球短讯!大数据技术学什么课程及毕业薪酬岗位去向 就业前景怎么样
- 经常恶心是什么毛病_经常恶心是什么病的前兆 当前独家
- 阿照唱的是什么歌曲_阿照
- 肠胃炎怎么治疗才能断根_肠胃炎怎么治疗
- 世界简讯:欧美债市周二普涨 英债收益率高位回落短期仍是关注焦点
- 网络中国节·端午|吕梁:荷包飘香粽味浓
- 中概股暴跌 红包凉了吗|天天快播
- 速看:安德门劳务市场搬到哪了_安德门劳务市场搬到哪里去了
- 弗兰克卡明斯基2k_弗兰克 卡明斯基