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

后端服务迁移方案及过程记录

阶段时序动作
双写+数据对比1新rdb集群上线
双写+数据对比2新服务上线,无流量
双写+数据对比2后端自己发起的流程比如job,新服务上线一份新的,独立运行
双写+数据对比2消费二方mq,新服务使用新的消费组消费原有消息
双写+数据对比3新旧服务比较转发服务comparator上线,定时拉取新旧库数据对比是否一致,并打印对比日志
双写+数据对比4旧服务改造上线
双写+数据对比4旧服务http读、写请求转发comparator,再转发到新服务
双写+数据对比5运行若干天,根据数据对比结果处理程序问题,无问题后可确认写程序已无问题
双写+数据对比5comparator打印部分新服务读请求结果,同时调用旧服务获取结果,对比是否一致,无问题后可确认读程序已无问题
灰度6由于数据是周期性的,而后台管理系统仅是内部人员使用,因此数据不做迁移,后台使用新旧不同前端入口做灰度流量转发
灰度6新服务新增数据id起始值远大于旧服务id最大值
灰度6由于是任务发放的业务,c端不产生新数据,都由后端生成数据,接口如果有id,转发旧服务,旧服务加开关,如大于阈值则转发新服务
灰度6c端接口根据id查询,转发旧服务,旧服务加开关,如大于阈值则转发新服务,小于则继续走旧服务
灰度6c端列表接口聚合新旧服务数据,旧服务做聚合,加开关
切流过渡期7旧服务已无有效数据,关闭聚合逻辑
切流完成8旧服务只做转发
ip漂移9旧服务的ip漂移至新服务,完成迁移

相关文章:

后端服务迁移方案及过程记录

阶段时序动作双写数据对比1新rdb集群上线双写数据对比2新服务上线,无流量双写数据对比2后端自己发起的流程比如job,新服务上线一份新的,独立运行双写数据对比2消费二方mq,新服务使用新的消费组消费原有消息双写数据对比3新旧服务比…...

StAX解析

