让 sdk 包静默升级的 SAO 操作,你见过几种?
拓展阅读
业务背景
有时候为业务方提供了基础的 sdk 包,为了保证稳定性,一般都是 release 包。
但是每一次升级都非常痛苦,也不可能写一个一步到位的 jar 包,因为业务一直在变化。
那有什么方式,让 sdk 包静默升级呢?
今天学习到一个骚操作,和大家分享一下。

方式1-snapshot
以 java 的 maven 包管理为例,如果使用 snapshot,那么就可以随时方便的升级包内容。
优点
非常简单,maven 天然支持、
缺点
包信息不够稳定,一般为了追求生产的稳定性,都会要求去 snapshot。
升级失败,不兼容等,没有回滚的余地。
方式2-nexus 等内部仓库直接替换
方式:直接替换指定版本的仓库中的包。这种方式的核心和上面类似。只不过是看起来不是 snapshot,但是依然无法保障安全。
方式3-shell 脚本结合 CI
方式:使用 shell 脚本,在升级的时候,先备份,再替换。
流程:一般结合 ci 流水线使用,部署打包的时候替换包版本到指定版本,相比较而言更加灵活,也有回旋的余地。
缺点:要求比较多,比较麻烦。且要求应用必须通过 ci 流水线部署,否则就会被绕过。
注意点
1)需要保证 jar 版本之间的向前兼容性,避免升级导致问题。
2)应用环境比较复杂,可能会出问题。所以一定要逐步的升级,让用户测试环境经过验证。
3)提前通知用户,让用户知道这个事情。而且允许用户不做升级操作。
小结
这种方式给我的感觉是无可奈何,但是又非常巧妙。
上一次有这种感觉的,还是运维怕磁盘爆,预留 500MB 放一个垃圾文件,磁盘满了直接移除,快速解决问题。
你在日常工作中,见到过哪些 SAO 操作?
让 sdk 包静默升级的 SAO 操作,你见过几种?的更多相关文章
- Hi3531 SDK 安装以及升级使用说明
Hi3531 SDK 安装以及升级使用说明 第一章 Hi3531_SDK_Vx.x.x.x版本升级操作说明 如果您是首次安装本SDK,请直接参看第2章. 第二章 首次安装SDK 1.Hi ...
- Hi3519v101 SDK安装及升级
安装SDK 1.解压tgz压缩包 将 Hi3519V101_SDK_Vx.x.x.x.tgz 压缩包放入共享文件夹中,并解压到Linux内部如 /sdk 目录下,因为在共享目录中编译容易出现各种错误. ...
- Hi3536DV100 SDK 安装以及升级使用说明
第一章 Hi3536DV100_SDK_Vx.x.x.x版本升级操作说明 如果您是首次安装本SDK,请直接参看第2章. 第二章 首次安装SDK1.Hi3536DV100 SDK包位置 在"H ...
- SharePoint2010升级到SharePoint2013操作手册
SharePoint2010升级到SharePoint2013操作手册 目 录 第一章 前言 3 第二章 升级前准备 3 第三章 升级流程图 5 第四章 升级过程 5 4.1 ...
- Weblogic 升级更新补丁操作步骤
转至:https://blog.csdn.net/allway2/article/details/91424413 Weblogic 升级更新补丁操作步骤: 1.上传补丁包2.kill weblogi ...
- oracle读写文件--利用utl_file包对磁盘文件的读写操作
oracle读写文件--利用utl_file包对磁盘文件的读写操作 摘要: 用户提出一个需求,即ORACLE中的一个表存储了照片信息,字段类型为BLOB,要求能导出成文件形式. 本想写个C#程序来做, ...
- 项目中nodejs包高效升级插件npm-check-updates
nodejs包高效升级插件npm-check-updates 最近想升级npm的包 1.//常规的包升级方式/2.npm update (包) 到npm一搜发现了一个很好的升级工具 npm-check ...
- 史上最全的音视频SDK包分享给大家
史上最全的音视频SDK包分享给大家 概述一下SDK功能: 项目 详情视频通信 支持多种分辨率的视频通信语音通信 提供语音通信,可支持高清宽带语音动态创建房间 可以根据需要,随时创建房间H5 支持 ...
- MTK官方SDK包编译openwrt
全过程需要联网,最好有梯子,编译方式有两种 安装依赖库: apt-get install g++ apt-get install libncurses5-dev apt-get install zli ...
- victoriaMetrics中的一些Sao操作
victoriaMetrics中的一些Sao操作 快速获取当前时间 victoriaMetrics中有一个fasttime库,用于快速获取当前的Unix时间,实现其实挺简单,就是在后台使用一个goro ...
随机推荐
- 浅谈Code Review
1. 什么是Code Review Code Review(CR)即代码评审,又名代码走查,是指对软件开发过程中编写的代码进行检查和评估的一种实践.它通常由其他团队成员.同事或专门的质量保证团队成员来 ...
- 「Semigroup と Monoid と Functional と」
一个被国内 oi 环境弱化至几乎不存在的概念,不过我觉得还是有学一学的必要.因为我没学过代数结构所以大部分内容都在开黄腔,欲喷从轻. Semigroup 的定义是,\(\forall a,b\in\m ...
- C#归并排序算法
前言 归并排序是一种常见的排序算法,它采用分治法的思想,在排序过程中不断将待排序序列分割成更小的子序列,直到每个子序列中只剩下一个元素,然后将这些子序列两两合并并排序,最终得到一个有序的序列. 归并排 ...
- LGPL协议原文及中文翻译
LGPL协议原文及中文翻译 参考链接 原文: GNU LESSER GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 ...
- Redis 6 学习笔记 2 —— 简单了解订阅和发布(Pub/Sub),JDK17环境下用Jedis 4.3.1连接Redis并模拟验证码发送
REDIS pubsub -- Redis中国用户组(CRUG) 什么是发布和订阅 Redis发布订阅是一种通信模式:发送者(Pub)发送消息,订阅者(Sub)接收消息.Redis客户端可以订阅任意数 ...
- 每天5分钟复习OpenStack(七)内存虚拟化
标题中的存储虚拟化,涉及到两个方面,分别是内存和磁盘的虚拟化技术.内存的虚拟化就不得不提EPT和VPID 技术. 首先申明下本人其实不想写一些纯理论的东西,但是架不住面试经被问,为此特将一些特别复杂的 ...
- 21.8 Python 使用BeautifulSoup库
BeautifulSoup库用于从HTML或XML文件中提取数据.它可以自动将复杂的HTML文档转换为树形结构,并提供简单的方法来搜索文档中的节点,使得我们可以轻松地遍历和修改HTML文档的内容.广泛 ...
- Redis常用命令-实战篇
目录 写在前面 连接操作命令 持久化 远程服务控制 对value操作的命令 操作字符串String命令 List Set Hash 写在前面 java 操作 redis 太常见了,基本上有需要的系统, ...
- C#/.NET/.NET Core优秀项目和框架2023年10月简报
前言 公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(公众号每周至少推荐两个优秀的项目和框架当然节假日除外),公众号推文有项目和框架的介绍.功能特点以及部分截图等(打不开或 ...
- 7/10 luoguRound 10 庆典 div3T1
#include<bits/stdc++.h> using namespace std; int m,n,x; int arr[100005]; int maxi = -1,maxn = ...