统一白名单服务治理组件

服务治理组件:统一白名单控制

一、背景与问题

在微服务架构下,白名单控制几乎是必需能力:

  • 接口级访问控制(IP / 应用 / 用户)
  • 灰度、内测、运营活动限制
  • 风控与安全兜底
  • 临时封禁、应急止血

但现实中常见问题是:

  • 白名单逻辑散落在各个服务、Controller、网关
  • 配置方式不统一(DB / Redis / Nacos / 配置文件)
  • 修改不实时,需要发版
  • 没有审计、没有版本

👉 结论:必须抽成一个统一的服务治理组件


二、设计目标

目标说明
统一入口所有白名单能力一个组件解决
动态生效修改配置秒级生效
多维度支持 IP / 用户 / 应用 / Token
低侵入一个注解即可接入
高性能高 QPS 场景无感知
可审计操作可追溯

三、整体架构

┌──────────────┐ │ 管理后台 │ └──────┬───────┘ │ ┌──────▼───────┐ │ 配置中心 │ (Nacos / Apollo) └──────┬───────┘ │ 推送 ┌─────────▼─────────┐ │ 白名单治理组件 │ │ (Starter) │ └──────┬───────┬───┘ │ │ ┌──────▼───┐ ┌─▼────────┐ │ Gateway │ │ 业务服务 │ └──────────┘ └──────────┘

四、白名单模型设计

4.1 核心数据结构

