首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解决在微服务中不使用分布式缓存时的缓存驱逐问题?

问如何解决在微服务中不使用分布式缓存时的缓存驱逐问题?
EN

Software Engineering用户
提问于 2019-03-08 09:49:31
回答 1查看 392关注 0票数 1

假设我们不会使用分布式缓存,因为我们希望我们的微服务是独立的,并且它们没有多个单一的故障点。要么我们将有内存缓存(每个微服务实例中的简单hashmap ),要么每种服务都有一个REDIS。

如果服务A需要来自服务B的一些数据,那么它将缓存REDIS-A中的值。问题来了:当B在接收到某个修补程序请求后更改数据时,它如何也可以使REDIS-A中的数据失效?

比方说,我们不想为此使用任何形式的消息传递(这不是过火了吗?)

EN

回答 1

Software Engineering用户

发布于 2019-03-08 14:34:14

哦,分布式系统的乐趣。解决这一问题的一般方法有两种:

您可以继续使用这种缓存策略,并接受服务A通常会收到过时的数据。这只是一个性能与一致性的权衡。您可以根据需要对此折衷进行优化,例如,在一段可接受的短时间之后,将缓存项过期。

或者:

您可以停止维护服务A的缓存。相反,它总是通过B的普通API直接联系服务B,就像普通的微服务一样。

因此,服务B有责任以某种方式回答这一请求。例如,B可以为最近的请求维护缓存。B还能够在数据更改时过期缓存项,从而能够提供一致的响应。

此缓存是B. A的内部缓存,不需要了解此缓存,只需使用B的正常接口即可从中获益。

票数 3
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/388267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档