前言
最近發現 網上好多自己的博客,很多朋友轉載了文章卻不加下 原載地址,本文歡迎轉載一起學習,請在目錄出加上原出處,感謝。轉載來自:博客(一枝花算不算浪漫)
看了前面幾篇文章的小伙伴知道,前幾天在學習設計模式,所以標題也是用的【一起學xxx】,后面不出意外的話 都會使用這個標題了。
公司項目一直用的也是spring cloud,目前自己的水平僅僅也停留在使用階段,所以最近用業余時間來學習下spring cloud相關組件。
文章打算采用連載的方式,歡迎大家批評指正。
項目結構
以下所有文章 源碼皆基於spring-cloud Edgware.SR3 版本。對應Netflix eureka 1.7.x版本。
因為spring-cloud-eureka 底層對netflix eureka進行了封裝,所以這里我們先看netflix eureka源碼,后續再去讀以下spring-cloud-eureka 對應的東西即可。
目錄如下:
主要讀取server、client、core等相關代碼
源碼地址: https://github.com/Netflix/eureka
這里建議fork到自己git倉庫,因為自己添加的注釋、修改等可以直接提交,方便自己日后閱讀參考。
上帝視角,源碼從何看起
首先我們要找到代碼中的口子,從入口開始讀起會方便的多。
如上圖所示,這里 標注的一些地方都可能是一些代碼的入口。
這里我們先打開web.xml文件,學過j2ee的同學都應該知道,web.xml中會配置工程的servlet、filter、listener、啟動加載級別等信息。
EurekaBootStrap 配置的是一個listener,它會隨着web應用的啟動而啟動。所以這里就可以理解為eureka-server 的入口程序,后續我也會圍繞着此類來學習。
源碼讀取技巧
掐指算算,自己也讀過一些源碼了,那么源碼該如何讀取才會更好呢?
早些時候 我對於源碼讀起來是很繞的,經常會讀的暈頭轉向,繞在各個方法中 最終不知所雲。所以這里我有兩點建議:
1、抓大放小
2、由粗到細
抓大放小,搞清楚大的流程、架構以及核心的一些實現的機制和細節。不要沉迷於所有的細節。
由粗到細,可以先整體過一遍代碼流程,然后再一點點精度。
點題
到底我們為什么讀代碼?
這個優點多了去吧?
1、深入源碼 有助於項目中遇到問題 快速解決
2、方便二次開發,基於自己需求定制化開發
3、裝X
哈哈 最后一個是自己YY的,大家不必在意,好處我就不說了。
下一講開始從eureka-server看起,搞起來搞起來
申明
本文章首發自本人博客:https://www.cnblogs.com/wang-meng 和公眾號:壹枝花算不算浪漫,如若轉載請標明來源!
感興趣的小伙伴可關注個人公眾號:壹枝花算不算浪漫