天天看點

注冊中心eureka的搭建

注冊中心eureka的搭建

1.搭建項目

建立普通的springboot項目。

1.修改Application

修改EurekaServerApplication類:關鍵注解@EnableEurekaServer,聲明為注冊中心。

package com.cloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;


@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {

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

2.修改pom檔案

然後修改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>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.baocl</groupId>
    <artifactId>eureka-consumer-feign</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>eureka-consumer-feign</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Hoxton.SR1</spring-cloud.version>
    </properties>

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

        <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-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</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>      

3.修改application.properties

最後是最重要的配置檔案application.properties,樓主總結了常用的配置。

spring.application.name=eureka-server
eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/
server.port=1001
eureka.instance.hostname=localhost
#是否向服務注冊中心注冊自己
eureka.client.register-with-eureka=false
#是否檢索服務   ---表示是否從注冊中心拉取服務清單
eureka.client.fetch-registry=false

#是否開啟自我保護模式,預設為true。

#預設情況下,如果Eureka Server在一定時間内沒有接收到某個微服務執行個體的心跳,Eureka Server将會登出該執行個體(預設90秒)。
#但是當網絡分區故障發生時,微服務與Eureka Server之間無法正常通信,以上行為可能變得非常危險了——因為微服務本身其實是健康的,此時本不應該登出這個微服務。
#Eureka通過“自我保護模式”來解決這個問題——當Eureka Server節點在短時間内丢失過多用戶端時(可能發生了網絡分區故障),
#那麼這個節點就會進入自我保護模式。一旦進入該模式,Eureka Server就會保護服務系統資料庫中的資訊,不再删除服務系統資料庫中的資料(也就是不會登出任何微服務)。
#當網絡故障恢複後,該Eureka Server節點會自動退出自我保護模式。
#綜上,自我保護模式是一種應對網絡異常的安全保護措施。它的架構哲學是甯可同時保留所有微服務(健康的微服務和不健康的微服務都會保留),
#也不盲目登出任何健康的微服務。使用自我保護模式,可以讓Eureka叢集更加的健壯、穩定。
#eureka.server.enable-self-preservation=false

#設定清理無效節點的時間間隔,預設60000,即是60s
#eureka.server.eviction-interval-timer-in-ms=5000
#自我保護續約百分比閥值因子。如果實際續約數小于續約數閥值,則開啟自我保護
#eureka.server.renewalPercentThreshold = 0.85
#節點間連接配接的逾時時間。
#eureka.server.peerNodeConnectTimeoutMs=200
#節點間讀取資訊的逾時時間。
#eureka.server.peerNodeReadTimeoutMs=200

#每隔x秒更新自身緩存 作用于client從server擷取緩存(1001頁面跳過緩存不會生效)
#eureka.server.response-cache-update-interval-ms= 2000      

然後啟動服務,通路配置的端口号,出現這個界面,就代表ok啦。

注冊中心eureka的搭建

4.大緻原理

注冊中心eureka的搭建

spring cloud通信主要是以http請求形式進行,當服務啟動後向Eureka注冊,Eureka Server會将注冊資訊向其他Eureka Server進行同步,當服務消費者要調用服務提供者,則向服務注冊中心擷取服務提供者位址,然後會将服務提供者位址緩存在本地,下次再調用時,則直接從本地緩存中取,完成一次調用。 當服務注冊中心Eureka Server檢測到服務提供者因為當機、網絡原因不可用時,則在服務注冊中心将服務置為DOWN狀态,并把目前服務提供者狀态向訂閱者釋出,訂閱過的服務消費者更新本地緩存。 服務提供者在啟動後,周期性(預設30秒)向Eureka Server發送心跳,以證明目前服務是可用狀态。Eureka Server在一定的時間(預設90秒)未收到用戶端的心跳,則認為服務當機,登出該執行個體。