java调用uaa接口认证过,如何实现SpringCloud中独立UAA与其他Micro-Service微服务的缓存设计?...

本文探讨了在微服务架构中,如何处理UAA(统一认证授权服务)数据变更后缓存的更新问题。当UAA用户权限发生变化时,微服务中的缓存未能及时刷新,导致数据不一致。作者提出了两种解决方案:一是每次请求先检查UAA数据,但这会增加UAA的压力;二是通过RabbitMQ消息通知,但会导致大量消息和处理工作。寻求一种有效的方法,使服务在UAA数据变更后能清除无效缓存,同时避免频繁交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

无法解决微服务在访问UAA后的方法缓存 在UAA数据变更后的清除(刷新)

问题出现的环境背景及自己尝试过哪些方法

1、有一个自定义的UAA,关于用户信息添加了获取缓存,然后实现了操作用户清理缓存,这里没有问题。

2、有若干个微服务,调用了UAA提供的接口,然后结合调用了微服务自身的功能获取了数据,然后将数据进行缓存了。

使用的是部门主管的权限(主管的登录名login),获取的是部门所有人。

3、对UAA的数据进行刷新(将主管的权限调整为普通用户, 升降级操作),再次进行第二步的操作,参数为主管的登录名login,进来后就直接走了缓存,而缓存中的数据是上次获取的作为主管的权限获取的全部数据,不管是权限多了还是少了,获取的权限都是原先主管的数据。

4、解决方案1:第二步的数据改为先获取UAA数据(判断有没有变动),然后获取服务内数据。改方案的问题是,每次请求都会访问UAA导致UAA压力过大,所以决定还是要在服务内设缓存。

5、解决方案2:在UAA变动后发送RabbitMq,各个服务监听到后作出相应的处理,问题在于每有一个微服务的一个地方调用,UAA就要发送一个相关的消息,服务监听方法还要作出相应的处理。这个是不到万不得已也不想使用。

预期的功能

有个办法解决服务的缓存在UAA数据变更后能够清除当前的无效缓存或者再次进入当前服务的缓存方法是不会命中缓存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值