Eureka原始碼手撕分析啟動流程(服務端)

2021-10-06 15:25:37 字數 2733 閱讀 9525

##該註解包含了如下內容

其中@import(eurekaservermarkerconfiguration.class)

現在怎麼下手,上面的**已經結束了。。。

經過查詢資料發現入口

在jar\spring-cloud-netflix-eureka-server-2.2.2.release.jar的manifest.mf資料夾下的spring.factories定義了bean實體物件springboot啟動時會去例項化該類

@import(eurekaserverinitializerconfiguration.class)(核心啟動類)

@conditionalonbean(eurekaservermarkerconfiguration.marker.class)(這裡有個前置條件,發現了前面**的作用)

@enableconfigurationproperties()

@propertysource(「classpath:/eureka/server.properties」)

該類啟動了乙個執行緒(eurekaserverinitializerconfiguration 實現了smartlifecycle.start方法,在spring 初始化的時候,會被呼叫),用來載入配置及啟動eureka的服務端和發布監聽事件

其中方法**eurekaserverbootstrap.contextinitialized(··)**看

initeurekaenvironment();初始化環境變數

initeurekaservercontext();初始化服務上下文,並註冊所有的監聽事件

拋開spring的封裝看看eureka是如何初始化的

/**

* init hook for server context. override for custom logic.

*/protected

void

initeurekaservercontext()

throws exception

else

//初始化註冊資訊類

peerawareinstanceregistry registry;if(

isaws

getinfo()

))else

//初始化節點

peereurekanodes peereurekanodes =

getpeereurekanodes

( registry,

eurekaserverconfig,

eurekaclient.

geteurekaclientconfig()

, servercodecs,

);//初始化上下文

servercontext =

newdefaulteurekaservercontext

( eurekaserverconfig,

servercodecs,

registry,

peereurekanodes,

); eurekaservercontextholder.

initialize

(servercontext)

; servercontext.

initialize()

; logger.

info

("initialized server context");

//從鄰近的eureka節點複製登錄檔

// copy registry from neighboring eureka node

int registrycount = registry.

syncup()

; registry.

openfortraffic

;// 註冊所有監控統計資訊

// register all monitoring statistics.

eurekamonitors.

registerallstats()

;}

是不是很清楚了,,,,

至此服務端分析完成…

Eureka原始碼系列 2 原始碼啟動入口

本文介紹如何搭建eureka原始碼的debug環境,網上有一些部落格抄來抄去,抄錯了都不知道。eureka server模組下有乙個測試類 eureka server src test j a com netflix eureka resources eurekaclientserverrestin...

Eureka 原始碼解析

color red b eureka 原始碼解析 應用例項註冊發現 二 之續租 b color url eureka原始碼解析 eureka client 初始化 一 之 eurekainstanceconfig url eureka 原始碼解析 eureka client 初始化 二 之 eure...

Zookeeper 原始碼分析 啟動

本文主要介紹了zookeeper啟動的過程 執行zkserver.sh start命令可以啟動zookeeper。入口的main函式在類中quorumpeermain。main函式主要呼叫了runfromconfig函式,建立了 quorumpeer物件,並且呼叫了start函式,從而啟動了zook...