业务不打烊:解决软件系统升级痛点的新方法

news2024/11/17 19:50:39

数字化时代,随着用户对产品性能和功能要求的不断提升,应用服务升级成了企业保持竞争力的关键之一。然而,传统的应用服务升级往往会给用户带来不必要的中断和不便,这种“伤筋动骨”的升级方式已经无法满足日益增长的用户需求,如何实现无感知升级,成为了许多企业亟待解决的难题。

以某企业数据中心与业务协同项目为例,在该项目过程中,形成了以美林网关为入口,融合多厂商业务系统的融合部署架构,其中美林微服务应用作为基础服务,支撑其他厂商系统业务。
在这里插入图片描述
当需要升级系统中的服务时,总会面临头疼的问题:

▶ 影响业务正常运行:升级服务时需要暂停服务,导致用户的业务功能中断,在复杂的补丁升级场景中,停机时间甚至可能长达一整天。如果新版本服务出现问题,版本回滚的过程中仍需暂停服务,且时间较长,严重影响业务的开展。

▶ 发布风险增高:服务升级后,用户将访问新版本的服务,由于新功能可能存在未知问题,增加了发布风险,并可能影响整个系统的稳定性和可靠性。

那么,如何才能保证在服务升级的时候,不影响用户的体验呢?

PART 1 解决方案

为解决传统升级过程中的业务痛点,美林数据技术专家团队提供了一套基于网关服务和Nacos实现的应用服务无感知升级的解决方案。
在这里插入图片描述

  • 部署两个Nginx服务节点,通过前置负载F5代理保证Nginx服务高可用。部署两套基础服务节点(网关服务、系统管理、流程引擎、定时调度等),服务器A和服务器B上的基础服务完全一致。
  • 中间件如数据库、Nacos、缓存均采用集群部署方式,基础服务节点连接同一套中间件。
  • 下游应用服务基于基础服务来实现具体的业务,下游其他厂商产品以及客户开发的二开服务。这些服务需要至少部署两个节点,这两个节点可以是不同版本的应用。

按照此部署方案部署后的系统满足高可用,且支持基础服务和应用服务的无感知升级。

1.基础服务升级

基础服务升级基于前置负载均衡器流量切换实现,网关服务限制用户请求优先分发到本机应用,即请求经过服务器A上的网关服务优先转发到服务器A的系统管理、定时调度等基础服务。

升级前需保证服务器A、服务器B应用一致,包含服务版本、服务配置等。以先升级服务器B为例,进行无感知方案升级流程演示。升级流程如下:
在这里插入图片描述
2.应用服务升级

美林技术专家团队通过版本控制技术,实现了下游业务系统应用服务无感知升级。在部署服务之前,为每个服务标记版本号。用户来配置访问不同版本服务的条件,网关服务会根据请求信息及用户配置,来实现访问指定版本的业务应用服务。

以根据客户端访问IP为例,演示业务系统产品服务的升级流程:
在这里插入图片描述

PART 2 方案价值

1)提高交付效率:升级服务可以在白天进行,而且不需要停机升级,用户业务也不会中断,至少可以节省50%的升级时间。

2)降低升级风险:通过访问控制技术可以有效降低风险。如果新版本出现问题或错误,只会影响到部分用户,而不会对整个用户群体造成影响,团队能够在问题出现时快速回滚或修复,减少潜在的负面影响。

3)提升系统可用性:采用此方案部署的系统,如果运行中某个服务节点宕机,可以快速切换到其他可用节点来保证业务正常,而且在升级过程中可以控制部分用户访问新版本服务,方便进行功能测试、性能测试和负载测试,可以确保新版本能够在生产环境中稳定运行,减少潜在的问题和错误。

小T总结

“应用服务无感知升级解决方案”可应用于大规模分布式应用服务的持续性升级、企业级应用的无缝升级、在线服务的无中断更新等场景。不仅可以满足用户对零中断的期望,提升用户体验,还可以保证系统的可靠性,减少升级过程中对业务的影响,从而促进企业的发展。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/791941.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Mo 人工智能技术博客】推荐系统(二)用户行为数据

