springcloud笔记之eureka服务注册与发现(二)

一、eureka自我保护机制是什么?

eureka有一种自我保护机制,什么意思呢,就是当eureka注册中心检测到某个服务不可用了,并不会立马把服务注销,它会有一个等待的过程,时间大概是90s,在这90以内,eureka仍然能够保护服务的基本信息不被丢失,这样做的目的是,有可能服务崩溃了的真正原因可能是因为网络故障,比如断电了,微服务本身其实还是健康的,并不应该注销该服务。

自我保护机制是应对网络异常的安全防护措施,它让eureka集群更加健壮和稳定。

另外,在springcloud当中,可以使用eureka.server.enable-self-preservation=fase关闭eureka的自我保护机制,但是不推荐。

二、演示步骤

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-7001springcloud-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注册中心仍然可以看到服务的信息,而且保持了一定的时间段(默认是90s),等到超过了这个时间段,就会抛出异常,这是正确的结果。

总结

由于依赖那一块,一直没有解决,暂时没有找到方法处理,所以暂时搁置在这里,后面想到了,再来解决。

猜你喜欢

转载自blog.csdn.net/qq_41486775/article/details/114395224