Spring Cloud Eureka 詳解

Eureka 是Spring Cloud Netflix 微服務套件中的一部分,它基於Netflix Eureka作了二次開發,主要負責完成微服務架構中的服務治理功能。緩存

Eureka 基礎架構三個核心要素網絡

    1:服務註冊中心架構

    2:服務提供者負載均衡

    3:服務消費者框架

    服務治理主要分爲微服務

        1:服務註冊:性能

                        在服務治理框架中,一般都會構建一個服務註冊中心,每一個服務提供者須要向註冊中心,登記本身的註冊信息。好比IP,端口號,版本號,服務名,通訊協議等等附加信息告知註冊中心,註冊中心會根據服務名,進行分類服務清單。例以下圖:fetch

        eureka維護分類服務清單,是經過一個雙層Map, 第一層Map的key就是服務名,例如上圖的HELLO-SERVICE,第二層的Key就是具體的實例信息,例如上圖的DLBOOH........:hello-service:8081blog

        2:服務發現接口

                        因爲在服務治理框架下運做程序,服務間的調用不在是經過指定具體的實例地址來實現,服務間的調用經過服務名來調用,例如:http://hello-service:8081/hello。因此當服務調用方 想要調用服務提供方的接口時,服務調用方是不知道服務提供方的具體實例地址的,    所以調用方須要向註冊中心Eureka諮詢服務,並獲取全部服務的實例清單。例如:現有服務B想要調用服務A,服務B就須要向註冊中心發起請求獲取服務A的實例清單,註冊中心返回服務A的實例清單,而後服務B會從清單中以某種策略輪詢訪問清單中的的實例,實現負載均衡的效果  訪問方式能夠經過 Ribbon。

                        實際生產項目中,不會在每一次請求中都獲取服務列表清單,這樣作效率低下。實際場景中緩存和服務剔除等機制也會有一些不一樣的實現方式

        3:服務同步

                        當Eureka實現高可用後,服務提供者可分別註冊到集羣中的不一樣服務註冊中心上,也就是說 它們的信息分別被不一樣的註冊中心維護,此時因爲服務中心互相註冊爲服務(高可用),當服務提供者發送註冊請求到一個服務註冊中心時,它會將該請求轉發同步給集羣中的其餘註冊中心,從而實現服務註冊中心的服務同步。經過服務同步,兩個服務提供者的服務信息就能夠經過這兩臺服務註冊中心中的任意一臺獲取到

          4:服務續約

                在註冊完服務以後,服務提供者會維護一個心跳用來持續告訴Eureka「我還活着」,以防止Eureka的剔除服務將該服務從列表清單中排除出去,咱們稱該操做爲服務續約

                關於服務續約有兩個重要的屬性,

            ##用於定義服務續約任務的調用間隔時間,默認爲30秒    

            eureka.instance.lease-renewal-interval-in-seconds=30

            ##參數用於定義服務失效的時間,默認爲90秒

            eureka.instance.lease-expiration-duration-in-seconds=90

           5:獲取服務

                當服務消費者程序啓動時,它會發送一個Rest請求給註冊中心,來獲取上面註冊的服務清單,爲了性能考慮,Eureka會維護一份只讀的服務清單來返回給客戶端,同時該緩存清單會每隔30秒更新一次。

                獲取服務是服務消費者的基礎,因此必須確保eureka.client.fetch-registry=true 默認爲true,若但願修改緩存清單的更新時間,能夠經過eureka.client.registry-fetch-interval-seconds=30 進行修改,默認30秒,參數單位秒

           6:服務調用

                獲取服務清單後,經過服務名能夠獲取實例的名和實例的元數據(ip,port等等)利用Ribbon實現輪詢方式調用服務提供方。

           7:   服務下線

                 當服務下線後,正常狀況下 咱們是不但願,服務消費方繼續調用已經下線的服務的,因此再服務提供方正常關閉時,會觸發一個服務下線的REST請求,告訴Eureka 「我要下線了」。Eureka收到請求後,會將此服務設置爲(DOWN),並將此消息廣播到出去,更新緩存清單。

            8:服務中心的失效剔除

                當服務非正常關閉時,好比機器Down了,斷電,內存溢出,網絡故障等等。這時候是不會觸發服務下線的REST的請求,爲了將這些已經沒法提供的服務剔除,Eureka Server會在啓動時,建立一個定時任務,默認每隔60秒將清單中超時沒有續約的剔除。

 

文章參考:《Spring+cloud微服務實戰》

相關文章
相關標籤/搜索