中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringCloud中怎么搭建Eureka服務注冊中心

發布時間:2021-06-18 17:32:01 來源:億速云 閱讀:153 作者:Leah 欄目:大數據

本篇文章為大家展示了SpringCloud中怎么搭建Eureka服務注冊中心,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

一:Eureka簡介

Eureka和Consul、Zookeeper等類似,是一個用戶服務發現和服務注冊的組件,最開始主要用于亞馬遜旗下的云計算服務平臺AWS。Eureka分為EurekaServer(服務注冊中心)和EurekaClient(客戶端)。

Eureka優點
  • 1:完全開源,且經過三年時間迭代,性能和功能都非常穩定。

  • 2:是SpringCloud官方推薦的注冊中心,能夠和SpringCloud其他組件完美對接。

  • 3:Eureka能夠和Ribbon、Hystrix、Zuul等其他組件相互配合,快速完成服務注冊中心,和這些組件并稱Netfilx OOS組件,由SpringCloud整合,是SpringCloud的核心服務組件,也是基礎組件。

二:搭建第一個服務注冊中心

Talking is boolshit, just look at the code!

  • 父項目pom.xml

<groupId>com.calvin.cloud</groupId>
<artifactId>cloud_day01</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
    <module>eureka-server</module>
    <module>eureka-client</module>
</modules>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.3.RELEASE</version>
</parent>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
</properties>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Dalston.SR4</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

使用SpringInitializr創建兩個子Module,分別是eureka-server和eureka-client

SpringCloud中怎么搭建Eureka服務注冊中心

  • eureka-server/pom.xml

<parent>
    <artifactId>cloud_day01</artifactId>
    <groupId>com.calvin.cloud</groupId>
    <version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>eureka-server</artifactId>

<dependencies>
    <!-- springcloud的版本如果有問題,這個包引入就會有問題 -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka-server</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
  • eureka-server/EurekaServerApplication.java

/**
 * EurekaServer啟動類
 * @author Calvin
 * @date 2019/07/29
 */

@SpringBootApplication
@EnableEurekaServer
public class ServerApplication {
    
    public static void main(String[] args) {
        SpringApplication.run(ServerApplication.class);
    }
    
}
  • eureka-server/application.yml

server:
  port: 8080
eureka:
  instance:
    hostname: localhost
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
      defaultZone:
        http://${eureka.instance.hostname}:${server.port}/eureka

啟動EurekaServerApplication.main(),瀏覽器訪問 http://localhost:8080/eureka 此時顯示并沒有可用服務注冊進來
No instances available
SpringCloud中怎么搭建Eureka服務注冊中心

再來寫一個EurekaClient
  • eureka-client/pom.xml

<parent>
        <artifactId>cloud_day01</artifactId>
        <groupId>com.calvin.cloud</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>eureka-client</artifactId>

    <dependencies>
        <!-- springcloud的版本如果有問題,這個包引入就會有問題 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
  • eureka-client/application.yml

server:
  port: 8081
spring:
  application:
    name: my_eureka_client
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8080/eureka/
  • eureka-client/ClientApplication.java

/**
 * Client測試啟動類
 * @author Calvin
 * @date 2019/09/29
 */
@SpringBootApplication
@EnableEurekaClient
public class ClientApplication {

    public static void main(String[] args) {
        SpringApplication.run(ClientApplication.class);
    }

}

刷新http://localhost:8080/eureka 發現服務已經注冊成功了 SpringCloud中怎么搭建Eureka服務注冊中心

三:Eureka核心探索

微服務中的概念
  • 1:Register———服務注冊
    服務注冊即是EurekaClient祥EurekaServer提交注冊自己的服務信息,包括IP地址、端口,ServiceID等信息。如果EurekaClient中沒有ServiceId,則默認以配置文件中的#{spring.application.name}為服務名。

  • 2:Renew———服務續約
    EurekaClient默認每隔30s發送一次心跳來進行服務續約。通過服務續約來告知EurekaServer該EurekaClient依然可用,沒有出現故障。如果EurekaServer在90s之內沒有收到心跳,則EurekaServer會認為該服務已經掛掉,則會將該EurekaClient實力從注冊列表中剔除掉。

  • 3:FetchRegistries———獲取服務注冊列表信息
    EurekaClient從EurekaServer中獲取服務注冊表信息,并將其緩存在本地。EurekaClient會使用服務注冊列表中的信息查找其他服務的信息,從而進行遠程調用。
    該注冊列表信息會定時30s從服務端更新一次,每次返回的注冊列表信息可能與EurekaClient緩存的信息不匹配,EurekaClient會自己處理這些信息。如果由于某種原因導致注冊列表信息不能及時匹配,則EurekaClient會重新更新這些信息。
    EurekaServer緩存了所有的服務注冊列表信息,并將整個服務列表以及每隔應用程序進行了壓縮,壓縮內容和沒有壓縮的內容完全相同。EurekaClient和EurekaServer可以是用JSON和XML數據格式相互通信。在默認的情況下,EurekaClient使用JSON格式的方式獲取服務注冊列表信息。

  • 4:Cancel———服務下線
    EurekaClient在程序關閉時可以向EurekaServer發送下線請求,發送請求后,該客戶端的實例信息將從EurekaServer的服務信息列表中刪除。該下線請求不會自動完成,需要在程序關閉時調用以下代碼 DiscoverManager.getInstance().shutdownComponent();

  • 5:Evication———服務剔除
    在默認情況下,當EurekaClient連續90s沒有像EurekaServer發送心跳,EurekaServer則會認為該服務已經不可用,將該服務實例從服務列表信息中刪除。

高可用服務注冊中心

SpringCloud中怎么搭建Eureka服務注冊中心
上面的架構描述了Eureka在Netflix上的部署方式,也是正常Eureka正常的部署和運行方式。每個區域都有一個Eureka集群,且每個區域至少有一個Eureka服務器來處理區域故障。

服務在EurekaServer注冊,然后發送心跳以每30秒更新其租約。如果客戶端無法保持心跳,EurekaServer將在90秒后從出服務器注冊列表中剔除此服務實例。注冊信息和續約信息將復制到集群中的所有EurekaServer節點。來自任何區域EurekaClient都可以每隔30s獲取到所有注冊列表信息,并進行遠程調用。 以上資料來自于官網:https://github.com/Netflix/eureka/wiki/Eureka-at-a-glance

四:小結

  1. 簡單介紹Eureka以及優缺點

  2. 編寫第一個Eureka注冊中心

  3. 了解Eureka中的概念和高可用注冊中心的架構

五:問題總結

  1. 內容相對簡單,沒有對概念進行深入剖析

  2. 代碼中沒有進行集群搭建,也沒有測試服務提供者和消費者

  3. 后續應該加上源碼解析

上述內容就是SpringCloud中怎么搭建Eureka服務注冊中心,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

六安市| 新兴县| 古浪县| 古蔺县| 米泉市| 镇巴县| 白城市| 方山县| 黄陵县| 大英县| 汽车| 靖安县| 南开区| 建始县| 永平县| 扎赉特旗| 吐鲁番市| 拜泉县| 贵港市| 南华县| 尉犁县| 天祝| 庆阳市| 介休市| 宜丰县| 商丘市| 鹤壁市| 南康市| 龙口市| 遂昌县| 万荣县| 泾源县| 贺州市| 东乌珠穆沁旗| 麦盖提县| 长顺县| 伊春市| 大埔区| 大石桥市| 五华县| 乐亭县|