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.

  • 相关阅读:
    tomcat中配置https服务
    https无法下载
    将页面导成excel
    如何用sql语言只获得数据库当前日期,且格式为"yyyymmdd"?
    一个测试webservice服务的工具
    java中相对路径,绝对路径问题总结(转)
    Hadoop: I/O操作中的数据检查
    Java中Array.sort相关方法
    数据的I/O序列化操作
    Java中Comparable和Comparator实现对象比较
  • 原文地址:https://www.cnblogs.com/yufeng218/p/10787710.html
Copyright © 2011-2022 走看看