1. 程式人生 > 實用技巧 >springcloud-eureka

springcloud-eureka

註冊中心

eureka工作機制:

  • 服務提供者註冊

一次一次地嘗試註冊,直到註冊成功為止

  • 心跳

30秒傳送一次心跳

eureka連續三次收不到一個服務的心跳,會刪除這個服務

  • 服務消費者拉取登錄檔

每30秒拉取一次登錄檔,重新整理登錄檔

  • 自我保護模式

自我保護模式是一種特殊情況,如果15分鐘內,85%以上伺服器都出現心跳異常(可能是網路不穩定),eureka會進入自我保護模式,所有的註冊資訊都不刪除。

等待網路恢復後,可以自動退出保護模式

開發期間,為了影響測試,可以先關閉保護模式

pom.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4 <modelVersion>4.0.0</modelVersion> 5 <parent> 6 <groupId>org.springframework.boot</groupId> 7
<artifactId>spring-boot-starter-parent</artifactId> 8 <version>2.3.4.RELEASE</version> 9 <relativePath/> <!-- lookup parent from repository --> 10 </parent> 11 <groupId>com.dz</groupId> 12 <artifactId>sp06-eureka</artifactId> 13
<version>0.0.1-SNAPSHOT</version> 14 <name>sp06-eureka</name> 15 <description>Demo project for Spring Boot</description> 16 17 <properties> 18 <java.version>1.8</java.version> 19 <spring-cloud.version>Hoxton.SR8</spring-cloud.version> 20 </properties> 21 22 <dependencies> 23 <dependency> 24 <groupId>org.springframework.cloud</groupId> 25 <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> 26 </dependency> 27 28 <dependency> 29 <groupId>org.springframework.boot</groupId> 30 <artifactId>spring-boot-starter-test</artifactId> 31 <scope>test</scope> 32 <exclusions> 33 <exclusion> 34 <groupId>org.junit.vintage</groupId> 35 <artifactId>junit-vintage-engine</artifactId> 36 </exclusion> 37 </exclusions> 38 </dependency> 39 </dependencies> 40 41 <dependencyManagement> 42 <dependencies> 43 <dependency> 44 <groupId>org.springframework.cloud</groupId> 45 <artifactId>spring-cloud-dependencies</artifactId> 46 <version>${spring-cloud.version}</version> 47 <type>pom</type> 48 <scope>import</scope> 49 </dependency> 50 </dependencies> 51 </dependencyManagement> 52 53 <build> 54 <plugins> 55 <plugin> 56 <groupId>org.springframework.boot</groupId> 57 <artifactId>spring-boot-maven-plugin</artifactId> 58 </plugin> 59 </plugins> 60 </build> 61 62 </project>

application.yml

 1 spring:
 2   application:
 3     name: eureka-server
 4 server:
 5   port: 2001
 6 eureka:
 7   server:
 8     enable-self-preservation: false  //自我保護
 9   instance:
10     hostname: eureka1
11   client:
12     register-with-eureka: false
13     fetch-registry: false

  • eureka叢集伺服器之間,通過hostname來區分
  • eureka.server.enable-self-preservation

eureka的自我保護狀態:心跳失敗的比例,在15分鐘內是否超過85%,如果出現了超過的情況,Eurka Server會將當前的例項註冊資訊保護起來,同時提示一個警告,一旦進入保護模式,Eureka Server將會嘗試保護其服務登錄檔中的資訊,不再刪除服務登錄檔中的服務。

  • eureka.client.register-with-eureka=false

不向自身註冊

  • eureka.client.fetch-registry=false

不從自身拉取註冊資訊

  • eureka.instance.lease-expiration-duration-in-seconds

最後一次心跳後,間隔多久認定微服務不可以,預設90

主程式

新增@EnableEurekaServer

1 @EnableEurekaServer
2 @SpringBootApplication
3 public class Sp06EurekaApplication {
4 
5     public static void main(String[] args) {
6         SpringApplication.run(Sp06EurekaApplication.class, args);
7     }
8 
9 }

修改hosts檔案,新增eureka域名對映

host檔案地址:C:\Windows\System32\drivers\etc\hosts

新增內容:

127.0.0.1 eureka1

127.0.0.1 eureka2

啟動,訪問eureka,網址:http://eureka1:2001

121212