• SpringCloud--注册中心Eureka


    Eureka的服务治理设计中,所有节点即是服务提供方,也是服务消费方。

    Eureka Server的高可用:就是将自己作为服务向其他服务注册中心注册自己,形成一组互相注册的服务注册中心,实现服务清单的互相同步,达到高可用的效果。

    Example:现有两个服务注册中心(RegisterCenterOne、RegisterCenterTwo)

    application-centerOne.properties内容如下:

      spring.application.name=eureka-server

      server.port=1111

      eureka.instance.hostname=registercenterone

      eureka.client.serviceUrl.defaultZone=http://registercentertwo:1112/eureka

    application-centerTwo.properties内容如下:

      spring.application.name=eureka-server

      server.port=1112

      eureka.instance.hostname=registercentertwo

      eureka.client.serviceUrl.defaultZone=http://registercenterone:1111/eureka

    服务提供方配置内容如下(application.properties):

      spring.application.name=hello-service

      eureka.client.serviceUrl.defaultZone=http://registercentertwo:1112/eureka,http://registercenterone:1111/eureka

    Eureka基础架构的三个核心要素:

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

        服务提供者:提供服务的应用

        服务消费者:消费者应用从服务注册中心获取服务列表,从而使消费者可以知道从何处调用其所需的服务

    服务提供者

    服务注册:

       “服务提供者”在启动的时候会通过发送REST请求的方式将自己注册到Eureka Server上,同时带上了自身服务的一些元数据信息。在服务注册时,需要确认eureka.client.register-with-eureka=true(默认为true),若设置为false将不会启动注册操作。

    服务同步:

      服务注册中心之间互相注册为服务,当服务提供者发送注册请求到一个服务注册中心时,它会将请求转发给集群中相连的其他注册中心,从而实现注册中心之间的服务同步。

    服务续约:

      在注册完服务之后,服务提供者会维护一个心跳用来告诉Eureka Server:“我还活着”,以防止Eureka Server的“剔除任务”姜该服务实例从服务列表中排除出去,该操作作为服务续约。

    服务消费者

    获取服务:

      当启动服务消费者的时候,它会发送一个REST请求给服务注册中心,来获取上面注册的服务清单。Eureka Server会维护一份份只读的服务清单来返回给客户端,同时该缓存清单会每隔30秒更新一次(可通过设置eureka.client.registry-fetch-interval-seconds=30的值进行修改,单位为s)。

    服务调用:

      服务消费者在获取服务清单后,通过服务名可以获得具体提供服务的实例名和该实例的元数据信息。

    服务下线:

      在客户端程序中,当服务实例精细正常的关闭操作时,它会触发一个服务下线的REST请求给Eureka Server,告诉服务注册中心。服务端在接收到请求后,将该服务状态置为下线,并把该下线事件传播出去。

    服务注册中心

    失效剔除:

      Eureka Server在启动的时候会创建一个定时任务,默认每隔一段时间(默认60秒)将当前清单中超时(默认90秒)没有续约的服务剔除出去。

    自我保护:

      Eureka Server在运行期间,会统计心跳失败的比例在15分钟之内是否低于85%,如果出现低于的情况,Eureka Server会将当前的实例注册信息保护起来,让这些实例不会过期。可以通过设置eureka.server.enable-self-preservational=false参数关闭保护机制。

    实例名规则设置:eureka.instance.instanceId=${spring.application.name}:${random.int}(利用应用名加随机数的方式区分不同实例,从而实现在同一主机上不指定端口就能启动多个实例)

    在Spring Cloud Eureka中, 我们可以通过简单的配置, 把Eureka客户端的健康检测交给spring-boot-actuator模块的/health端点, 以实现更加全面的健康状态维护。详细的配置步骤如下所示:

      • 在pom.xml中引入spring-boot-starter-actuator模块的依赖。

      • 在application.proper巨es中增加参数配置eureka.client.healthcheck.enabled=true。
      • 如果客户端的/health端点路径做了一些特殊处理,请参考前文介绍端点配置时的方法进行配置, 让服务注册中心可以正确访问到健康检测端点。

  • 相关阅读:
    PHP0002:PHP基础1
    NodeJS_0001:关于install的方式
    JN_0018:运行窗口不显示
    事务、事务操作、事务隔离级别
    MySQL 常见的两种存储引擎
    8:二叉树的下一个节点
    链表
    文件压缩
    MapReduce--Shuffle原理
    volatile关键字
  • 原文地址:https://www.cnblogs.com/fqfanqi/p/9924669.html
Copyright © 2020-2023  润新知