天天看點

SpringCloud微服務之Eureka服務注冊與發現

一、什麼是Eureka

1、官方解釋

SpringCloud微服務之Eureka服務注冊與發現

2、解釋

Eureka是Netflix的一個子子產品,也是核心子產品之一。Eureka是一個基于REST的服務,用于定位服務,以實作雲端中間層服務發現和故障轉移。服務注冊與發現對于微服務架構來說是非常重要的,有了服務發現與注冊,隻需要使用服務的辨別符(服務名稱),就可以通路到服務,而不需要修改服務調用的配置檔案了。功能類似于dubbo的注冊中心,比如Zookeeper。 

二、Eureka的基本架構

1、Eureka 采用了 C-S 的設計架構。Eureka Server 作為服務注冊功能的伺服器,它是服務注冊中心。

而系統中的其他微服務,使用 Eureka 的用戶端連接配接到 Eureka Server并維持心跳連接配接。這樣系統的維護人員就可以通過 Eureka Server 來監控系統中各個微服務是否正常運作。SpringCloud 的一些其他子產品(比如Zuul)就可以通過 Eureka Server 來發現系統中的其他微服務,并執行相關的邏輯。

2、Eureka架構圖

SpringCloud微服務之Eureka服務注冊與發現

3、Eureka包含兩個元件:Eureka Server和Eureka Client

(1)

Eureka Server提供服務注冊服務

各個節點啟動後,會在EurekaServer中進行注冊,這樣EurekaServer中的服務系統資料庫中将會存儲所有可用服務節點的資訊,服務節點的資訊可以在界面中直覺的看到

(2)

EurekaClient是一個Java用戶端,用于簡化Eureka Server的互動,用戶端同時也具備一個内置的、使用輪詢(round-robin)負載算法的負載均衡器。在應用啟動後,将會向Eureka Server發送心跳(預設周期為30秒)。如果Eureka Server在多個心跳周期内沒有接收到某個節點的心跳,EurekaServer将會從服務系統資料庫中把這個服務節點移除(預設90秒)

三、Eureka三大角色

1、Eureka Server 提供服務注冊和發現

2、Service Provider服務提供方将自身服務注冊到Eureka,進而使服務消費方能夠找到

3、Service Consumer服務消費方從Eureka擷取注冊服務清單,進而能夠消費服務

四、編寫eureka服務注冊中心Module

1、pom

<dependencies>
        <!--eureka-server服務端 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
        </dependency>
        <!-- 修改後立即生效,熱部署 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>springloaded</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
    </dependencies>           

2、yml

server:
  port: 7010

eureka:
  instance:
    hostname: localhost  #eureka服務端的執行個體名稱
  client:
    register-with-eureka: false #false表示不向注冊中心注冊自己
    fetch-registry: false #false表示自己端就是注冊中心,我的職責就是維護服務執行個體,并不需要去檢索服務
    service-url:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #設定與Eureka Server互動的位址查詢服務和注冊服務都需要依賴這個位址
           

3、主啟動類

@EnableEurekaServer //EurekaServer伺服器端啟動類,接受其它微服務注冊進來
@SpringBootApplication
public class EurekaService7010App {
    public static void main(String[] args) {
        SpringApplication.run(EurekaService7010App.class, args);
    }
}           

4、測試

SpringCloud微服務之Eureka服務注冊與發現

五、将已有的部門微服務注冊進eureka服務中心

1、修改microservicecloud-provider-dept-8001 pom檔案

<!-- 将微服務provider側注冊進eureka -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>           

 2、yml

eureka:
  client: #用戶端注冊進eureka服務清單内
    service-url:
      defaultZone: http://localhost:7010/eureka           

3、主啟動類

@EnableEurekaClient //本服務啟動後會自動注冊進eureka服務中
@SpringBootApplication
public class DeptProvider8001App {
    public static void main(String[] args) {
        SpringApplication.run(DeptProvider8001App.class, args);
    }
}
           
SpringCloud微服務之Eureka服務注冊與發現

4、啟動測試

SpringCloud微服務之Eureka服務注冊與發現

繼續閱讀