热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

k8s+springboot+Eureka如何平滑上下线服务

k8s+springboot+Eureka如何平滑上下线服务目录服务平滑上下线-k8s版本目录“上篇介绍了springboot+Euraka服务平滑上下线的方式,有部分小伙伴反馈k

k8s + spring boot + Eureka如何平滑上下线服务

  • 目录
    • 服务平滑上下线-k8s版本

目录

“ 上篇介绍了springboot+Euraka服务平滑上下线的方式,有部分小伙伴反馈k8s环境下有一些办法也可以解决这个平滑过度问题,为了解决这个问题,研究了一下目前我这边服务上k8s平滑过度的方案,分享给大家”

回顾:
回顾上文spring boot + Eureka如何平滑上下线服务,主要给大家介绍了两种服务平滑过度的版本:
单机方式:解决服务停止时,监听web容器是否还有未执行完的请求,等待其执行完才停止。
微服务方式:除了需要按单机方式增加web容器监听,还需要调整eureka client 、
ribbon、eureka server等三个地方的缓存参数,以保证其平滑过度。
本文主要介绍第三种,微服务部署在k8s上为例,看看如何解决服务平滑过度的问题。

服务平滑上下线-k8s版本

K8s介绍:

Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。
在Kubernetes中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。
特点:
可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)

可扩展: 模块化,插件化,可挂载,可组合

自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展

注:上述介绍引用百度百科-https://baike.baidu.com/item/kubernetes/22864162?fr=aladdin

K8s部署方案:

从上述k8s的介绍就可以知道,k8s是一套可以灵活编排管理容器资源的工具,并且可以根据目前服务的请求压力动态的调整pod的数量来保证服务的稳定性和可用性,而且整个过程不需要人工干预,自动根据伸缩条件,进行管理。下面就给大家介绍一下k8s部署服务的流程,见下图:
k8s + spring boot + Eureka如何平滑上下线服务
从上图可以得知,k8s服务部署的流程是先启动一个新服务的pod,然后通过配置的服务检测方式,并行检测服务就绪以及存活的状态,只要其中一个条件满足就执行接下来的步骤,停止旧pod,停止旧的POD是并行的执行检测SLB下面是否有旧pod,如果有则删除该旧pod,并行调用eureka client服务下线的接口(具体接口,见上篇文章有源码),并行执行k8s停止前的钩子,执行休眠时间(这个时间为eureka服务整体缓存失效最大时间),接着执行旧pod下线,如果是linux系统会默认执行kill -15的命令,通知web应用停止(配置web容器下线前请求监听),最后pod删除,完成整个流程。

k8s服务平滑关键流程:
1、web应用需要增加eureka下线接口,供k8s调用使用

2、旧pod休眠时间参考eureka缓存失效最大时间

3、web应用增加容器监听,解决请求存在未处理完成,就被停止的问题

以上三点都是可以通过上一篇文章解决的。

liunx 命令解析:
kill -9 强制杀掉正在运行的程序,会导致正在请求的服务中断,且使web容器监听服务无法生效。
kill -15表示发送一个通知,告诉应用程序需要自己整成退出应用,退出前可以被堵塞或者回调处理,默认优雅停止程序可以使用该命令。

k8s + spring boot + Eureka如何平滑上下线服务


推荐阅读
  • 提升 Kubernetes 集群管理效率的七大专业工具
    Kubernetes 在云原生环境中的应用日益广泛,然而集群管理的复杂性也随之增加。为了提高管理效率,本文推荐了七款专业工具,这些工具不仅能够简化日常操作,还能提升系统的稳定性和安全性。从自动化部署到监控和故障排查,这些工具覆盖了集群管理的各个方面,帮助管理员更好地应对挑战。 ... [详细]
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • PJSIP 编译与开发指南:深入解析 PJSIP 库的应用与优化
    PJSIP 编译与开发指南:深入解析 PJSIP 库的应用与优化 ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • 在 Ubuntu 中遇到 Samba 服务器故障时,尝试卸载并重新安装 Samba 发现配置文件未重新生成。本文介绍了解决该问题的方法。 ... [详细]
  • Python 3 Scrapy 框架执行流程详解
    本文详细介绍了如何在 Python 3 环境下安装和使用 Scrapy 框架,包括常用命令和执行流程。Scrapy 是一个强大的 Web 抓取框架,适用于数据挖掘、监控和自动化测试等多种场景。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • Java Socket 关键参数详解与优化建议
    Java Socket 的 API 虽然被广泛使用,但其关键参数的用途却鲜为人知。本文详细解析了 Java Socket 中的重要参数,如 backlog 参数,它用于控制服务器等待连接请求的队列长度。此外,还探讨了其他参数如 SO_TIMEOUT、SO_REUSEADDR 等的配置方法及其对性能的影响,并提供了优化建议,帮助开发者提升网络通信的稳定性和效率。 ... [详细]
  • 利用ZFS和Gluster实现分布式存储系统的高效迁移与应用
    本文探讨了在Ubuntu 18.04系统中利用ZFS和Gluster文件系统实现分布式存储系统的高效迁移与应用。通过详细的技术分析和实践案例,展示了这两种文件系统在数据迁移、高可用性和性能优化方面的优势,为分布式存储系统的部署和管理提供了宝贵的参考。 ... [详细]
  • Vi编辑器的工作模式有哪些?如何在不同模式间切换?
    Vi编辑器是Linux系统中常用的文本编辑工具,具备三种主要工作模式:命令模式、插入模式和底行模式。用户可以通过特定的按键组合在这些模式之间进行切换,以实现不同的编辑功能。例如,在命令模式下,用户可以执行移动光标、删除文本等操作;而在插入模式下,则可以输入或修改文本内容。底行模式则用于执行保存文件、退出编辑器等命令。 ... [详细]
  • MySQL 8.0 MGR 自动化部署与配置:DBA 和开源工具的高效解决方案
    MySQL 8.0 MGR 自动化部署与配置:DBA 和开源工具的高效解决方案 ... [详细]
  • Docker入门指南:初探容器化技术
    Docker入门指南:初探容器化技术摘要:Docker 是一个使用 Go 语言开发的开源容器平台,旨在实现应用程序的构建、分发和运行的标准化。通过将应用及其依赖打包成轻量级的容器,Docker 能够确保应用在任何环境中都能一致地运行,从而提高开发和部署的效率。本文将详细介绍 Docker 的基本概念、核心功能以及如何快速上手使用这一强大的容器化工具。 ... [详细]
  • 技术日志:Ansible的安装及模块管理详解 ... [详细]
  • 从用户转型为开发者:一场思维升级的旅程 | 专访 StarRocks Committer 周威
    从用户转变为开发者,不仅是一次角色的转换,更是一场深刻的思维升级之旅。本次专访中,StarRocks Committer 周威分享了他如何在这一过程中逐步提升技术能力与思维方式,为开源社区贡献自己的力量。 ... [详细]
author-avatar
小东东5201314
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有