Nacos源码学习计划-Day01-前言:如何学习源码
ZealSinger 发布于 阅读:125 技术文档
看源码,尤其是对于一个从0开始的源码学习者而言,往往都是有者浓烈的开头兴趣,但是在看代码的过程中,被一次又一次的方法跳转,一层有一层的调用给劝退,我个人也看过一些源码,也有同样的感受。我曾将尝试看过Spring的源码,MyBatis的源码,Java中一些JDK的底层实现等等,但其实没有任何一个框架是我从头到尾完整的都看过的,我可以相信,大多人和我一样,没有精力,也没有毅力,也没有合适的方法去看源码。先不说整个框架的源码,有时候甚至是某个框架内的核心功能的某个方法,要将这个方法彻底看完也都需要一定毅力。就那我完完整整看过的几个来说,ThreadLocal和InheritableThreadLocal和阿里的TTL的源码,JDK线程池的源码,Netty我们常用的那个模板化配置相关的源码,Spring的getBean方法,这几个是我还算相对而言看的比较认真和完善的,很多人或许也说自己看过,但你是真的只是看过了八股的部分还是说真的完整的有自己理解的看过这个就不得知了。
从我自己对于这个几个源码的阅读感受而言,读源码,要带着问题,带着思想,带着对于整个源码对象的架构认识去看,这样子才能将阅读源码过程中的枯燥,头大的层级调用 转化为对知识渴望,对未知的探索的兴趣。
相信下图的经历,也是不少同学的个人经历了
如何正确的看源码
我自己对于看源码的理解,其实就是上文讲到过的 “要带着问题,带着思想,带着对于整个源码对象的架构认识去看”
接下来要说的,是小册上提到的,我个人也很认可的地方。
-
首先要有大局观
所谓大局观,就是你得首先去了解你看源码的这个技术,他的核心功能,这个直接决定你看源码的方向,例如我们这个系列要看的Nacos,他是一个注册中心,服务中心,Nacos官网给出的最新架构图如下
从架构图中你就可以看出来,Nacos最大的部分就是那个OpenAPI所在的那个大方格,在那个大方格中,最显眼的其实就是Config Service(也就是我们Nacos发挥的配置中心的作用) 和 MCP Registry(AI时代的时候新产物 MCP注册功能) 以及 Naming Service(Nacos的注册中心功能),从这里就可以看出来,我们核心的部分其实就是了解他们三,了解这三个之后再往外部衍生去了解
-
动手操作
对于任何一种IT技术的学习,能实践的时候必定要实践,理论弄懂了,永远只是一种表层记忆在脑袋中,随着时间的流逝自然而然会很快遗忘。但是如果搭配实践,实践本身产生的记忆效果就比单纯的看要更加深刻,再加上在实践的过程中,会发现更多的之前没注意到的问题,在你尝试解决这些问题的时候,你也就更加有影响
-
尝试分析
对于使用这个服务代来的特性的时候,你就可以顺着他的功能去思考实现,从而分析。例如
(1)引入注册中心依赖之后,是在项目启动时,哪个环节把服务注册到注册中心的? (2)Nacos 服务接收到服务注册的请求,它是怎么做的? (3)订单服务调用库存服务,是什么流程?是 Nacos 调用库存服务,然后把结果返回给订单服务?还是 Nacos 把库存服务 IP、端口告诉订单服务,由订单服务自己发起?
在我们动手操作的过程中就会产生问题,当然这是分析的最基本的问题。比如第三个问题,我可以现在告诉同学们,是 Naocs 把库存服务 IP、端口告诉订单服务,由订单服务自己发起的请求,在我们 Nacos 服务端会有一个注册表
,缓存全部的微服务 IP + 端口。
那么问题又来了:既然是缓存,那服务下线了,Nacos 是怎么去感知的?Nacos 怎么维护注册表信息的?订单服务每次下单都先去找 Nacos 服务获取库存服务的 IP 地址,这样做是不是给 Nacos 服务带来很大的压力,Nacos 又是怎么解决的?
在我们分析源码的同时,也会不断产生新的疑问,我们需要在源码中,寻找答案,解决疑惑。
文章标题:Nacos源码学习计划-Day01-前言:如何学习源码
文章链接:https://zealsinger.xyz/?post=26
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明来自ZealSinger !
如果觉得文章对您有用,请随意打赏。
您的支持是我们继续创作的动力!

微信扫一扫

支付宝扫一扫