1. 程式人生 > >Spring Cloud學習筆記之Eureka Server註冊中心

Spring Cloud學習筆記之Eureka Server註冊中心

Eureka Server提供服務註冊服務,各個節點啟動後,會在Eureka Server中進行註冊,這樣EurekaServer中的服務登錄檔中將會儲存所有可用服務節點的資訊,服務節點的資訊可以在介面中直觀的看到。我們簡單實現一下Eureka Server。

1.新建一個Maven專案,然後編寫配置資訊:
pom.xml:

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.test</groupId>
    <artifactId>MySpringCloudProject03</artifactId>
    <version>1.0-SNAPSHOT</version>

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

    <!-- 配置資訊 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.14.RELEASE</version>
    </parent>

    <!-- 匯入Spring Cloud的依賴管理 -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Edgware.SR4</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <!-- 匯入Eureka服務的依賴 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
        </dependency>
    </dependencies>

</project>

application.properties:

server.port=8088

#是否需要將自己註冊到註冊中心中,因為本身就是一個註冊中心,所以不需要將自己註冊到註冊中心中
eureka.client.register-with-eureka=false

#是否從註冊中心獲取註冊資訊
eureka.client.fetch-registry=false

#客戶端和服務端進行互動的地址
eureka.client.service-url.defaultZone=http://127.0.0.1:${server.port}/eureka/

2.編寫啟動類EurekaServer.java:

@EnableEurekaServer      //宣告此專案是Eureka的服務端
@SpringBootApplication
public class EurekaServer {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServer.class, args);
    }
}

3.執行
啟動我們的EurekaServer,然後在瀏覽器中輸入 http://localhost:8088/ ,我們就可以看到Eureka註冊中心:
在這裡插入圖片描述

補充:Eureka的自我保護機制。
有的時候在訪問Eureka服務端的時候會出現紅色的提示資訊,這個就是Eureka的自我保護模式。
預設情況下,如果Eureka Server在一定時間內沒有接收到某一個微服務例項的心跳,Eureka Server將會登出該例項(預設90秒),但是這種行為是不安全的,因為有的時候監聽不到客戶端的心跳,有可能是因為網路故障導致的,而並非是服務本身出現了問題,服務本身是健康的,這麼草率的將服務登出是不安全的。
Eureka通過“自我保護模式”來解決這個問題——當Eureka節點在短時間內丟失過多的客戶端時(可能發生了網路分割槽故障),那麼這個節點就會進入自我保護模式,一旦進入該模式,Eureka Server就會保護服務登錄檔紅的資訊,不再刪除服務登錄檔中的資料(也就不會登出任何的微服務)。當網路故障恢復後,該Eureka Server節點會自動退出自我保護模式。
綜上,自我保護模式是一種應對網路異常的安全保護措施,它的架構哲學是寧可同時保留所有的微服務(健康的微服務和不健康的微服務),也不盲目登出任何健康的微服務,使用自我保護模式,可以讓Eureka叢集更加的健壯、穩定。
預設Eureka自我保護模式是開啟的,無需處理。如果,需要禁用自我保護模式,只需要在配置檔案中新增配置即可。

#禁用Eureka的自我保護模式
eureka.server.enable-self-preservation=false

注:以上為【黑馬程式設計師|java進階教程Spring Cloud微服務解決方案】視訊的學習筆記,侵刪。