spring cloud (2)- eureka常用配置、保护模式

本篇将介绍eureka注册中心的一些常用配置。

注册与获取服务

第1篇中,eureka注册中心启动时报错。因为默认情况下eureka自身也是注册中心的一个服务,也会向注册中心注册以及获取服务,而此时是没有注册中心的,所以报错,并且每隔一段时间会重新偿试连接注册中心。当注册中心也就是它自己启动成功以后,它重连成功,之后不再报错。而通常注册中心并不需要注册和获取服务,可作以下配置

eureka:
  client:
    registerWithEureka: false
    fetchRegistry: false

此时再启动注册中心,不会再报错。并且访问http://localhost:8761/也不会再看到注册中心自己。

显示服务ip

当有服务注册到注册中心时,默认会显示其主机名,如下Status列

这个名字不便于识别,而且以后还会造成其他问题。可修改server的相关配置,将其id名改为ip地址

eureka:
  instance:
    instance-id: ${spring.cloud.client.ip-address}:${server.port}

保护模式

假如我现在强制关闭server,在注册中心列表中仍然会显示它,而且Status是UP,现在我们来看一下eureka的控制台日志。

左边的时间可以看出,eureka每隔1分钟会做一件事,日志中描述为Running the evict task with compensationTime,逐出任务。前3条日志耗时0毫秒,注册中心仍然会显示Server,Status是UP。第4条日志耗时1毫秒,此时注册中心页面会显示以下内容。

当我非正常关闭server时,eureka会考虑可能是临时网络信号不好,不会立即逐出它,而是等待server重新建立连接。但是过了几分钟后,始终没有等到server,于是将它加入逐出列表。逐出任务每分钟会执行一次,但是此时仍然不会真正逐出,因为server有可能发生停电或故障,需要几小时或者几天还是可以恢复,并没有真实下线。这段红字意思就是说进入了保护模式,保护server不被逐出。

关闭保护模式

在开发时,可能经常会非正常关闭,通过配置可以关闭保护模式。

eureka:
  server:
    enable-self-preservation: false

此时注册中心页面会显示另一段红字,已经关闭保护模式等内容。此时不会再保护server,而是直接将它逐出。

优雅的关闭

如果我们想正常的关闭某个服务,我以前有讲过,对该服务中配置如下:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

management:
  endpoint:
    shutdown:
      enabled: true
  endpoints:
    web:
      exposure:
        include: shutdown

此时用post请求http://ip:port/actuator/shutdown 可优雅关闭该服务

关于以上配置的含义,可参考我spring boot专题文章,第35篇和 第21篇,这里不再重复。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
项目说明 该项目是一个典型的由Spring Cloud管理的微服务项目,主要包括如下模块 micro-service-cloud─────────────────顶层项目 ├──cloud-service-core───────────────基础核心模块 ├──cloud-service-tools──────────────全局通用工具类 ├──cloud-service-reids──────────────Redis二次封装 ├──cloud-eureka-server──────────────服务注册中心[8761] ├──cloud-turbine-server─────────────断路器聚合监控[8769] ├──cloud-zipkin-server──────────────链路追踪监控[9411] ├──cloud-zuul-server────────────────第一代服务网关(Zuul)[8080] ├──cloud-gateway-server─────────────第二代服务网关(Gateway)[8080] ├──cloud-modules-app────────────────App微服务模块 ├───────modules-app-user────────────App用户服务模块[努力更新中] ├───────modules-app-doctor──────────App医生服务模块[努力更新中] ├──cloud-modules-service────────────微服务通用服务模块 ├───────mongodb-file-service────────Mongodb文件服务模块[11010] ├───────redis-delay-service─────────延迟消费服务模块[11020] ├──cloud-modules-web────────────────Web微服务模块 ├───────modules-web-security────────Web医生服务模块[12010] ├───────modules-web-user────────────Web用户服务模块[12020] ├──cloud-modules-wechat─────────────Wechat微服务模块 ├───────modules-wechat-user─────────Wechat用户服务模块[努力更新中] └───────modules-wechat-doctor───────Wechat医生服务模块[努力更新中] 修改日志 修改日志 修改人 修改日期 版本计划 V1.0 刘岗强 2019-01-07 项目初始化 V1.1 刘岗强 待定 新增自动问答 项目介绍 基于Spring Cloud Finchley SR2 Spring Boot 2.0.7的最新版本。 核心基础项目内实现类自定义的权限注解,配合RBAC权限模型+拦截器即可实现权限的控制,具体的参考项目中的实现。同时也封装了一些顶层类和结果集等。 注册中心实现高可用配置,详情见eureka的one、two、three三个配置文件,摘要如下。 ------------------------------------------配置节点一---------------------------------------------- server: port: 8761 spring: application: name: cloud-eureka-server eureka: instance: hostname: cloud.server.one prefer-ip-address: true instance-id: ${spring.cloud.client.ip-address}:${server.port}:${spring.application.name} client: healthcheck: enabled: true register-with-eureka: false fetch-registry: false service-url: defaultZone: http://cloud.server.two:8762/eureka/,http://cloud.server.three:8763/eureka/ ------------------------------------------配置节点二----------------------------------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值