溫馨提示×

溫馨提示×

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

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

Spring-Cloud學習之Eureka集群搭建

發(fā)布時間:2020-05-29 09:54:09 來源:網絡 閱讀:414 作者:liduchang 欄目:軟件技術

一.為什么需要集群

上一篇文章講解了如何搭建單個節(jié)點的eureka,這篇講解如何搭建eureka集群,這里的集群還是本地不同的端口執(zhí)行三個eureka,因為條件不要允許,沒有三臺電腦,所以大家將就一下吧,eureka集群的目的就是防止一個點故障導致,整個服務癱瘓的問題,成為單點故障,因為一個點出問題,還有另一個點頂上去,代替這個點工作,所以集群也實現了高可用、高性能

二.集群的原理

每一個注冊點都配置有其它點的url,能夠與其他server點進行數據的同步,當服務向一個點注冊時,該店就會把該服務同步到其它注冊點,當消費者需要消費時就會向注冊中心詢問具體的服務,注冊中心就會向消費者提供具體的提供該服務的服務提供者的訪問地址,最后實現服務的調用
Spring-Cloud學習之Eureka集群搭建

三.創(chuàng)建集群win環(huán)境配置

這里方便就直接把所有的服務都泡在本地的win10環(huán)境中,本來真正模擬環(huán)境是要在linux的虛擬機上跑的,大家可以自行百度,原理都一樣的,只不過跑在linux上需要打包發(fā)布,我就直接在win上操作了。首先本地跑多個服務配置一下,域名映射,在C:\Windows\System32\drivers\etc路徑下的hosts文件中加入:
127.0.0.1 eureka3000.com
127.0.0.1 eureka3001.com
127.0.0.1 eureka3002.com
這里需要提醒的是,修改hosts文件是有權限的,具體設置權限的方法參考win10修改配置文件

四.創(chuàng)建集群

  • 首先創(chuàng)建的目錄如下:創(chuàng)建eureka3000在上一篇文章已經講過了(參考搭建Eureka單節(jié)點),創(chuàng)建eureka3001和eureka3001也是一樣,這里就直接粘貼處pom文件了

Spring-Cloud學習之Eureka集群搭建

  • eureka3000的pom文件:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.org.ldc</groupId>
    <artifactId>eureka3000</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>eureka3000</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <!-- 繼承本項目的父工程 -->
    <parent>
        <groupId>com.org.ldc</groupId>
        <artifactId>eureka-father</artifactId>
        <version>1.0.0.RELEASE</version>
    </parent>

    <!--引入eurekaserver  依賴-->
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

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

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>
  • eureka3000的applicatiion.yml文件:
server:
  port: 3000
eureka:
  server:
    enable-self-preservation: false  #關閉自我保護機制
    eviction-interval-timer-in-ms: 4000 #設置清理間隔(單位:毫秒 默認是60*1000)
  instance:
    hostname: eureka3000.com
  client:
    serviceUrl:
        defaultZone: http://eureka3001.com:3001/eureka,http://eureka3002.com:3002/eureka   #將自己當成服務注冊到其他注冊中心
spring:
  application:
    name: eureka-server-cluster  #設置服務名
  • eureka3000啟動類和原來的一樣
  • eureka3001的pom文件:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.org.ldc</groupId>
    <artifactId>eureka3001</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>eureka3001</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <!-- 繼承本項目的父工程 -->
    <parent>
        <groupId>com.org.ldc</groupId>
        <artifactId>eureka-father</artifactId>
        <version>1.0.0.RELEASE</version>
    </parent>

    <!--引入eurekaserver  依賴-->
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

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

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>
  • eureka3001的application文件:
server:
  port: 3001
eureka:
  server:
    enable-self-preservation: false  #關閉自我保護機制
    eviction-interval-timer-in-ms: 4000 #設置清理間隔(單位:毫秒 默認是60*1000)
  instance:
    hostname: eureka3001.com
  client:
    serviceUrl:
        defaultZone: http://eureka3000.com:3000/eureka,http://eureka3002.com:3002/eureka   #將自己當成服務注冊到其他注冊中心
spring:
  application:
    name: eureka-server-cluster  #設置服務名
  • 啟動類同上

  • eureka3002的pom文件:

    
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.org.ldc</groupId>
    <artifactId>eureka3002</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>eureka3002</name>
    <description>Demo project for Spring Boot</description>
    
    <properties>
        <java.version>1.8</java.version>
    </properties>
    
    <!-- 繼承本項目的父工程 -->
    <parent>
        <groupId>com.org.ldc</groupId>
        <artifactId>eureka-father</artifactId>
        <version>1.0.0.RELEASE</version>
    </parent>
    
    <!--引入eurekaserver  依賴-->
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
    
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Finchley.SR2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

 - eureka3002的application文件:

server:
port: 3002
eureka:
server:
enable-self-preservation: false #關閉自我保護機制
eviction-interval-timer-in-ms: 4000 #設置清理間隔(單位:毫秒 默認是60*1000)
instance:
hostname: eureka3002.com
client:
serviceUrl:
defaultZone: http://eureka3001.com:3001/eureka,http://eureka3000.com:3000/eureka #將自己當成服務注冊到其他注冊中心
spring:
application:
name: eureka-server-cluster #設置服務名


 - 最后是工程的pom文件內容如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<!--基本信息-->
<description>SpringBoot-Eureka環(huán)境搭建多模塊構建示例</description>
<modelVersion>4.0.0</modelVersion>
<name>eureka-father</name>
<packaging>pom</packaging>

<!-- 項目說明:這里作為聚合工程的父工程 -->
<groupId>com.org.ldc</groupId>
<artifactId>eureka-father</artifactId>
<version>1.0.0.RELEASE</version>

<!-- 繼承說明:這里繼承SpringBoot提供的父工程 -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.2.RELEASE</version>
</parent>

<modules>
    <module>eureka3000</module>
    <module>eureka3001</module>
    <module>eureka3002</module>
    <module>user5000</module>
</modules>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.org.ldc</groupId>
            <artifactId>eureka3000</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>com.org.ldc</groupId>
            <artifactId>eureka3001</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>com.org.ldc</groupId>
            <artifactId>eureka3002</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>com.org.ldc</groupId>
            <artifactId>user5000</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies>
</dependencyManagement>

</project>


在這里說明一下,這里的搭建教程是基于maven的聚合工程搭建的,需要有能搭建maven聚合工程的前提,這里就默認大家會搭建,所以就一頓輸出了,如果還不懂的可以自行去百度。

最后測試就是啟動各個注冊中心,然后最后啟動服務在瀏覽器分別輸入各個注冊中心的訪問地址,出現如下圖,說明搭建成功
![在這里插入圖片描述](https://img-blog.csdnimg.cn/20191215215951525.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMjU1MDE3,size_16,color_FFFFFF,t_70)
>更多的教程請關注非科班的科班,一起努力,加油干,路過的小伙伴幫我點個贊,謝謝大家

最后分享一波java的資源,資源包括java從入門到開發(fā)的全套視頻,以及java的26個項目,資源比較大,大小大概是290g左右,鏈接容易失效,獲取的方式是關注公眾號:非科班的科班,讓后回復:java項目即可獲得,祝大家學習愉快
向AI問一下細節(jié)

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

AI