撸完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源码,我总结了这些阅读源码...
今天,就为小伙伴们分享下我是如何利用不到一个月的业余时间(每天不到 -
【世界播资讯】一球员年龄及身份造假,...
一球员年龄及身份造假,中国足协作出禁赛处罚 -
陕西华源影视传播有限公司申请破产清算
广电网络(600831)于6月21日发布晚间公告称,陕西广电网络传媒(集团 -
恒力石化:公司经营情况明显改善 ...
6月21日,恒力石化召开2022年度暨2023年第一季度业绩说明会,公司董事 -
全球看热讯:沪指失守3200点,AI投资主...
本报记者张颖6月21日,A股三大股指集体回落,跌幅均超1%,沪指跌破3200 -
环球今日讯!甘肃华亭:城乡融合绘新景
央广网兰州6月21日消息(记者李红军通讯员朱玲)走进甘肃华亭城乡,四 -
【热闻】校长回复学生短信何以成“新闻”
近日,武汉工商学院校长孔建益在毕业典礼上的致辞感动了该校1000余名毕 -
天天快看点丨韩总统尹锡悦在巴黎倡议构...
韩联社消息,韩国总统尹锡悦6月21日在法国出席巴黎数字愿景论坛,并倡 -
外高桥回复问询函:公司不存在重大债务...
观点网讯:6月21日,上海外高桥集团股份有限公司发布关于向特定对象发 -
双一科技:公司复合材料产品目前尚未在...
每经AI快讯,有投资者在投资者互动平台提问:公司的复合材料产品,是否 -
天天速看:云南省举办2023年省级孕产妇...
6月7日-8日期间,国家级继续医学教育项目《云南省孕产妇安全管理综合技 -
京广高铁助力石家庄快速融入环首都一小...
(俱凝搏韩聚晓)20日,适逢京广高铁京武段按时速350公里高标运营一周年 -
北京农商银行杯“寻味运河”美食技艺大...
2014年中国大运河列入联合国教科文组织世界遗产名录,饮食文化一直以来 -
上海农商银行成立沪上首个总行级科技金...
上证报中国证券网讯6月21日,上海农商银行科技金融事业部正式揭牌,成 -
6月21日雷特科技发布公告,其股东增持5万股
6月21日雷特科技发布公告《雷特科技股东增持股份结果公告》其股东珠海 -
科力尔最新公告:监事曾利刚、刘辉拟减...
科力尔公告监事曾利刚计划减持公司股份不超过63万股占公司总股本的0014 -
你得了过敏性皮炎的症状吗?-热文
作为一名经验丰富的美容师,我曾经遇到过不少顾客因为过敏性皮炎而苦恼 -
戴维医疗:子公司拟不超3.5亿元投建微创...
戴维医疗6月21日公告,公司全资子公司宁波维尔凯迪医疗器械有限公司拟 -
【世界播资讯】永仁县农信联社被罚60万...
永仁县农信联社被罚60万:因贷款支付管理与控制不到位等2023年06月21日 -
快消息!守护钱袋子!邮储银行珠海市分...
为进一步普及金融知识、防范金融风险、远离非法集资骗局,6月18日,邮