publicclassWhiteListRule{privateStringbizCode;// 业务标识privateRuleTyperuleType;// IP / USER / APPprivateSet<String>values;// 白名单值privatebooleanenabled;}
publicenumRuleType{IP,USER_ID,APP_ID}

五、组件使用方式(重点)

5.1 注解定义

@Target({ElementType.METHOD,ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)public@interfaceWhiteList{StringbizCode();booleanenabled()defaulttrue;}

5.2 使用示例

@WhiteList(bizCode="ORDER_CREATE")@PostMapping("/order/create")publicOrderDTOcreateOrder(){returnorderService.create();}

⚠️Controller / Service 都可用,低侵入


六、核心拦截逻辑

6.1 AOP 拦截

@Around("@annotation(whiteList)")publicObjectaround(ProceedingJoinPointpjp,WhiteListwhiteList)throwsThrowable{WhiteListRulerule=whiteListManager.getRule(whiteList.bizCode());if(rule==null||!rule.isEnabled()){returnpjp.proceed();}booleanpass=ruleMatcher.match(rule);if(!pass){thrownewBizException("无白名单权限");}returnpjp.proceed();}

七、匹配策略设计

7.1 策略接口

publicinterfaceWhiteListMatchStrategy{booleanmatch(WhiteListRulerule);}

7.2 IP 示例

publicclassIpMatchStrategyimplementsWhiteListMatchStrategy{@Overridepublicbooleanmatch(WhiteListRulerule){Stringip=RequestContext.getClientIp();returnrule.getValues().contains(ip);}}

👉典型策略模式


八、配置动态更新

8.1 配置中心

  • Nacos / Apollo
  • JSON 结构存储
  • 支持推送
{"ORDER_CREATE":{"ruleType":"IP","values":["10.1.1.1","10.1.1.2"],"enabled":true}}

8.2 本地缓存

ConcurrentHashMap<String,WhiteListRule>LOCAL_CACHE;
  • 启动加载
  • 监听变更
  • 原子替换

九、高并发优化点

方案
读取纯内存
无锁设计
热点本地缓存
性能单次判断 < 0.1ms

👉2W+ QPS 无压力


十、网关层 vs 服务层

10.1 网关层

  • IP 黑白名单
  • 全局流量挡板

10.2 服务层(推荐)

  • 业务语义清晰
  • 可精细到方法级
  • 不依赖网关

👉最佳实践:两层都要


十一、审计与治理

  • 操作人
  • 操作时间
  • 变更前 / 后
  • 变更原因

建议独立表:whitelist_audit_log


十二、常见坑

  1. 白名单写死在代码里 ❌
  2. 修改必须发版 ❌
  3. DB 实时查 ❌
  4. 无兜底开关 ❌

十三、总结一句话

统一白名单治理 = 注解 + AOP + 策略模式 + 本地缓存 + 配置中心

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

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

相关文章

企业级远控赋能跨境电商:企业如何实现云端运营提效?

中国企业通过跨境电商实现“B to C”业务出海所带来的贸易增量&#xff0c;是支撑经济发展“外循环”的重要组成部分。随着我国数字经济与外贸规模持续扩大&#xff0c;跨境电商出口保持强劲增长态势。 数据显示&#xff0c;截至2025年前三季度&#xff0c;中国跨境电商进出口总…

专科生必看!10个高效降aigc工具推荐,避坑指南来啦

专科生必看&#xff01;10个高效降aigc工具推荐&#xff0c;避坑指南来啦 AI降重工具&#xff0c;让论文更“自然” 随着人工智能技术的不断发展&#xff0c;越来越多的专科生在撰写论文时开始依赖AI辅助工具。然而&#xff0c;AI生成的内容往往带有明显的痕迹&#xff0c;导致…

archlinux 更新遇到问题

有可能是长期不更新出现的 可以尝试# 2. 更新密钥环 sudo pacman -Sy archlinux-keyring然后再更新# 4. 完整系统更新 sudo pacman -Syu如果失败,可以将报错的包删除,再次执行系统更新

手机电脑都能用!跨平台体验最佳的视频提取文字在线免费网站盘点

在自媒体创作、职场办公、学习备考等场景中&#xff0c;我们常需要从视频中提取文字——可能是复刻爆款文案、整理会议纪要&#xff0c;也可能是转写网课重点。手动转录不仅耗时费力&#xff0c;准确率还难以保证&#xff0c;而一款优质的视频提取文字在线免费网站&#xff0c;…

防雷接地材料批发避坑指南|选对材料=省成本+保安全,工程采购必看!

建筑、电力、通信工程中,防雷接地从来不是“配角”——一次材料选型失误,可能导致工程返工、验收失败,甚至埋下雷电灾害隐患,让前期所有投入付诸东流!作为深耕防雷接地材料批发领域 10 余年的从业者,见过太多采购…

【MyCat】第6章----HA 机制的 Mycat 高可用

文章目录6.1 高可用方案6.2 安装配置 HAProxy1、 安装 HAProxy2、 启动验证6.3 配置 Keepalived1、 安装 Keepalived2、 启动验证6.4 测试高可用1、 测试步骤在实际项目中&#xff0c;Mycat 服务也需要考虑高可用性&#xff0c;如果 Mycat 所在服务器出现宕机&#xff0c;或 My…

2026年度深度盘点原创音乐人常备的5款AI编曲软件

在当今数字化浪潮席卷的音乐领域&#xff0c;AI编曲软件正逐渐成为原创音乐人手中的得力工具。它们以强大的技术能力&#xff0c;为音乐创作带来了前所未有的便捷与创新。这些软件能够快速生成旋律、编排和声、创作歌词&#xff0c;甚至模拟各种乐器音色和演唱风格&#xff0c;…

专业级编曲师的选择,深度盘点原创音乐人推荐的5款AI编曲软件

在当今科技飞速发展的时代&#xff0c;音乐创作领域也迎来了一场前所未有的变革&#xff0c;AI编曲软件的出现为音乐人们带来了全新的创作体验和无限可能。这些软件凭借强大的人工智能技术&#xff0c;能够高效地完成编曲、作曲、填词等一系列音乐创作任务&#xff0c;极大地提…

【MyCat】第7章---- Mycat 安全设置

文章目录7.1 权限配置1、 user 标签权限控制7.2 SQL 拦截1、 白名单2、 黑名单7.1 权限配置 1、 user 标签权限控制 目前 Mycat 对于中间件的连接控制并没有做太复杂的控制&#xff0c;目前只做了中间件逻辑库级别的读写权限控制。是通过 server.xml 的 user 标签进行配置。 …

如何打造摄影作品集?

&#x1f4f7;我是一个摄影师&#xff0c;我有很多图片&#xff0c;我想搭建一个像小红书这样排版的相册&#xff0c;需要支持图片分类&#xff0c;平时方便分享给客户看样片 看我们&#xff0c;快看我们&#x1f64b;土著相册可以完全满足你的全部需求❗❗❗ ⬇️下面将介绍如…

【MyCat】第2章 ----安装启动

文章目录2.1 安装1、解压后即可使用2、三个配置文件2.2 启动2.3 登录2.1 安装 1、解压后即可使用 安装包&#xff1a;Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz 解压缩文件拷贝到 linux 下 /usr/local/ 2、三个配置文件 ①schema.xml&#xff1a;定义逻辑库&a…

【ShardingJDBC 】【笔记】---- Sharding-JDBC 读写分离 配置 MySQL 主从

文章目录 第一步 新增 mysql 实例第二步 修改主、从库的配置文件新增内容如下第三步 创建用于主从复制的账号第四步 设置从库向主库同步数据Sharding-JDBC 读写分离配置 第一步 新增 mysql 实例 复制原有 mysql 如&#xff1a;D:\mysql-5.7.25(作为主库) -> D:\mysql-5.7.2…

【MyCat】第1章 ----入门概述

文章目录 第一章:入门介绍2、为什么要用Mycat&#xff1f;1、读写分离2、数据分片3、多数据源整合 3 、原理 第一章:入门介绍 Mycat 是数据库中间件。 1、数据库中间件 中间件&#xff1a;是一类连接软件组件和应用的计算机软件&#xff0c;以便于软件各部件之间的沟通。 例子…

【MyCat】第3章 ----搭建读写分离

文章目录 3.1 搭建一主一从1、 搭建 MySQL 数据库主从复制2、 修改 Mycat 的配置文件 schema.xml3、 启动 Mycat4、 验证读写分离 3.2 搭建双主双从1、 搭建 MySQL 数据库主从复制&#xff08;双主双从&#xff09;2、 修改 Mycat 的配置文件 schema.xml3、 启动 Mycat4、 验证…

【MyCat】第4章 ----垂直拆分——分库

文章目录 4.1 如何划分表4.2 实现分库1、 修改 schema 配置文件2、 新增两个空白库3、 启动 Mycat4、 访问 Mycat 进行分库 一个数据库由很多表的构成&#xff0c;每个表对应着不同的业务&#xff0c;垂直切分是指按照业务将表进行分类&#xff0c;分布到不同 的数据库上面&…

【MyCat】第5章----水平拆分——分表

文章目录5.1 实现分表1、 选择要拆分的表2、 分表字段3、 修改配置文件 schema.xml4、 修改配置文件 rule.xml5、 在数据节点 dn2 上建 orders 表6、 重启 Mycat&#xff0c;让配置生效7、 访问 Mycat 实现分片5.3 常用分片规则1、 取模2、 分片枚举3、 范围约定5.4 全局序列1、…

​​​​​​​刷爆朋友圈的“香蕉模型”,到底是什么来头?

关注我们 最近AI圈子又变天了 大家都在讨论一个新词 叫做香蕉模型 你可能第一次听说 但在极客圈它已经杀疯了 为什么叫它香蕉 因为它主打的就是 剥皮即食 简单好用且能量巨大 相比于那些庞大的巨无霸模型 香蕉模型更轻量 反应速度更快 而且成本低到令人发指 很多做…

深入解析:python3GUI--短视频社交软件 By:Django+PyQt5(前后端分离项目)

深入解析:python3GUI--短视频社交软件 By:Django+PyQt5(前后端分离项目)2026-01-26 20:40 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x:…

hot100 105.从前序与中序遍历序列构造二叉树

见代码随想录 105.从前序与中序遍历构造二叉树

hot100 437.路径总和Ⅲ

思路&#xff1a;前缀和解法&#xff0c;利用前缀和求节点值之和等于targetSum的路径的数目&#xff08;满足路径不需要从根节点开始&#xff0c;也不需要在叶子节点结束&#xff0c;但是路径方向必须是向下的&#xff0c;只能从父节点到子节点&#xff09;。 一、前缀和定义&…