Dubbo 应用切换 ZooKeeper 注册中心实例,流量无损迁移
首先思考一个问题:如果 Dubbo 应用使用 ZooKeeper 作为注册中心,现在需要切换到新的 ZooKeeper 实例,如何做到流量无损?
本文提供解决这个问题的一种方案。
场景
有两个基于 Dubbo 的微服务应用,一个是服务提供者,简称 Provider,另一个是服务消费者,简称 Consumer;
使用 ZooKeeper 作为注册中心;
现在要将注册中心从旧实例「ZooKeeper(旧)」 切换到新实例「ZooKeeper(新)」;
要求流量无损;
注:实际的场景可能要复杂得多,比如可能涉及很多个应用,有的应用既是服务提供者又是服务消费者等等,但原理一致。
解决方案
主要利用 Dubbo 支持多注册中心的特性来进行设计。
Dubbo 多注册中心的用法参考 多注册中心 | Apache Dubbo。

Step 1 是现状;
Step 2 将新实例「ZooKeeper(新)」加入到 Provider 的注册中心列表中,且放在首位,此时 Provider 同时向「ZooKeeper(新)」和「ZooKeeper(旧)」注册,默认为新;
Step 3 将 Consumer 的注册中心修改为「ZooKeeper(新)」;
Step 4 将「ZooKeeper(旧)」从 Provider 的注册中心列表中移除。
注:有一种特殊情况是一个服务既作为服务提供者又作为其它服务的消费者,这种情况应将其视为 Provider。
至此,我们已经实现了流量无损的迁移。
相关文章:
Dubbo 应用切换 ZooKeeper 注册中心实例,流量无损迁移
首先思考一个问题:如果 Dubbo 应用使用 ZooKeeper 作为注册中心,现在需要切换到新的 ZooKeeper 实例,如何做到流量无损? 本文提供解决这个问题的一种方案。 场景 有两个基于 Dubbo 的微服务应用,一个是服务提供者&…...
ADB入门教程
安卓开发 文章目录 安卓开发前言USB 连接链接 前言 基本用法 命令语法 adb 命令的基本语法如下: adb [-d|-e|-s <serialNumber>] <command>如果只有一个设备/模拟器连接时,可以省略掉 [-d|-e|-s ] 这一部分,直接使用 adb 。 为…...
SQLPro Studio for Mac:强大的SQL开发和管理工具
SQLPro Studio for Mac是一款强大的Mac上使用的SQL开发和管理工具,它支持各种数据库,包括MySQL,PostgreSQL,SQLite等。使用 SQLPro Studio,您可以轻松地连接和管理您的数据库,执行SQL查询和脚本,…...
淘宝API技术解析,实现按图搜索淘宝商品
淘宝提供了开放平台接口(API)来实现按图搜索淘宝商品的功能。您可以通过以下步骤来实现: 1. 获取开放平台的访问权限:首先,您需要在淘宝开放平台创建一个应用,获取访问淘宝API的权限。具体的申请步骤和要求…...
错误:依赖检测失败: mysql-community-libs(x86-64) >= 5.7.9 被 (已安裝) mysql-community-li
错误: 错误原因:没有删除之前安装的依赖问题 解决办法: yum remove mysql-libs 再用下面指令检查一遍: rpm -qa | grep mysql 如果有还未清理的,用下面指令: rpm -e xxx...
使用MATLAB解算炼油厂的选址
背景 记得有一年的数据建模大赛,试题是炼油厂的选址,最后我们采用MATLAB编写(复制)蒙特卡洛算法,还到了省级一等奖,这里把仅有一些记忆和材料,放到这里来,用来纪念消失的青春。 本…...
AudioTrack播放音乐之getMinBufferSize
1. AudioTrack播放音乐之前需要做好准备,即需要先计算最小音频数据缓存空间 文件路径:AudioTrack.java (frameworks\base\media\java\android\media) static public int getMinBufferSize(int sampleRateInHz, int channelConfig, int audioFormat) {@参数sampleRateInHz,…...
React和Redux中的不变性
https://overreacted.io/zh-hans/a-complete-guide-to-useeffect/ 一、不变性和副作用 1.不变:不断创造新值来替换旧值 2.不变性规则: (1)当给定相同的输入时,纯函数必须始终返回相同的值 (2࿰…...
NPM 常用命令(一)
目录 1、npm 1.1 简介 1.2 依赖性 1.3 安装方式 2、npm access 2.1 命令描述 2.2 详情 3、npm adduser 3.1 描述 4、npm audit 4.1 简介 4.2 审计签名 4.3 操作示例 4.4 配置 audit-level dry-run force json package-lock-only omit foreground-scripts …...
【ES6】Promise推荐用法
一般来说,不要在then()方法里面定义 Reject 状态的回调函数(即then的第二个参数),总是使用catch方法。 // bad promise.then(function(data) {// success}, function(err) {// error});// good promise.then(function(data) { //…...
【JavaScript】版本判断
用于客户端和服务端进行版本更新判断使用,如有BUG,还望指出 效果 console.log(isAllowUpdate(1,2.0.0), // trueisAllowUpdate(2.0,2.0.0), // falseisAllowUpdate(2.0,2.0.1), // trueisAllowUpdate(2.1.1,2.1.2), // trueisAllowUpdate(2.1.3,2.1.2),…...
Nano编辑器安装使用指南
关于nano Nano编辑器是一个命令行文本编辑器,具有简单易用的界面和一些基本功能。 Nano小巧友好,提供许多额外的特性,例如交互式的查找和替换、定位到指定的行列、自动缩进、特性切换、国际化支持、文件名标记完成等。 Nano是为了代替闭源的…...
Java版电子招投标管理系统源码-电子招投标认证服务平台-权威认证
项目说明 随着公司的快速发展,企业人员和经营规模不断壮大,公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境,最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范,以及…...
Java String类(1)
String类的重要性 我们之前在C语言中已经涉及到字符串了,但是在C语言中要表示字符串只能使用字符数组或者字符指针,可以使用标准库提供的字符串系列函数完成大部分操作,但是这种将数据和操作数据的方法分离开的方式不符合面向对象的思想&…...
渗透测试漏洞原理之---【CSRF跨站请求伪造】
文章目录 1、CSRF概述1.1、基本原理1.1.1、基本概念1.1.2、关键点1.1.3、目标 1.2、CSRF场景1.2.1、银行支付转账1.2.2构造虚假网站1.2.3、场景建模 1.3、CSRF类别1.3.1、POST方式 1.4、CSRF验证1.4.1、CSRF PoC Generator 2、CSRF攻防2.1、CSRF实战2.1.1、与XSS 漏洞相结合 2.…...
带量采购药品数据查询集采分析平台(建议收藏!)
药品集采常态化下对不同中标企业的影响不尽相同,对于市场份额较大且拥有多款重要药品的大型企业来说,集采能够保持其市场份额,尽管被集采的药品可能会面临销售下降的局面,但该企业还有其他产品可以填补,整体影响不大。…...
概念解析 | 无线感知的新篇章:异构网络感知的原理与挑战
注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:异构网络感知。 无线感知的新篇章:异构网络感知的原理与挑战 Interference Management in HetNets 在当今的无线通信领域,我们面临着一个重大的挑战:如何在有限的频谱资源…...
【大数据模型】让chatgpt为开发增速(开发专用提示词)
汝之观览,吾之幸也!本文主要聊聊怎样才能更好的使用提示词,给开发提速,大大缩减我们的开发时间,比如在开发中使用生成表结构脚本的提示词,生成代码的提示词等等。 一、准备 本文主要根据Claude进行演示&am…...
读书笔记-《ON JAVA 中文版》-摘要23[第二十章 泛型-2]
文章目录 第二十章 泛型5. 泛型擦除5.1 泛型擦除5.2 迁移兼容性5.3 擦除的问题5.4 边界处的动作 6. 补偿擦除7. 边界8. 通配符8.1 通配符8.2 逆变 9. 问题10. 动态类型安全11. 泛型异常 第二十章 泛型 普通的类和方法只能使用特定的类型:基本数据类型或类类型。如果…...
【爬虫】5.6 Selenium等待HTML元素
目录 任务目标 创建Ajax网站 创建服务器程序 Selenium XX 等待 1. Selenium强制等待 2. Selenium隐性等待 3. Selenium循环等待 4. Selenium显示等待 等待方法 任务目标 在浏览器加载网页的过程中,网页的有些元素时常会有延迟的现象,在HTML元素…...
Admin.Net中的消息通信SignalR解释
定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...
linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...
多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...
go 里面的指针
指针 在 Go 中,指针(pointer)是一个变量的内存地址,就像 C 语言那样: a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10,通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...
rknn toolkit2搭建和推理
安装Miniconda Miniconda - Anaconda Miniconda 选择一个 新的 版本 ,不用和RKNN的python版本保持一致 使用 ./xxx.sh进行安装 下面配置一下载源 # 清华大学源(最常用) conda config --add channels https://mirrors.tuna.tsinghua.edu.cn…...
macOS 终端智能代理检测
🧠 终端智能代理检测:自动判断是否需要设置代理访问 GitHub 在开发中,使用 GitHub 是非常常见的需求。但有时候我们会发现某些命令失败、插件无法更新,例如: fatal: unable to access https://github.com/ohmyzsh/oh…...
渗透实战PortSwigger Labs指南:自定义标签XSS和SVG XSS利用
阻止除自定义标签之外的所有标签 先输入一些标签测试,说是全部标签都被禁了 除了自定义的 自定义<my-tag onmouseoveralert(xss)> <my-tag idx onfocusalert(document.cookie) tabindex1> onfocus 当元素获得焦点时(如通过点击或键盘导航&…...
