springcloud-eureka
阿新 • • 發佈:2020-09-20
註冊中心
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