基于eureka的平滑发布方案

2 篇文章 0 订阅
2 篇文章 0 订阅

什么叫平滑发布?

在发布的过程中不影响用户的使用,系统不会因发布而暂停对外服务,不会造成用户短暂性无法访问;

 

eureka manage介绍

不管是服务提供方还是服务调用方都必须接入eureka manage功能,这个可以控制应用上下线,在发布的过程中可以优雅下线

eureka manage提供了两个接口

- 上线服务:http://ip:port/manage/online

- 下线服务:http://ip:port/manage/offline

如果调用manage/online或manage/offline返回不是404状态码或者返回内容不是true将停止项目发布,对应状态关系 online=up, offline=down

核心代码:

@RequestMapping("/manage")
public class EurekaManageController {
    @Autowired
    private ApplicationInfoManager applicationInfoManager;

    @RequestMapping("/online")
    @ResponseBody
    public Object online() {
        return changeInstanceStatus(InstanceInfo.InstanceStatus.UP);
    }

    @RequestMapping("/offline")
    @ResponseBody
    public Object offline() {
        return changeInstanceStatus(InstanceInfo.InstanceStatus.DOWN);
    }
    
    private boolean changeInstanceStatus(InstanceInfo.InstanceStatus status) {
        if (Objects.nonNull(applicationInfoManager) && Objects.nonNull(status)) {
            applicationInfoManager.setInstanceStatus(status);
            return true;
        }
        return false;
    }
}

原理简介:

在使用spring cloud的eureka来提供服务时,服务提供方会将自己的服务注册到注册中心,默认状态为UP。bc

服务状态有:

com.netflix.appinfo.InstanceInfo.InstanceStatus

UP, // Ready to receive traffic

DOWN, // Do not send traffic- healthcheck callback failed

STARTING, // Just about starting- initializations to be done - do not

// send traffic

OUT_OF_SERVICE, // Intentionally shutdown for traffic

UNKNOWN;

服务提供方使用此工具调用online接口时,会做以下处理:

*会将当前instance的本地状态修改为UP

*将状态同步到注册中心

*注册中心定时刷新响应缓存(eureka.responseCacheUpdateInterval影响此频率)

*服务调用方定时轮询注册中心的实例信息,并更新本地缓存(eureka.client.registryFetchIntervalSeconds影响此频率)

*服务调用方的ribbon会定时通过本地缓存刷新本地的路由表(ribbon.ServerListRefreshInterval影响此频率)

offline时跟以上步骤类似,不再缀述。

 

客户端配置参数

 

#服务默认注册状态

eureka.instance.initialStatus = DOWN

#客户端从注册中心拉取实例信息的频率,单位为s

eureka.client.registryFetchIntervalSeconds=2

#ribbon刷新本地缓存的频率,单位ms

ribbon.ServerListRefreshInterval = 2000

Eureka Server配置

#注册中心刷新响应缓存的频率,单位ms

eureka.server.response-cache-update-interval-ms=2000

运维发布流程

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值