(二十六)java版spring cloud+spring boot 社交電子商務平臺-Eureka介紹

電子商務平臺源碼請加企鵝求求:一零三八七七四六二六。社交電商平臺源碼請加企鵝求求:一零三八七七四六二六。 什麼是Eureka ?spring

Eureka是一種用於服務註冊和發現的組件,和zookeeper功能相似。Eureka最開始主要用在亞馬遜的雲計算平臺AWS上。Eureka分爲服務註冊中心Eureka Server和客戶端Eureka Client。bash

爲何選擇Eureka架構

在springcloud中,能夠選擇Consul、zookeeper和Eureka做爲服務註冊和發現的組件,爲何選擇了Eureka。主要有如下幾個緣由app

Eureka是徹底開源的,通過Netflix公司的幾年實際使用,功能和性能都很穩定,能夠放心使用負載均衡

Eureka是springcloud首選推薦的服務註冊與發現組件,和springcloud的其餘組件能夠很好地對接。Eureka和其餘組件例如負載均衡組件Ribbon、熔斷器組件Hystrix、熔斷器監控組件Hystrix Dashboard組件、熔斷器聚合監控Turbine組件,以及網關Zuul組件相互配合,容易實現服務註冊、負載均衡、熔斷和智能路由。這些組件被整合成springcloud Netflix組件,它是springcloud構建微服務的基礎的組件。ide

Eureka的基本架構微服務

主要有三種角色:源碼分析

Register Service:服務註冊中心,提供服務的註冊和發現功能性能

Provider Service:服務提供者ui

Consumer Service:服務消費者

服務消費的基本過程以下:首先須要一個服務註冊中心Eureka Server,服務提供者Eureka Client向服務註冊中心Eureka Server註冊,把本身的信息(例如服務的名稱和服務和IP地址)經過REST API提交給服務註冊中心Eureka Server。服務消費者Eureka CLient也向服務註冊中心註冊,同時服務消費者獲取一份服務註冊列表的信息,這個列表中包含了全部向註冊中心註冊的服務信息。獲取服務註冊列表以後,服務消費者就知道服務提供者的IP地址,能夠經過Http遠程調度來使用服務提供者的服務。

部分源碼分析

在eureka-client模塊下,com.netflix.discovery包下面,有DiscoveryClient實體類,它包含了一些方法負責eureka client向eurekaserver註冊。EurekaClient繼承了Lookupservice接口,DiscoveryClient實現了EurekaClient接口,.在DiscoveryClient中有個服務註冊的方法,經過HTTP請求向Eureka server註冊。

boolean register() throws Throwable {
       logger.info(PREFIX + appPathIdentifier + ": registering service...");
       EurekaHttpResponse<Void> httpResponse;
       try {
           httpResponse = eurekaTransport.registrationClient.register(instanceInfo);
       } catch (Exception e) {
           logger.warn("{} - registration failed {}", PREFIX + appPathIdentifier, e.getMessage(), e);
           throw e;
       }
       if (logger.isInfoEnabled()) {
           logger.info("{} - registration status: {}", PREFIX + appPathIdentifier, httpResponse.getStatusCode());
       }
       return httpResponse.getStatusCode() == 204;
   }
複製代碼

EurekaServer的功能實如今eureka-core模塊中, EurekaBootstrap類在程序啓動的時候最早被初始化。在EurekaBootstrap類中,調用PeerAwareInstanceRegistryImpl類,這個類中register()方法,完成服務註冊,而且把服務註冊後的信息同步到其餘Eureka Server上 。

Renew服務續約:

服務註冊和服務續約很類似,Eureka Client程序啓動以後,服務註冊開啓,同時開啓服務續約的定時任務。Eureka client每隔30秒向eureka Server發送一個心跳,續約服務,若是沒有正常續約服務,Eureka Server就認爲這個客戶端不可用,默認狀況下90秒以後,就從Eureka server的服務註冊類表中把這個客戶端刪除。

服務續約功能也是在eureka-core這個模塊裏面實現的。

相關文章
相關標籤/搜索