首页
/ Apache ShenYu中Nacos数据同步下Divide选择器删除问题分析

Apache ShenYu中Nacos数据同步下Divide选择器删除问题分析

2025-05-28 11:10:54作者:滕妙奇

问题背景

在Apache ShenYu网关系统中,Divide插件是一个核心的路由插件,负责HTTP请求的分发。当使用Nacos作为数据同步中心时,Divide选择器的配置信息会被同步到Nacos中,包括选择器配置、代理选择器配置和服务发现配置。

问题现象

在最新版本的Apache ShenYu中,发现当删除一个Divide选择器时,Nacos中仍然会残留该选择器的相关配置数据。具体表现为:

  1. 选择器的主配置被正确删除
  2. 但proxy_selector和discovery配置未被清理
  3. 这些残留配置可能导致系统出现不一致状态

技术分析

经过深入代码分析,发现该问题主要由两个技术原因导致:

  1. 代理选择器删除失败:在解除发现绑定时,ProxySelectorDTO对象缺少id值,且pluginName属性被错误设置。这使得系统无法正确识别和删除对应的代理选择器配置。

  2. 服务发现配置缺失删除逻辑:当前代码中,在删除选择器时没有包含删除相关服务发现配置的逻辑流程,导致这部分配置被遗留。

解决方案

针对上述问题,需要从以下两个方面进行修复:

  1. 完善ProxySelectorDTO对象:在解除发现绑定时,确保ProxySelectorDTO包含完整的id信息,并正确设置pluginName属性,使系统能够准确定位和删除代理选择器配置。

  2. 添加服务发现配置删除逻辑:在选择器删除流程中,增加对相关服务发现配置的清理操作,确保所有关联配置都被正确移除。

影响范围

该问题主要影响以下场景:

  • 使用Nacos作为数据同步中心的Apache ShenYu部署
  • 使用Divide插件并启用了服务发现功能的环境
  • 频繁进行选择器增删操作的系统

最佳实践

为避免类似问题,建议:

  1. 定期检查Nacos中的配置数据一致性
  2. 在进行重要配置变更后,验证相关配置的同步状态
  3. 关注Apache ShenYu的版本更新,及时应用修复补丁

总结

配置数据的完整性和一致性是网关系统稳定运行的基础。这个问题的发现和修复,进一步提升了Apache ShenYu在Nacos数据同步场景下的可靠性。开发团队应持续关注各类数据同步场景下的边界情况,确保系统在各种操作下都能保持数据状态的一致。

登录后查看全文
热门项目推荐

项目优选

收起
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
686
457
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
98
158
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
139
223
leetcodeleetcode
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Java
52
15
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
114
255
Python-100-DaysPython-100-Days
Python - 100天从新手到大师
Python
818
150
cherry-studiocherry-studio
🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端
TypeScript
523
44
continew-admincontinew-admin
🔥Almost最佳后端规范🔥页面现代美观,且专注设计与代码细节的高质量多租户中后台管理系统框架。开箱即用,持续迭代优化,持续提供舒适的开发体验。当前采用技术栈:Spring Boot3(Java17)、Vue3 & Arco Design、TS、Vite5 、Sa-Token、MyBatis Plus、Redisson、FastExcel、CosId、JetCache、JustAuth、Crane4j、Spring Doc、Hutool 等。 AI 编程纪元,从 ContiNew & AI 开始优雅编码,让 AI 也“吃点好的”。
Java
127
29
CangjieMagicCangjieMagic
基于仓颉编程语言构建的 LLM Agent 开发框架,其主要特点包括:Agent DSL、支持 MCP 协议,支持模块化调用,支持任务智能规划。
Cangjie
590
44
MateChatMateChat
前端智能化场景解决方案UI库,轻松构建你的AI应用,我们将持续完善更新,欢迎你的使用与建议。 官网地址:https://matechat.gitcode.com
705
97