1. 程式人生 > 其它 >springCloud之Eureka註冊中心搭建

springCloud之Eureka註冊中心搭建

技術標籤:springCloudjava分散式eureka

1.註冊中心服務端搭建(單機)

1.1.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.3.3.RELEASE</version> <relativePath/> <!-- lookup parent from repository --
> </parent> <groupId>com.example</groupId> <artifactId>01-configCenter-eureka-server</artifactId> <version>0.0.1-SNAPSHOT</version> <name>01-configCenter-eureka-server</name> <description>註冊中心</description> <properties>
<java.version>1.8</java.version><!-- 定義jdk版本 --> <spring-cloud.version>Hoxton.SR8</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>

1.2.配置檔案

#服務埠
server.port=9100
#配置註冊中心的hostname
eureka.instance.hostname=localhost
#表示是否將自己註冊到Eureka Server,預設是true。
eureka.client.register-with-eureka=false
#表示是否從Eureka Server獲取註冊資訊,預設為true。
eureka.client.fetch-registry=false
#這個是設定與Eureka Server互動的地址,客戶端的查詢服務和註冊服務都需要依賴這個地址。
eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka

1.3.啟動類編寫

package com.example;

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

@SpringBootApplication
@EnableEurekaServer//用於啟用eureka服務端
public class EurekaServer {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServer.class, args);
    }
}

啟動工程,至此單機註冊中心搭建完成。

2. 註冊中心服務端搭建(叢集)

2.1.pom依賴引入
同單機版本依賴。
2.2.配置檔案
2.2.1.建配置檔案
Classpath下新建application.properties、application-master.properties、application-slave.properties三個檔案。

2.2.2.配置application.properties

spring.profiles.active=master

說明:使用屬性【spring.profiles.active】指定載入那個配置檔案,如master則載入application-master.properties中的配置,application-slave.properties不載入。
因此在使用時建議命名application-hostname-環境名.properties,用於區分那臺伺服器那個環境的配置。
2.2.3.配置application-master.properties

#用於指定應用名字
spring.application.name=eureka-server-master
server.port=9100
#用於指定host名字,可通過配置hosts檔案做區分。正常服務可以使用伺服器IP作為host名字
eureka.instance.hostname=eureka-server-master
#表示是否將自己註冊到Eureka Server,預設是true。
eureka.client.register-with-eureka=false
#表示是否從Eureka Server獲取註冊資訊,預設為true。
eureka.client.fetch-registry=false
#這個是設定與Eureka Server互動的地址,客戶端的查詢服務和註冊服務都需要依賴這個地址。多臺叢集用逗號分開。
eureka.client.service-url.defaultZone=http://eureka-server-slave:9101/eureka
#自我保護機制,預設false關閉的.服務提供者在啟動後,週期性(預設30秒)向Eureka Server傳送心跳,以證明當前服務是可用狀態。Eureka Server在一定的時間(預設90秒)未收到客戶端的心跳,則認為服務宕機,登出該例項。  
eureka.server.enable-self-preservation=true

補充hosts配置說明:
hosts檔案查詢
在這裡插入圖片描述

開啟hosts新建配置:

127.0.0.1       eureka-server-master
127.0.0.1       eureka-server-slave

2.2.4.配置application-slave.properties

spring.application.name=eureka-server-slave
server.port=9101
eureka.instance.hostname=eureka-server-slave
#表示是否將自己註冊到Eureka Server,預設是true。
eureka.client.register-with-eureka=false
#表示是否從Eureka Server獲取註冊資訊,預設為true。
eureka.client.fetch-registry=false
#這個是設定與Eureka Server互動的地址,客戶端的查詢服務和註冊服務都需要依賴這個地址。
eureka.client.service-url.defaultZone=http://eureka-server-master:9100/eureka
#自我保護機制,預設false關閉的.服務提供者在啟動後,週期性(預設30秒)向Eureka Server傳送心跳,以證明當前服務是可用狀態。Eureka Server在一定的時間(預設90秒)未收到客戶端的心跳,則認為服務宕機,登出該例項。 
eureka.server.enable-self-preservation=true

2.3.啟動類編寫
同單機版本。
命令可用java -jar xxxx.jar --spring.profiles.active=master啟動並指定資源配置。
2.4.專案目錄結構

  1. 註冊中心客戶端搭建
    3.1.pom依賴引入
    註冊中心客戶端依賴
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

3.2.配置檔案

spring.application.name=01-eureka-client
server.port=8081
#註冊中心訪問地址,多臺註冊中心使用英文逗號分開
eureka.client.service-url.defaultZone=http://eureka-server-slave:9101/eureka,http://eureka-server-master:9100/eureka
#表示eureka client傳送心跳給server端的頻率,如果在eureka.instance.lease-expiration-duration-in-seconds後,server端沒有收到client的心跳,則將摘除該例項。除此之外,如果該例項實現了HealthCheckCallback,並決定讓自己unavailable的話,則該例項也不會接收到流量。
eureka.instance.lease-renewal-interval-in-seconds=2
#表示eureka server至上一次收到client的心跳之後,等待下一次心跳的超時時間,在這個時間內若沒收到下一次心跳,則將移除該例項。預設為90秒,如果該值太大,則很可能將流量轉發過去的時候,該例項已經不存活了。如果該值設定太小了,則例項則很可能因為臨時的網路抖動而被摘除掉。該值至少應該大於eureka.instance.lease-renewal-interval-in-seconds
eureka.instance.lease-expiration-duration-in-seconds=10

3.3.啟動類編寫

package com.example;

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

@SpringBootApplication
//使用@EnableEurekaClient或者@EnableDiscoveryClient啟用eureka客戶端
@EnableEurekaClient
public class EurekaClient {

    public static void main(String[] args) {
        SpringApplication.run(EurekaClient.class, args);
        System.out.println("註冊中心客戶端啟動成功");
    }

}

至此完成Eureka客戶端。具體服務提供者還是服務消費者自己實現。