1.ユーレカの自己防衛メカニズムとは何ですか?
Eurekaには自己保護メカニズムがあります。つまり、eurekaレジストリがサービスが利用できないことを検出しても、サービスをすぐにキャンセルすることはありません。待機プロセスがあります。時間は約90秒です。 90秒。、Eurekaはサービスの基本情報が失われるのを防ぐことができます。これの目的は、サービスクラッシュの本当の理由が停電などのネットワーク障害である可能性があることです。マイクロサービス自体実際には正常であり、ログアウトしないでください。サービス。
自己保護メカニズムは、ネットワークの異常に対処するためのセキュリティ対策であり、eurekaクラスターをより堅牢で安定させます。
また、springcloudではeureka.server.enable-self-preservation=fase
、ユーレカをオフにする自己保護メカニズムを使用できますが、お勧めしません。
2.デモンストレーションの手順
1.ライブラリを紹介します
<!-- eureka -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>2.2.5.RELEASE</version>
</dependency>
<!-- 完善eureka监控信息 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
application.yaml構成
server:
port: 8001
mybatis:
type-aliases-package: com.lhh.springcloud.pojo
mapper-locations: classpath:mappers/*.xml
configuration:
map-underscore-to-camel-case: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
spring:
application:
name: springcloud-provider-emp
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
# url: jdbc:mysql://localhost:3306/db01
url: jdbc:mysql://localhost:3306/springcloud?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
username: root
# password: root
password: 123456
#datasource category
type: com.alibaba.druid.pool.DruidDataSource
#eureka的配置
#Eureka配置:服务注册到哪里
eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka/
instance:
instance-id: springcloud-provider-emp-8001 #修改eureka上面的默认描述信息
prefer-ip-address: true #显示服务来自哪个ip地址
#info监控信息配置
info:
app.name: lhh-springcloud
company.name: lhh.com
debug: true
2.開始
開始springcloud-eureka-7001
、springcloud-provider-emp-8001
package com.lhh.springcloudprovideremp8001;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
/*@SpringBootApplication*/
@SpringBootApplication(exclude= {
DataSourceAutoConfiguration.class})
@MapperScan("com.lhh.springcloudprovideremp8001.dao")
@EnableEurekaClient
public class SpringcloudProviderEmp8001Application {
public static void main(String[] args) {
SpringApplication.run(SpringcloudProviderEmp8001Application.class, args);
}
}
localhost:7001
を介してアクセスします。
eurekaレジストリには8001サービスがあることが期待されます。
3.自己保護メカニズムを実証する
8001サービスを閉じると、eurekaレジストリは引き続きサービス情報を確認し、一定期間(デフォルトは90秒)維持できます。この期間を超えると、例外がスローされます。これは正しい結果です。
総括する
その作品に依存しているため、解決されておらず、当面は対処方法が見つからないので、とりあえずここに置いておき、後で考えて、もう一度解決します。