java B2B2C電子商務平臺分析之十五-----EureKa服務註冊與發現

什麼是服務發現與服務註冊

簡單的來說就是一個微服務要調用另一個微服務,就必須知道這個微服務的地址及端口信息。採用一張註冊表,註冊上線可用的微服務及相關信息,微服務則從註冊表上查找所需的其它微服務的相關信息。有兩種主要的服務發現模式:客戶端服務發現(client-side discovery)和服務器端服務發現(server-side discovery)願意瞭解源碼的朋友直接求求交流分享技術:二一四七七七五六三三

客戶端發現
java B2B2C電子商務平臺分析之十五-----EureKa服務註冊與發現

服務端服務發現

當發送請求到一個service的時候,客戶端發送請求到一個router,這個router是在一個已知的地址上運行的。router查詢service registry(可能在這個router中實現), 然後把請求發送到可用的service實例。如下所示: 

java B2B2C電子商務平臺分析之十五-----EureKa服務註冊與發現
服務發現組件的功能

服務註冊表 
服務註冊表是一個記錄當前可用服務實例的網絡信息的數據庫,是服務發現機制的核心。服務註冊表提供查詢API和管理API,使用查詢API獲得可用的服務實例,使用管理API實現註冊和註銷;
服務註冊 
服務註冊:服務啓動時,將服務的網絡地址註冊到服務註冊表中;
健康檢查 
服務發現組件會通過一些機制定時檢測已註冊的服務,如果發現某服務無法訪問了(可能是某幾個心跳週期後),就將該服務從服務註冊表中移除。
服務發現組件:Eureka

Eureka是客戶端發現類型的服務發現模式
Eureka來自生產環境
Spring Cloud對Eureka支持很好

java B2B2C電子商務平臺分析之十五-----EureKa服務註冊與發現
java B2B2C電子商務平臺分析之十五-----EureKa服務註冊與發現

上圖是來自Eureka官方的架構圖,大致描述了Eureka集羣的工作過程。 
Eureka有兩個概念,區域(Region)與可用區(Zone),不太理解,先抄過來佔個位置。

區域(Region):

AWS雲服務在全球不同的地方都有數據中心,比如北美、南美、歐洲和亞洲等。與此對應,根據地理位置我們把某個地區的基礎設施服務集合稱爲一個區域。通過AWS的區域,一方面可以使得AWS雲服務在地理位置上更加靠近我們的用戶,另一方面使得用戶可以選擇不同的區域存儲他們的數據以滿足法規遵循方面的要求。美東(北佛吉尼亞)、美西(俄勒岡)、美西(北加利佛尼亞)、歐洲(愛爾蘭)、亞太(新加坡)、亞太(東京)等。每個區域都有自己對應的編碼,如:編碼對應
可用區(Zone):

AWS的每個區域一般由多個可用區(AZ)組成,而一個可用區一般是由多個數據中心組成。AWS引入可用區設計主要是爲了提升用戶應用程序的高可用性。因爲可用區與可用區之間在設計上是相互獨立的,也就是說它們會有獨立的供電、獨立的網絡等,這樣假如一個可用區出現問題時也不會影響另外的可用區。在一個區域內,可用區與可用區之間是通過高速網絡連接,從而保證有很低的延時。AWS的區域與可用區的關係示意如下圖所示:可用區 
每次當用戶需要使用EC2相關資源的時候,他需要首先選擇目標區域,如美東(北佛傑尼亞)us-east-1。然後在創建EC2實例的時候,用戶可以選擇實例所在的可用區,比如可以是us-east-1a或us-east-1b等。可用區的編碼就是區域後面順序添加不同的英文字母。
Eureka在springcloud中的使用

Eureka包含兩個組件:Eureka Server 和 Eureka Client。

Eureka Server提供服務註冊服務,各個節點啓動後,會在Eureka Server中進行註冊,這樣Eureka Server中的服務註冊表中將會存儲所有可用服務節點的信息,服務節點的信息可以在界面中直觀的看到。
Eureka Client是一個Java客戶端,用於簡化與Eureka Server的交互,客戶端同時也具備一個內置的、使用輪詢(round-robin)負載算法的負載均衡器。
在應用啓動後,將會向Eureka Server發送心跳(默認週期爲30秒)。如果Eureka Server在多個心跳週期內沒有接收到某個節點的心跳,Eureka Server將會從服務註冊表中把這個服務節點移除(默認90秒)。
Eureka Server之間將會通過複製的方式完成數據的同步。
Eureka還提供了客戶端緩存的機制,即使所有的Eureka Server都掛掉,客戶端依然可以利用緩存中的信息消費其他服務的API。
綜上,Eureka通過心跳檢測、健康檢查、客戶端緩存等機制,確保了系統的高可用性、靈活性和可伸縮性。

整體代碼結構如下:
java B2B2C電子商務平臺分析之十五-----EureKa服務註冊與發現

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章