zoukankan      html  css  js  c++  java
  • Spring Cloud的小改进(五)

    1、在Eureka中不能看到具体服务的实例信息;

    问题点:服务注册到 Eureka 之后,可以看到在 “Status” 显示的服务信息不明确(不知道具体的服务名等信息),如下图所示:

    解决方法:

    在服务的application.yml配置文件中,增加 instance-id 的信息,如下图所示:

    eureka:
      client:  # 客户端注册进eureka内
        service-url:
          defaultZone: http://eureka7001.com:7001/eureka/
      instance:
        instance-id: microservicecloud-provider-dept-8001

    重启 Eureka 和 服务,然后打开:http://localhost:7001,可以看到如下所示的页面,“Status”中显示的是 instance-id 中定义的名字;

    2、将鼠标放在“Status"中,页面的左下角显示链接的地址不明确(未显示IP)

    解决方法:

      将服务的 instance 下的 prefer-ip-address 设置为 true; (访问路径可以显示IP),如下所示:

    重启服务,接着打开eureka的页面,鼠标放在”Status“上,如下所示(显示IP)

     

     3、打开Eureka页面,点击注册的服务的“Status”的超链接之后报错

    解决方法:

    (1)修改注册服务(microservicecloud-provider-dept-8001) 的pom.xml文件,增加如下依赖:

    <!-- actuator监控信息完善 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

    (2)总的父工程(microservicecloud)修改pom.xml文件,添加构建build信息

    <build>
        <finalName>microservicecloud</finalName>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <delimiters>
                        <delimit>$</delimit>
                    </delimiters>
                </configuration>
            </plugin>
        </plugins>
    </build>

     (3)打开注册服务(microservicecloud-provider-dept-8001) 的application.yml文件,增加如下信息:

    info:
      app.name: yufeng-microservicecloud
      company.name: www.yufeng.com
      build.artifactId: $project.artifactId$
      build.version: $project.version$

     重启注册的服务,点击之后得到如下信息

     

    4、Eureka的自我保护机制:

    默认情况下,若EurekaServer 在一定时间内没接收到某个微服务实例的心跳,Eureka将会注销该实例(默认90秒)

    当网络故障发生时,微服务和Eureka服务是无法正常通信的,以上行为可能就变得很危险(实际上微服务本身是健康的,此时不应该注销这个服务);

    Eureka通过“自我保护模式”来解决这个问题:当EurekaServer节点在短时间间内丢失过多客户端时(可能是网络故障),那么这个节点就会进入自我保护模式。一旦进入自我保护模式,EurekaServer就会保护服务注册表中的信息,不再删除服务注册表中的数据(即不会注销任何微服务)。当网络故障恢复后,该EurekaServer节点会自动退出自我保护模式。

    Eureka的自我保护机制:某个时刻一个微服务不可用了,Eureka不会立刻清理,依旧会对该服务的信息进行保存;

    在配置文件中使用 eureka.server.enable-self-preservation = false ,禁用自我保护模式

    EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.

  • 相关阅读:
    发现CSDN的一个小Bug,CSDN网站管理人员进来看看哈~~
    “凡客好声音”摇滚派对专场 正火热抢票中!
    帧动画
    java WEB Response重定向和缓存控制
    上一篇括号配对让人联想起catalan数,顺便转载一篇归纳的还不错的文章
    字符串循环移位
    应用层协议实现系列(三)——FTPserver之设计与实现
    HDU1575-Tr A(矩阵高速幂)
    音视频即时通讯的分包与重组
    怎样批量重命名照片,可是去掉那个烦人的括号
  • 原文地址:https://www.cnblogs.com/yufeng218/p/10787710.html
Copyright © 2011-2022 走看看