spring cloud高可用注册中心+平滑上下线

spring cloud高可用注册中心

机器配置

准备两台+机器,此处以两台机器作为例子:10.10.10.100,10.10.10.101。
修改系统host,如果用docker发布则在docker-compose.yml文件中配置host。
10.10.10.100 docker host配置:

extra_hosts:
 - "eurekapeer:10.10.10.101"

10.10.10.101 docker host配置:

extra_hosts:
 - "eurekapeer:10.10.10.100"

eureka配置

主要是将defaultZone中地址指向host中配置的机器,实现注册中心的相互注册已达到高可用。

eureka:
  client:
    serviceUrl:
      defaultZone: http://eurekapeer:${server.port}/eureka/

按照以上配置启动,打开任意一个注册中心界面:

  • 会在DS Replicas栏中看到另一台机器的信息,
  • 会在Instances currently registered with Eureka栏中看到两个注册中心的信息

client配置

主要是配置defaultZone指向两个注册中心即可

eureka:
  client:
    serviceUrl:
      defaultZone: http://10.10.10.100:8181/eureka/,http://10.10.10.101:8181/eureka/

spring cloud平滑上下线

关注点

  • eureka快速剔除已下线服务
  • zuul网关快速拉取服务列表
  • 服务不可达时进行重试

eureka快速剔除已下线服务

  • client端加快对eureka的心跳频率,并缩短续期时间
  • 端加快情侣无效服务间隔

这样一来,理论上最长剔除不可用服务时间=client心跳频率+client续期时间+服务端剔除无效服务间隔时间。

eureka服务端配置:

eureka:
  server:
    eviction-interval-timer-in-ms: 5000 #清理无效服务间隔(单位毫秒,默认是1分钟)

eureka客户端配置:

eureka:
  instance:
    lease-renewal-interval-in-seconds: 5 #eureka client发送心跳给server端的频率(默认30秒)
    lease-expiration-duration-in-seconds: 10 #eureka client发送心跳给server端后,续约到期时间(默认90秒)

zuul网关快速拉取服务列表

zuul网关会去eureka拉取服务列表并进行缓存,我们尽量缩短拉取时间:

eureka:
  client:
    registry-fetch-interval-seconds: 3 #client间隔多久去拉取服务注册信息(默认30秒)对于api-gateway如果要迅速获取服务注册状态,可以缩小该值

当一个服务下线后,eureka并不会立即剔除,在此期间如果zuul使用缓存服务,或者获取到了已下线服务,此时对请求进行转发时会导致服务不可达返回500错误,这种情况线下可以配置zuul重试,注意此处的重试不是配置zuul对异常接口的重试;zuul配置如下:

#服务下线后,zuul重试
ribbon:
  OkToRetryOnAllOperations: true #是否所有操作都重试,若false则仅get请求重试
  MaxAutoRetriesNextServer: 1 #重试负载均衡其他实例最大重试次数,不含首次实例
  MaxAutoRetries: 0   #(同一实例最大重试次数,不含首次调用)
  retryableStatusCodes: 404,500,503

zuul对异常接口的重试:
spring cloud中默认的熔断时间是1000ms,如果单个服务接口响应时间超过此配置时长,此时如果需要zuul进行重试,则如此配置:

zuul:
  retryable: true 

这种情况下需要考虑接口的幂等性。

##关于发布 集群发布时最好单个服务单台进行部署,理论上单个服务之间部署时间间隔最少需要大于:client心跳+client续期+eureka剔除+zuul获取服务时间。

转载于:https://my.oschina.net/u/3457546/blog/1860950

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值