当前位置: 首页 > news >正文

Spring Cloud 下线微服务

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

方式一:kill java进程【不建议】

    使用方式:

kill java进程ID

    该方式借助的是Spring Boot应用的Shutdown hook,应用本身的下线也是优雅的,但如果你的服务发现组件使用的是Eureka,那么默认最长会有90秒的延迟,其他应用才会感知到该服务下线,这意味着:该实例下线后的90秒内,其他服务仍然可能调用到这个已下线的实例。因此,该方式是不够优雅的 。

方式二:/shutdown 端点【不建议】

    Spring Boot提供了/shutdown 端点,可以借助它实现优雅停机。使用方式:

    在想下线应用的applicationyml 中添加如下配置,从而启用并暴露/shutdown 端点:

management:

    endpoint:

        shutdown:

            enabled: true

    endpoints:

        web:

            exposure:

                include: shutdown

    发送POST请求到/shutdown 端点

curl -X http://你想停止的服务地址/actuator/shutdown

    该方式本质和方式一是一样的,也是借助Spring Boot应用的Shutdown hook去实现的。

方式三:/pause 端点【生产可用,但有一点缺陷】

    Spring Boot应用提供了/pause 端点,利用该端点可实现优雅下线。

    使用方式:

    在想下线应用的application.yml 中添加配置,从而启用并暴露/pause 端点:

 

management:

    endpoint:

        shutdown:

            enabled: true

    endpoints:

        web:

            exposure:

                include: shutdown

    发送POST请求到/actuator/pause 端点:

curl -X POST http://你想停止的服务实例地址/actuator/pause

  • 执行后的效果类似下图:

    下线后的效果图

    如图所示,该应用在Eureka Server上的状已被标记为DOWN ,但是应用本身其实依然是可以正常对外服务的。在Spring Cloud中,Ribbon做负载均衡时,只会负载到标记为UP 的实例上。

  • 利用这两点,你可以:先用pause端点,将要下线的应用标记为DOWN,但不去真正停止应用;然后过一定的时间(例如90秒,或者自己做个监控,看当前实例的流量变成0后)再去停止应用,例如kill 应用 ,当然如果你足够变态,kill -9 也可以 。

缺点&局限

缺点描述
不同的版本配置不大一样早期的Spring Cloud版本中,,pause端点是不依赖restart端点的,后来一个pull request导致pause端点必须依赖restart端点…个人给官方提issue,官方最后选择了继续依赖,我也是醉了……
无法和Eureka的健康检查配合使用如果你的服务发现组件用的是Eureka,并且你的应用开启了健康检查(eureka.client.healthcheck.enabled = true ,那么/pause 端点无效!!!

方式四:/service-registry 端点【生产可用】

使用方式:

  • 在想下线应用的application.yml 中添加配置,从而暴露/service-registry 端点:

    management:

        endpoints:

            web:

                exposure:

                    include: service-registry

  • 发送POST请求到/actuator/service-registry 端点:

    curl -X "POST" "http://localhost:8000/actuator/service-registry?status=DOWN" \

    -H "Content-Type: application/vnd.spring-boot.actuator.v2+json;charset=UTF-8"

  • 实行后的效果类似如下图:

    下线后的效果图

    由图可知,使用/service-registry 端点可实现类似/pause 端点的效果。

    缺点

        暂时没有发现缺点。

转载于:https://my.oschina.net/langwanghuangshifu/blog/2999966

相关文章:

  • 让UITableView的Cell都变成静态的
  • 牛客练习赛37
  • 『原创』设置SQL Server 2005自动备份——数据库邮件设置(图文)
  • Gmail工具和插件网址大全
  • 北京城市生态系统研究站取得2011年国自然科学基金重点基金资助
  • samba 文件共享
  • Nginx的介绍
  • 14个值得推荐的个人提升方法
  • 上海科学家研制出新型“耐火宣纸”
  • Java Web:项目结构和web.xml
  • 调查:澳门96%打工者称奖金、薪酬决定工作去留
  • 前端技术周刊 2019-01-14:客户端存储
  • 前端工程化的理解
  • 公安部发2019年春运交通安全预警 道路客运量将达24.6亿人次
  • WebSocket 协议 5~10 节
  • [译] 怎样写一个基础的编译器
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • nodejs实现webservice问题总结
  • Web设计流程优化:网页效果图设计新思路
  • Yeoman_Bower_Grunt
  • 分布式熔断降级平台aegis
  • 复习Javascript专题(四):js中的深浅拷贝
  • 前言-如何学习区块链
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 自动记录MySQL慢查询快照脚本
  • PostgreSQL之连接数修改
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • 组复制官方翻译九、Group Replication Technical Details
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (笔试题)分解质因式
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (蓝桥杯每日一题)love
  • (生成器)yield与(迭代器)generator
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (一)RocketMQ初步认识
  • (已解决)什么是vue导航守卫
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .NET MVC第五章、模型绑定获取表单数据
  • @staticmethod和@classmethod的作用与区别
  • [20190416]完善shared latch测试脚本2.txt
  • [④ADRV902x]: Digital Filter Configuration(发射端)
  • [Android]使用Retrofit进行网络请求
  • [BZOJ 3282] Tree 【LCT】
  • [BZOJ] 3262: 陌上花开
  • [C++]unordered系列关联式容器
  • [HDOJ4911]Inversion
  • [Leetcode] 寻找数组的中心索引
  • [LeetCode系列]3元素最近和问题的O(n^2)解法
  • [linux]资料收纳