springCloud之Eureka註冊中心搭建
阿新 • • 發佈:2020-12-24
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.專案目錄結構
- 註冊中心客戶端搭建
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客戶端。具體服務提供者還是服務消費者自己實現。