• Spring Cloud(二)—— Eureka注册与发现


    失效剔除

    场景:有些时候,我们的服务实例并不一定会正常下线,可能由于内存溢出、网络故障等原因使服务不能正常运作。而服务注册中心并未收到“服务下线”的请求

    解决:为了从服务列表中将这些无法提供服务的实例剔除,Eureka Server在启动的时候会创建一个定时任务,默认每隔一段时间(默认为60秒)将当前清单中超时(默认为90秒)没有续约的服务剔除出去。

    自我保护

    服务注册到Eureka Server后,会维护一个心跳连接,告诉Eureka Server自己还活着。Eureka Server在运行期间会统计心跳失败的比例在15分钟以之内是否低于85%,如果出现低于的情况,Eureka Server会将当前实例注册信息保护起来,让这些实例不会过期。这样做会使客户端很容易拿到实际已经不存在的服务实例,会出现调用失败的情况。因此客户端要有容错机制,比如请求重试、断路器。

    以下是自我保护相关的属性:

    eureka.server.enableSelfPreservation=true. 可以设置改参数值为false,以确保注册中心将不可用的实例删除

    微服务启动报Cannot execute request on any known server 的几种解决办法

    连接Eureka服务端的URL不对:

      如果访问地址是:http://127.0.0.1:8080/eureka/

      则在Eureka服务发现应该配置为:

        server.port: 8080

        eureka.client.serviceUrl.defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
    注意:Eureka服务端相当于一个特殊的Eureka客户端,也可以进行注册发现【实现Eureka的高可用】。

    @EnableDiscoveryClient和@EnableEurekaClient的区别

    @EnableDiscoveryClient和@EnableEurekaClient的区别主要是使用的场景不同。

    后者只能在注册中心是Eureka的时候使用,前者的范围更加广泛既可以在注册中心是Eureka的时候使用也能在注册中心是其他的框架组件的使用使用。

  • 相关阅读:
    HDU4411 最小费用流
    HDU5934 强连通分量
    一个问题
    SAP模板
    KMP模板
    ]C#中执行SQL文件脚本的代码(非常有用)
    C#调用非托管程序5种方式
    [转]C#中的静态常量(const)和动态常量(static和readonly)用法和区别
    [转]C#开发命名规范总结整理
    [转]关于同步方法里面调用异步方法的探究
  • 原文地址:https://www.cnblogs.com/myfaith-feng/p/11535652.html
Copyright © 2020-2023  润新知