SpringBoot项目--如何不停服更新应用?

news/2024/11/30 9:56:49/

原文网址:SpringBoot项目--如何不停服更新应用?_IT利刃出鞘的博客-CSDN博客

简介

说明

        本文介绍Java后端项目如何不停机更新服务。

        在生产环境中,一般都会每个服务部署多个实例。只要多于1个实例,就可以不停服更新应用。

不停服更新应用的作用

  1. 有需要紧急修复的bug时,不会影响用户使用。
  2. 可以做到随时上线,不需要等到晚上没有用户在用时才更新服务(可以减少无意义的加班😉)。

需求

        本文假设解决此问题:微服务user有两个实例:user1和user2,需要在保证user服务不中断的情况下更新user服务。

方案1:使用Nacos的权重功能

说明

Nacos可以配置实例的权重,如果权重改为0,则不会调到这个实例。

不停服更新应用的流程

  1. 将user1的权重设置为0
  2. 更新user1
  3. user1启动完毕后,恢复user1的权重为1,将user2的权重设置为0
  4. 更新user2
  5. 恢复user2的权重为1

注意

修改完之后,所有网关的请求都会转发到权重不为0的实例上边,但feign请求还是会到达权重为0的实例上边。

解决方法:需要修改feign的负载均衡器(ribbon或者loadbalancer),将其改为从Nacos获得实例,根据权重选择实例。

方案2:使用强制路由中间件

说明

此中间件支持强制将请求转发到指定的实例。见:router4j · 语雀

不停服更新应用的流程

  1. 将user2设置为强制路由
  2. 更新user1
  3. user1启动完毕后,取消user2的强制路由,将user1设置为强制路由
  4. 更新user2
  5. 取消user1的强制路由


http://www.ppmy.cn/news/1507.html

相关文章

【从零开始玩量化13】quantstats:分析你的量化策略

背景 之前总结了一些获取量化数据的途径,数据是一个量化策略的“原材料”,接下来要考虑的问题就是如何使用这些数据。 本文,介绍一个量化指标分析工具quantstats,利用它可以很方便的分析你的策略。 Github地址:https…

Objective-C中weak实现原理

Objective-C的对象采用引用计数来管理内存,如果对象被强持有,这个对象的引用计数会增加,如果对象被弱持有,这个对象的引用计数不会增加。弱持有也就是weak如何实现的呢?首先看下weak相关底层实现用到的数据结构&#x…

使用xlsxwriter简单的将截图插入excel表格中

1.xlsxwriter插入图片 原因: 有个小项目需要测出数据,然后把仪表上截图给插入excel中。 在网上查了一下,发现用xlsxwriter插入图片挺方便的。 import xlsxwriterduang xlsxwriter.Workbook("data.xlsx") sheet duang .add_work…

用Hopper修改代理软件端口

背景 用代理软件可以访问google,但是端口经常不固定,从缺省1080变成了随机。 前几天其实已经用Hopper 3.0看了一次,但是好像不支持go,所以没反编译成功,这次换了4.0,支持了go。 Hopper与逆向 逆向的目的…

数据结构和算法之如何建立图

小白BG.1 邻接矩阵表示的图结点的结构 typedef struct GNode *PtrToGNode;//PtrToGNode是指向GNode的一个指针 struct GNode{ int Nv;//顶点数 int Ne;//边数 WeightType G[MaxVertexNum][MaxVertexNum]; DataType Data[MaxVertexNum];//存顶点的数据 }; typedef PtrToGNode MG…

“剧情+综艺” 助推国潮文化破圈

一舞千年,重现大唐辉煌;一曲流光,雕琢岁月模样;一纸云烟,漫卷诗书山河;跨历史长河,览盛世华章。自从河南卫视开启“剧情综艺”的晚会形式,晚会便多了一种呈现方式。 从2021年《唐宫夜…

基于JSP网上书城的设计与实现

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

一篇文章了解MySQL的group by

准备工作! 1.本文章MySQL使用的是5.7,引擎使用的是innodb 2. 使用的表结构(t1),字段a上有一个索引, 1. group by常用方法: group by的常规用法是配合聚合函数,利用分组信息进行统…