先看一張圖
0
這個圖是Eureka官方提供的架構圖,整張圖基本上把整個Eureka的核心功能給列出來了,當你要閱讀Eureka的源碼時可以參考着這個圖和下方這些文章
EurekaServer
EurekaServer就是我們常說的服務端
Eureka服務端的啟動可參考這篇文章EurekaServer自動裝配及啟動流程解析
它維護了一張服務注冊表,在這個服務注冊表中包含了所有的客戶端信息
當服務端啟動時會做這么幾個事情:
- 向集群中的其他服務端發起數據同步請求:Eureka應用注冊與集群數據同步源碼解析
- 開啟清理過期租約的線程:Eureka客戶端續約及服務端過期租約清理源碼解析
EurekaClient
EurekaClient就是我們常說的客戶端
Eureka客戶端的啟動可參考這篇文章:EurekaClient自動裝配及啟動流程解析
客戶端是與應用程序綁定到一起的,某種意識上來說它是應用實例在注冊中心的代言人
當客戶端啟動時會做這么幾個事情:
- 向服務端發起注冊請求:Eureka應用注冊與集群數據同步源碼解析
- 開啟續租的線程:Eureka客戶端續約及服務端過期租約清理源碼解析
- 先全量獲取一次可用服務列表且開啟一個定時增量獲取的線程:Eureka獲取服務列表源碼解析
當服務下線時會向服務端發送下線通知:Eureka服務下線源碼解析
服務分區
在圖中三個EurekaServer之間是用線隔開的,在EurekaServer上面的三個us-east-xx其實就代表着三個服務端所在的三個分區。
為什么會出現分區這個概念呢?
當一個項目的用戶量比較大時,一般會在多個城市的多個機房分別部署多套服務,為了避免網絡延時,我們就希望一個條件允許的情況下一個服務優先調用同機房的服務。為了實現這個功能Ribbon還專門提供了一種負載均衡算法
自我保護模式
為了避免網絡分區故障的解決方案:Eureka自我保護模式源碼解析
