2018-11-01

Eureka服务端集群及单机配置

    Spring Cloud使用Eureka来实现服务注册与发现,它即包含了服务端组件,也包含了客户端组件.Eureka服务端:也称为服务注册中心,它和其他服务注册中心一样也支持高可用配置.Eureka客户端:主要处理服务的注册与发现.下面来进行服务端单机及集群的配置.

Spring Cloud Eureka注册中心单机配置

    在父项目中引入基本依赖最主要的是这个

   <dependencyManagement>
       <dependencies>
           <dependency>
               <groupId>org.springframework.cloud</groupId>
               <artifactId>spring-cloud-dependencies</artifactId>
               <version>Finchley.SR2</version>
               <type>pom</type>
               <scope>import</scope>
           </dependency>
       </dependencies>
   </dependencyManagement>

在Eureka注册中心的项目引入

    <dependency>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
   </dependency>

表示是Eureka的注册中心,在项目启动入口加上@EnableEurekaServer注解,创建配置文件application.yml 其中最主要的是eureka.client.registerWithEureka=false和eureka.client.fetchRegistry=false这两个配置是表明自己是注册中心完整配置完成之后访问127.0.0.1:8761就能看见注册中心的web页面

Spring Cloud Eureka注册中心集群配置

在单个服务器上配置多个注册中心,我们可以利用spring.profiles进行配置,同一个项目启动三次.注册中心高可用配注意的问题

  • aplication.name 必须一样
  • eureka.instance.prefer-ip-address=false同一台机器如果使用ip进行注册会导致注册中心认为其它是不可用状态
  • eureka.client.registerWithEureka=true和eureka.client.fetchRegistry=true设置成true表明自己是注册中心也是客户端
  • eureka.client.serviceUrl.defaultZone=其它两台注册中心的注册地址 完整配置

注册中心的自我保护

eureka.server.enable-self-preservation=true开启自我保护
Renews threshold:server期望在每分钟中收到的心跳次数阀值 Renews:上一分钟内收到的心跳次数
Renews threshold 计算方式: 每分钟心跳数 X 总client数量 X eureka.server.renewal-percent-threshold 默认是0.85.默认心跳数是2因为eureka.instance.lease-renewal-interval-in-seconds=30,1min2次心跳.当你你去调整eureka.instance.lease-renewal-interval-in-seconds的话,代码里头没有相应调整factor,也就是代码还是60/30=2,所以会破坏eureka内置的设计思路,线上最好不要改.当server在15分钟内比值低于阀值,即少了15%的微服务心跳,server会进入自我保护状态.在此状态下,server不会删除注册信息这就有可能导致在调用微服务时实际上服务并不存在,这种保护状态实际上是考虑了client和server之间的心跳是因为网络问题,而非服务本身问题.web页面就和出现红色提示.在本机器上测试的时候可以把比值调低或把自我保护模式关闭设置成false,或者开启客户端的健康检查并缩短时间.线上最好不要改

项目地址Spring-Cloud

Gitalking ...

Markdown is supported

Be the first guy leaving a comment!