zoukankan      html  css  js  c++  java
  • springCloud之服务注册Eureka

       

    介绍

     Eureka 是Netfix开发的,一个基于Rest服务的,服务注册与发现的组件。

       主要包括两个组件Eureka Server和Eureka Client

           Eureka Server:注册中心,提供服务注册与发现

           Eureka Client:java客户端(通常就是微服务中的客户端和服务端) 

     上图简要描述了Eureka的基本架构,由3个角色组成:

        1.Eureka Server(注册中心,相当于中介)

     2.Service Provider(服务提供方,相当于房东)

     3.Service Consumer(服务消费方,相当于租客)

    服务注册Register

      当eureka提供方(provider)向Eureka Server注册时,它提供自身的元数据,例如:ip地址,端口,运行状况指示符等(房东在中介登记房屋信息,比如:面积,价格,地段

    服务续约Renew

      服务提供方(provider)每隔30s(默认)发送一次心跳来续约,通过续约告诉Eureka Server 该服务提供方仍然存在,没有出现问题,正常情况下,如果Eureka Server在90s内没有收到服务提供方的续约,它会将实例从注册中心删除(房东定期告诉中介,我的房子还外租(续约),中介就会保留房屋信息

    服务剔除Eriction

      在默认情况下,当服务提供方连续90s没有向注册中心进行续约,即心跳,注册中心会将该服务从服务注册列表中剔除(房东定期联系中介告诉他房子还续约,如果中介长时间没有收到房东的续约信息,中介会将他的房屋信息下架

    获取注册列表信息FetchRegistries

      服务消费方从注册中心获取注册表信息,并将其缓存到本地,消费方会使用该信息查找其他服务,从而进行远程调用,该注册列表定期30S更新一次,每次返回注册列表信息可能与服务消费方缓存信息不同,服务消费方会自动处理,重新获取整个注册表信息,eureka Server和Eureka Client可以使用JSON/XMl格式进行通信,默认情况下Eureka Client使用Json格式来获取注册列表信息(租客去中介获取所有的房屋信息,而且租客为了获取最新的房屋 信息会定期向中介获取并更新本地列表

    获取服务是服务消费者的基础,所以必有两个重要参数需要注意:

    服务下线Cancel

     服务提供方在程序关闭时向注册中心发送取消请求,发送后该服务提供方的信息将从注册中心的服务列表中删除(房东告诉中介房子不租了,中介将此房子的信息删除),该下线请求不会自动完成,需要调用:

     远程调用Remote Call

       当服务消费方从注册中心获取到服务提供方信息后,就可以通过Http请求调用对应的服务;服务提供者有多个时,服务消费方会通过Ribbon自动进行负载均衡

      以下摘自https://blog.csdn.net/qwe86314/article/details/94552801

    自我保护机制

      默认情况下,如果注册中心在90秒内没有接受到某个微服务实例的心跳,会注销该实例,但是在微服务架构下服务之间通常都是跨进程调用,我那果洛通信往往会面临这各种问题,比如微服务状态正常,网络分区故障,导致实例被注销。大量实例被注销,会威胁到整个微服务架构的可用性,所以eureka就有了自我保护机制,Eureka Server 在运行期间会去统计心跳失败比例在 15 分钟之内是否低于 85%,如果低于 85%,Eureka Server 即会进入自我保护机制

    Eureka Server 触发自我保护机制后,页面会出现提示:

     Eureka Server 进入自我保护机制,会出现以下几种情况:

      1.Eureka不再从注册列表中移除因为长时间没收到心跳而应该过期的服务

      2.Eureka仍然能够接受新服务的注册和查询请求,但是不会被同步到其他节点上

      3.当网络稳定时,当前实例新的注册信息会被同步到其他节点上

      Eureka 自我保护机制是为了防止误杀服务而提供的一个机制。当个别客户端出现心跳失联时,则认为是客户端的问题,剔除掉客户端;当 Eureka 捕获到大量的心跳失败时,则认为可能是网络问题,进入自我保护机制;当客户端心跳恢复时,Eureka 会自动退出自我保护机制。

      如果在保护期内刚好这个服务提供者非正常下线了,此时服务消费者就会拿到一个无效的服务实例,即会调用失败。对于这个问题需要服务消费者端要有一些容错机制,如重试,断路器等。

    通过在 Eureka Server 配置如下参数,开启或者关闭保护机制,生产环境建议打开:

     eureka集群还没实践,以后再说

  • 相关阅读:
    更改Tomcat startup.bat启动窗口名称
    java 启用新线程异步调用
    [转]jquery中使用event.target的几点
    Linux开启相关端口及查看已开启端口
    【转】eclipse插件:OpenExplorer快速打开文件目录
    bootbox.js [v4.2.0]设置确认框 按钮语言为中文
    【转】eclipse使用git提交到osc
    使用RMAN恢复数据库
    来一篇最全的自动化运维部署文档
    (转)linux 内存管理——内核的shmall 和shmmax 参数
  • 原文地址:https://www.cnblogs.com/yangxiaoli/p/12627121.html
Copyright © 2011-2022 走看看