任少斌 上一期:推荐系统(一)简要介绍 用户提供信息 正所谓“知己知彼,百战不殆”,为了让推荐系统更符合用户的偏好,我们需要深入了解用户的行为特征。如果有用户在注册的时候能够描述个人的偏好&#xff…

【网络安全带你练爬虫-100练】第15练:模拟用户登录

目录 一、目标1:理清逻辑 二、目标2:将每一步用代码进行表示 三、网络安全O 一、目标1:理清逻辑 模拟登录的基本流程 1、进入入口程序 2、读取目标URL 3、请求加上线程 4、确定请求数据包 5、请求格式的确认 6、数据的处理与判断 二、目标…

Integer包装类详解加部分源码

【1】Java.lang直接使用&#xff0c;无需导包&#xff1a; 【2】类的继承关系&#xff1a; 【3】实现接口&#xff1a; Serializable&#xff0c;Comparable<Integer> 【4】这个类被final修饰&#xff0c;那么这个类不能有子类&#xff0c;不能被继承&#xff1a; 【5】…

用Python做数据化运行,看完这篇你就懂了!

导读&#xff1a; 数据化运营是提高利润、降低成本、优化运营效率、最大化企业财务回报的必要课题。Python作为数据科学界的关键工具之一&#xff0c;几乎可以应用于所有数据化运营分析和实践的场景。 01 用Python做数据化运营 Python是什么&#xff1f;数据化运营又是什么&am…

怎么用手机做文字二维码?文本内容在线生成二维码技巧

手机端怎么将文字制作二维码呢&#xff1f;现在二维码是日常生活中经常会使用的一种工具&#xff0c;能够将不同的内容生成二维码使用&#xff0c;比如文本二维码就是常用的一种类型。那么当我们在没有电脑的情况下时&#xff0c;如何通过手机来快速生成二维码&#xff08;二维…

软件测试之性能测试概述

1.什么是性能测试 常见软件 的性能问题 1&#xff09;响应时间过长&#xff1a;软件在执行操作或加载数据时反应迟缓&#xff0c;会给用户造成困扰。响应时间过长可能是由于代码效率低下、网络延迟、资源瓶颈等原因引起的。 2&#xff09;内存占用过高&#xff1a;过高的内存占…

6_回归算法 —欠拟合、过拟合原因及解决方法

文章目录 一、过拟合与欠拟合1 过拟合1.1 线性回归的过拟合1.2 过拟合和正则项1.2.1 带有L2正则化的线性回归—Ridge回归1.2.2 带有L1正则化的线性回归—LASSO回归1.2.3 Ridge&#xff08;L2-norm&#xff09;和LASSO&#xff08;L1-norm&#xff09;比较1.2.4 Elasitc Net 2 欠…

YOLOv7 论文学习

1. 解决了什么问题&#xff1f; 实时的目标检测器是计算机视觉系统的重要组成部分。目前应用在 CPU 端的实时目标检测方法大多基于 MobileNet、ShuffleNet、GhostNet&#xff0c;而用在 GPU 的实时目标检测方法大多基于 ResNet、DarkNet、DLA&#xff0c;然后使用 CSPNet 策略…

bfs算法和dfs算法

bfs&#xff1a;广度优先搜索&#xff0c;一层一层搜索 dfs&#xff1a;深度优先搜索&#xff0c;先搜索一边&#xff0c;如果其中某个节点不符&#xff0c;那么回溯上一个节点&#xff0c;再向另一边搜索&#xff0c;直到搜索完毕为止 这是我个人的理解&#xff0c;具体可参…

AIGC第一波裁员,揭开了AI大模型创业的裂痕

大模型开始商业化肉搏&#xff0c;AIGC创业走向残酷时刻。 短短一年&#xff0c;AIGC产业正以N倍速经历其他产业可能要走几年或十几年的波澜起伏&#xff1a;从现象级产品爆红出圈、产业热情全面点燃、创业融资层出不穷&#xff0c;到一批明星独角兽被曝身陷窘境、裁员求生&am…

