栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringCloud 之 Eureka 高可用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringCloud 之 Eureka 高可用

Eureka 高可用

如何实现?搭建高可用的EurekaServer访问参数使用

客户端服务端

如何实现?

EurekaServer作为集群,是高可用的Eureka中心。
Eureka服务之间会互相注册为服务,服务提供者注册到Eureka Server集群中的一个节点时,该节点会把服务的信息同步给集群的所有节点,从而实现数据同步。所以客户端拉取到Eureka Server集群中的完整的Server信息

搭建高可用的EurekaServer

创建springboot项目,创建两份配置文件application-localserver1.yml和 application-localserver2.yml 启动两次并分别指定激活环境。

#应用名称,会在eureka中显示
spring:
  application:
    name: eureka-server
server.port: 8001
eureka:
  instance:
    hostname: localserver2
  client:
    fetch-registry: true
    register-with-eureka: true
    registry-fetch-interval-seconds: 30
          #eureka的服务器地址
      #如果是集群的话,需要指定其他服务器的地址
    service-url:
      defaultZone: http://localserver2:8002/eureka/
#应用名称,会在eureka中显示
spring:
  application:
    name: eureka-server
server.port: 8002
eureka:
  instance:
    hostname: localserver1
  client:
    fetch-registry: true
    register-with-eureka: true
    registry-fetch-interval-seconds: 30
    service-url:
      defaultZone: http://localserver1:8001/eureka/

生产者 因为EurekaServer不止一个,因此注册服务的时候,service-url参数需要变化

server:
  port: 8003

spring:
  application:
    name: lst-eureka-client

eureka:
  instance:
    prefer-ip-address: true
    #服务失效时间;eureka server至上一次收到client的心跳之后,等待下一次心跳的超时时间,超过时间内若没收到下一次心跳,则移除该instance
    #该值至少应该大于 lease-renewal-interval-in-second
    lease-expiration-duration-in-seconds: 6
    #服务续约(renew);eureka client发送心跳给server端的频率默认30s。如果在lease-expiration-duration-in-seconds后server端没有收到client的心跳,则将摘除该instance。
   # 除此之外,如果该instance实现了HealthCheckCallback,并决定让自己unavailable的话,则该instance也不会接收到流量。
    lease-renewal-interval-in-second: 5
  client:
    #是否注册信息到eureka服务器以供其他服务发现,默认为false
    register-with-eureka: true
    #客户端是否获取eureka服务器注册表上的注册信息,默认为true
    fetch-registry: true
    #eurekaclient间隔多久去拉取服务注册信息,默认为30秒
    registry-fetch-interval-seconds: 10
    ## defaultZone向多个服务注册 官网推荐使用一下方法
---
eureka:
  instance:
    instance-id: ${spring.application.name}:${server.port}::${random.int[0,20]}
  client:
    serviceUrl:
      defaultZone: http://localserver2:8002/eureka/

---
eureka:
  instance:
    instance-id: ${spring.application.name}:${server.port}::${random.int[0,20]}
  client:
    serviceUrl:
      defaultZone: http://localserver1:8001/eureka/

host配置  
c:windowssystem32driversetc
127.0.0.1 localserver1 
127.0.0.1 localserver2

常用参数

#当服务消费者启动时,会检测 eureka.client.fetch-registry=true 参数的值,如果为true,则会拉取Eureka Server服务的列表只读备份,然后缓存在本地。并且每隔30秒会重新获取并更新数据。
eureka:
  client:
    registry-fetch-interval-seconds: 5 #默认即可

# 自我保护
 eureka:
  server:
    enable-self-preservation: false # 关闭自我保护模式(缺省为打开)
    eviction-interval-timer-in-ms: 1000 # 扫描失效服务的间隔时间(缺省为60*1000ms)
// 服务续约
#有两个重要参数可以修改服务续约的行为:
#lease-renewal-interval-in-seconds:服务续约(renew)的间隔,默认为30秒
#lease-expiration-duration-in-seconds:服务失效时间,默认值90秒
eureka:
  instance:
    lease-expiration-duration-in-seconds: 90
    lease-renewal-interval-in-seconds: 30`
访问

http://localserver1:8001
http://localserver2:8002

参数使用 客户端 服务端
   LeaseRenewalIntervalInSeconds  eureka客户需要多长时间发送心跳给eureka服务器,表明它仍然活着,默认为30 秒

   LeaseExpirationDurationInSeconds Eureka服务器在接收到实例的最后一次发出的心跳后,需要等待多久才可以将此实例删除,默认为90秒
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/711912.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号