本文共 2084 字,大约阅读时间需要 6 分钟。
简单介绍一下eureka主要参数配置是做什么的(提醒一句:新项目不要在用eureka了哦,停止更新了)
server: port: 8761eureka: instance: hostname: eureka-server # 实例主机名 ip-address: 192.168.0.102 # 多个网卡情况下需要指定ip client: register-with-eureka: false # 注册进eureka(false),因为我们是单机server,所以不注册自己 fetch-registry: false # 不从eureka上获取服务的注册信息 service-url: defaultZone: http://localhost:8761/eureka/ server: #renewal-percent-threshold: 0.85 # 自我保护阈值 enable-self-preservation: true # 开启自我保护 eviction-interval-timer-in-ms: 60000 # 清理无效节点的时间间隔 MS # 下面2个配置的尝试完成后 才会开始清理任务的定时操作。 registry-sync-retries: 5 # 获取注册节点数量,如果为0,就是失败,失败后会再次尝试获取,尝试几次(和下面那个同步失败区别是 这个是syncUp方法中的尝试次数) registry-sync-retry-wait-ms: 30000 # 当尝试次数>0,每次睡眠多久再尝试 number-of-replication-retries: 5 # 同步集群里服务失败的重试次数 默认为 5 次 wait-time-in-ms-when-sync-empty: 300000 # 在同步失败后的等待时间,在这期间,它不向客户端提供服务注册信息
首先 服务器启动后,如果服务数量为0,说明还没有服务注册进来,就需要重试(PeerAwareInstanceRegistryImpl.syncUp方法)。
当有服务注册或尝试结束后,才会继续其他的schedule任务,比如自动清理操作等等。
server: port: 8080spring: application: name: xxx-providereureka: instance: instance-id: xxx-provider # 不写的话默认按hostname:应用名:端口 显示在status #hostname: xxxx 实例主机名不写会自动识别 prefer-ip-address: true # 注册服务时 使用IP注册,如果非局域网,需要IP注册,或者hostname写域名 ip-address: 192.168.0.102 # 多个网卡情况下需要指定ip lease-renewal-interval-in-seconds: 30 # 心跳时间,即服务续约间隔时间(缺省为30s) #(下面这个虽然看着像应该写在server的设置,可是并不是,写在这里注册的时候会告诉server这个租期是多久) lease-expiration-duration-in-seconds: 90 # 表示eureka server至上一次收到client的心跳之后,等待下一次心跳的超时时间,如果超时将会移除服务(自我保护开启的情况下会等待更久) client: fetch-registry: false # 不从eureka上获取服务的注册信息 service-url: defaultZone: http://localhost:8761/eureka/management: endpoints: web: exposure: include: "*" base-path: /actuator cors: allowed-headers: "*" allowed-methods: "*" allowed-origins: "*" allow-credentials: true endpoint: shutdown: enabled: true
consumer就不写了
其实自我保护说直白一些,就是防止某个服务因为网络阻塞等问题,导致心跳包没有发送过来,但是服务本身并没有挂掉,说不定在你移除的时候服务网络又好了,那么这时候不移除服务其实是一种高可用的表现,因为CAP中不可能三者全顾,如果强调高一致性,服务只要一会没心跳直接移除服务,那么就会牺牲掉可用性。
转载地址:http://dxlsi.baihongyu.com/