StAX解析 StAX解析介绍 StAX解析与SAX解析类似,也是基于事件驱动的,不同之处在于StAX采用的是拉模式,应用程序通过调用解析器推进解析的进程,可以调用next()方法来获取下一个解析事件(开始文档,结束文档,开…...

[MCU]AUTOSAR COM STACK - CAN协议栈

各层PDU PDU:Protocal Data Unit,协议数据单元,由SDU和PCI组成; I-PDU:Interaction Layer PDU,数据交互层PDU;N-PDU:NetWork Layer PDU,网络层PDU,通常用的…...

React:从 npx开始

使用 npm 来创建第一个 recat 文件( react-demo 是文件名,可以自定义) npx create-react-app react-demo npx是 npm v5.2 版本新添加的命令,用来简化 npm 中工具包的使用 原始: 全局安装npm i -g create-react-app 2 …...

力扣热门100题之接雨水【困难】

题目描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,1,3…...

Stable-Diffusion-Webui部署SDXL0.9报错参数shape不匹配解决

问题 已经在model/stable-diffusion文件夹下放进去了sdxl0.9的safetensor文件,但是在切换model的时候,会报错model的shape不一致。 解决方法 git pullupdate一些web-ui项目就可以,因为当前项目太老了,没有使用最新的版本。...

Springboot @Async 多线程获取返回值

Springboot Async 多线程获取返回值 需求背景 最近需要用到多线程, 自己维护线程池很麻烦, 正好看到Springboot集成线程池的例子, 这里自己做了个尝试和总结, 记录一下, 也分享给需要的朋友; 不考虑事务的情况下, 这个多线程实现比较简单, 主要有以下几点: 在启动类加上Enab…...

怎样接入chatGPT

官网链接: OpenAI platform...

Docker consul容器服务更新与发现

Docker consul容器服务更新与发现 一、什么事服务注册与发现二、什么是consul三、consul部署1、consul服务器2、registrator服务器3、consul-template 一、什么事服务注册与发现 服务注册与发现是微服务架构中不可或缺的重要组件。起初服务都是单节点的,不保障高可…...

[算法很美打卡] 多维数组篇 (打卡第一天)

文章目录 顺时针打印二维数组0所在的行列清零 顺时针打印二维数组 package 每日算法学习打卡.算法打卡.七月份.七月二十六号;public class test1 {public static void main(String[] args) {int[][] matrix {{1,2},{5,6},{9,10},{13,14},};print(matrix);}static void print(i…...

微服务系列(1)-who i am?

微服务系列(1)-我是谁 应用架构的演化 简单来说系统架构可以分为以下几个阶段:复杂的臃肿的单体架构-SOA架构-微服务 单体架构及其所面临的问题 在互联网发展初期,用户数量少,流量小,硬件成本高。因此…...

记录这这段时间发生的事情。

当做后端的时候总是被骂做前很丑。成为一个UI设计师与后端工程师才会更加完美。 尝试着做一个主页面。 创建了一个主页面 的表格index。 收录了希望发送到主页的,的帖子。 并且,可以填写是否可以。 一个看起来不错的主页。 标题设计的左右框。 这种框…...

发布npm包流程

发布npm包的步骤如下: 在终端中通过 npm init 命令创建一个新的npm包,按照提示填写包的信息,如包名称、版本、描述、作者、许可证等。 在包的根目录下创建一个 index.js 文件,编写你的代码。 确认你已经注册了npm账号&#xff0…...

面试官:Redis 为什么变慢了?怎么解决?

一、Redis为什么变慢了 二、Redis如何优化 三、Redis变慢了排查步骤 一、Redis为什么变慢了 1.Redis真的变慢了吗? 对 Redis 进行基准性能测试 例如,我的机器配置比较低,当延迟为 2ms 时,我就认为 Redis 变慢了,…...

Docker:开启应用程序开发新篇章的利器

Docker:开启应用程序开发新篇章的利器 引言:1. Docker 的基本概念2. Docker 的优势3. Docker 在应用程序开发中的实际应用如何创建docker镜像如何部署docker镜像结论: 引言: 在现代软件开发领域中,容器化技术正在迅猛…...

Python面向对象(三)(继承、封装)

面向对象的三大特性 面向对象编程,是许多编程语言都支持的一种编程思想。 简单理解是:基于模板(类)去创建实体(对象),使用对象完成功能开发。 面向对象包含3大主要特性: 封装 封…...

Redis Stream 流的深度解析与实现高级消息队列【一万字】

详细介绍了 Redis 5.0 版本新增加的数据结构Stream的使用方式以及原理,如何实现更加可靠的消息队列。 文章目录 Stream 概述2 Stream基本结构3 存储数据3.1 Entry ID3.2 数量限制 4 获取数据4.1 范围查询4.2 独立消费消息4.2.1 非阻塞使用4.2.2 阻塞的使用 4.3 消费…...

一个灵活、现代的Android应用架构

一个灵活、现代的Android应用架构 学习Android架构的原则:学习原则,不要盲目遵循规则。 本文旨在通过示例演示实际应用:通过示范Android架构来进行教学。最重要的是,这意味着展示出如何做出各种架构决策。在某些情况下&#xff0…...

redis高级篇 springboot+redis+bloomfilter实现过滤案例

一 bloomfilter的作用 1.1 作用 Bloomfilter:默认是有0组成bit数组和hash函数构成的数据结构,用来判断在海量数据中是否存在某个元素。 应用案例:解决缓存穿透。Bloomfilter放在redis前面,如果查询bf中没有则直接返回&#xff…...

mybatis学习笔记之在WEB中应用MyBatis

文章目录 数据库表的设计和准备数据环境搭建前端页面编写后端代码实现后端代码目录dao层servicewebpojoUtils 数据库表的设计和准备数据 环境搭建 在pom.xml中配置依赖&#xff08;logback、mybatis、mysql、servlet&#xff09; 注意引入tomcat 前端页面编写 <!DOCTYPE …...

告别枯燥理论:用GhostPack的Certify和Rubeus,5步搞定Active Directory证书服务(ADCS) ESC1漏洞检测与利用

实战ADCS漏洞利用&#xff1a;从零构建ESC1攻击链的完整指南 Active Directory证书服务(ADCS)作为企业身份验证基础设施的核心组件&#xff0c;其安全配置往往被低估。当证书模板配置不当&#xff0c;攻击者可能利用ESC1漏洞实现从普通域用户到域管理员的权限提升。本文将带您搭…...

课堂笔记4月2日

1、计算机核心资源 CPU: 计算&#xff08;lscpu&#xff09;内存&#xff1a; 缓存数据&#xff08;掉电丢失&#xff09;硬盘&#xff1a; 持久化存储数据网络&#xff1a; 传播数据 2、查看 CPU 信息# 查看CPU[rootC001 ~]# lscpu Architecture: x86_64 CPU op-mod…...

海康工业相机——Python二次开发实战:构建实时条形码识别系统

1. 环境准备与硬件选型 第一次接触海康工业相机时&#xff0c;我被它金属外壳下的精密光学元件震撼到了。这种工业级设备和我们平时用的消费级摄像头完全不同&#xff0c;它的稳定性、帧率和图像质量完全是为生产线环境设计的。如果你手头正好有台海康相机&#xff0c;跟着我的…...

IA-Lab AI 检测报告生成助手:双碳目标驱动下的检测机构效率引擎,重塑报告生成与合规审核新模式

在“双碳”目标持续推进的时代背景下&#xff0c;绿色发展已从政策导向转变为企业与机构必须面对的现实命题。对于检测认证&#xff08;TIC&#xff09;行业而言&#xff0c;这一变化尤为明显——碳排放核算、能源效率评估、环境数据监测等业务需求快速增长&#xff0c;检测报告…...

Java实战:用Hutool和WGS84坐标系精准计算两点间距离与方位角(附避坑指南)

Java实战&#xff1a;用Hutool和WGS84坐标系精准计算两点间距离与方位角&#xff08;附避坑指南&#xff09; 在LBS&#xff08;基于位置的服务&#xff09;应用开发中&#xff0c;地理空间计算是核心能力之一。无论是外卖配送距离估算、共享单车调度优化&#xff0c;还是运动轨…...

保姆级教程:手把手教你用Dify 0.6.0源码搭建自己的AI工作流引擎(附避坑指南)

从零构建AI工作流引擎&#xff1a;Dify 0.6.0源码实战指南 当你第一次打开Dify的源码仓库&#xff0c;可能会被那些复杂的目录结构和抽象类搞得一头雾水。别担心&#xff0c;三周前我也和你一样&#xff0c;直到我亲手将这套系统跑起来并修改了第一个工作流节点。本文将带你用最…...

为什么我不建议你手动升级Ubuntu的GLIBC?系统库兼容性深度解析

为什么我不建议你手动升级Ubuntu的GLIBC&#xff1f;系统库兼容性深度解析 在Linux系统的日常运维中&#xff0c;GLIBC&#xff08;GNU C Library&#xff09;作为最基础的系统库之一&#xff0c;其重要性不言而喻。它不仅是C语言程序运行的基础&#xff0c;更是几乎所有系统工…...

保姆级教程:用ESP8266和巴法云做个家庭温湿度监测App(附完整代码包)

零基础打造智能家居环境监测系统&#xff1a;ESP8266巴法云实战指南 从生活痛点出发的智能监测方案 去年夏天&#xff0c;我发现自己书房里的植物总是莫名其妙枯萎。直到某天偶然发现&#xff0c;这个朝西的房间下午温度会飙升到35℃以上&#xff0c;湿度却不到30%——原来我的…...

基于R语言的自动数据收集:网络抓取和文本挖掘实用指南【1.2】

第2章 HTML在网络上浏览时&#xff0c;我们阅读和操作的几乎所有内容的背后都隐藏着一个标准&#xff1a;超文本标记语言&#xff08;Hyper Text Markup Language&#xff0c;HTML&#xff09;。不管是我们在维基百科上查找信息&#xff0c;在Google搜索站点&#xff0c;查看我…...

蓝桥杯单片机第12届省赛2满分(西风)

1注意S7长短按键冲突问题if(key_down7)//判断是否按下{fs71;//开始计时t1000ms_10;}if(key_up7)//判断是否抬起{if(t1000ms_1>1000)//长按键{fled^1;}else//短按键{f_baofreq;}t1000ms_10;fs70;//停止计时}2获取频率void Timer0_Init(void) //100微秒12.000MHz {AUXR &…...