28.基于注解的声明式事务

基于注解的声明式事务 准备工作 将之间的使用的数据库表t_user更改为t_user1&#xff0c;使用的依赖和对应的jdbc.properties不变即可 准备数据库 BookSql.sql CREATE TABLE t_book (book_id int(11) NOT NULL AUTO_INCREMENT COMMENT 主键,book_name varchar(20) DEFAULT …

【如何训练一个中英翻译模型】LSTM机器翻译模型部署(三)

系列文章 【如何训练一个中英翻译模型】LSTM机器翻译seq2seq字符编码&#xff08;一&#xff09; 【如何训练一个中英翻译模型】LSTM机器翻译模型训练与保存&#xff08;二&#xff09; 【如何训练一个中英翻译模型】LSTM机器翻译模型部署&#xff08;三&#xff09; 【如何训…

Java的0xFFFF在赋值、比较时引起的困惑

Java中的0xFFFF是整型&#xff0c;在赋值、比较的时候容易引起混淆&#xff0c;涉及到符号位、数值大小&#xff0c;赋值给什么类型的变量。我今天在编码的时候就遇到了一些困惑。用代码样例的形式记录下来&#xff0c;加深理解&#xff1a; package com.thb;public class Tes…

mysql null 值查询不出来问题

最新遇到mysql null 值查询的问题&#xff0c;当查询这个字段有的为null 有的不为null 该字段查询条件查询为null值得将不显示。 举例 新建表 test_user name和phone得值默认值为null 我们添加一些数据 查询下name 不是张三得数据 select * from test_user where name !张…

将Spring Session存储到Redis中实现持久化

文章目录 Session持久化1. 添加依赖2. 配置redis连接信息3. 存储和读取session从Redis Session持久化 1. 添加依赖 在项目中添加session依赖和redis依赖&#xff0c;如下所示&#xff1a; <dependency><groupId>org.springframework.boot</groupId><art…

答粉丝问)【问题记录解决】如何重新训练已经经过p-tuning微调的模型;自然语言处理平台dialogflow 智能对话式问答应用程序 相关问题

如果有人以你不喜欢的方式对待你,那一定是你允许的,否则他只能得逞一次。——张德芬 🎯作者主页: 追光者♂🔥 🌸个人简介: 💖[1] 计算机专业硕士研究生💖 🌟[2] 2022年度博客之星人工智能领域TOP4🌟 🏅[3] 阿里云社区特邀专家博主🏅 �…

字符串 (2)--- 前缀函数与 KMP 算法

/* https://www.luogu.com.cn/problem/UVA455 最小周期&#xff1a; n - pi[n -1] */ #include <iostream> #include <string> #include <vector> using namespace std; vector<int> prefix_fun(string s) { int len s.length(); /…

曲线拟合(MATLAB拟合工具箱)位置前馈量计算(压力闭环控制应用)

利用PLC进行压力闭环控制的项目背景介绍请查看下面文章链接,这里不再赘述。 信捷PLC压力闭环控制应用(C语言完整PD、PID源代码)_RXXW_Dor的博客-CSDN博客闭环控制的系列文章,可以查看PID专栏的的系列文章,链接如下:张力控制之速度闭环(速度前馈量计算)_RXXW_Dor的博客-CSD…

7.语 句

7.1 表达式和语句 ●表达式: 表达式是可以被求值的代码&#xff0c;JavaScript 引擎会将其计算出一个结果。 ●语句: 语句是一段可以执行的代码。 比如: prompt() 可以弹出一个输入框&#xff0c;还有if语句、for循环语句等等 区别: 1.表达式&#xff1a;因为表达式可被求值&…

八、Kafka时间轮与常见问题

Kafka与时间轮 Kafka中存在大量的延时操作。 1、发送消息-超时重试机制 2、ACKS 用于指定分区中必须要有多少副本收到这条消息&#xff0c;生产者才认为写入成功&#xff08;延时 等&#xff09; Kafka并没有使用JDK自带的Timer或者DelayQueue来实现延迟的功能&#xff0c;而…