Rest 何时以及如何更新缓存
我有一个服务a和一个服务B 服务A是一个RESTAPI,它将服务B需要的一些相关信息存储在数据库中 服务B处理大量流量,并不断使用卡夫卡主题的消息。每条消息都需要来自服务A的一些信息。但是这些信息很少改变,最多每天改变一次 因此,为了避免经常访问RESTAPI以获取很少更改的信息,我将实现一个缓存。(不使用缓存也会带来一直查询数据库的问题)。服务B将首先命中缓存,如果没有所需数据,则只命中A一次 问题来了 如果服务A更新其信息,我需要立即更新缓存 这样做的最佳方式是什么 1) 我可以在RESTAPI中实现一些东西,让B注意到它需要更新他的缓存,但是在关注点分离和封装方面,A知道B处理内部缓存,这不坏吗?(我想是的) 2) 我可以在B中实现一个池(并让B检查信息是否每X次更改一次),或者让缓存每X次更新一次。但这样我就有可能无法立即更新信息 3) 是否可以在a中缓存此信息?至少我避免了查询数据库,但没有触及API:/ 有没有更好的处理方法 谢谢 根据这句话:“如果服务A更新其信息,我需要立即更新缓存”,那么根据我的经验,您的两个选择将是某种形式的分布式缓存:Rest 何时以及如何更新缓存,rest,caching,architecture,Rest,Caching,Architecture,我有一个服务a和一个服务B 服务A是一个RESTAPI,它将服务B需要的一些相关信息存储在数据库中 服务B处理大量流量,并不断使用卡夫卡主题的消息。每条消息都需要来自服务A的一些信息。但是这些信息很少改变,最多每天改变一次 因此,为了避免经常访问RESTAPI以获取很少更改的信息,我将实现一个缓存。(不使用缓存也会带来一直查询数据库的问题)。服务B将首先命中缓存,如果没有所需数据,则只命中A一次 问题来了 如果服务A更新其信息,我需要立即更新缓存 这样做的最佳方式是什么 1) 我可以在RESTA
希望有帮助 在@CapnSchwenk的回答中添加第三个要点
这是一致性保证的问题,也是分布式系统中的核心问题 您的场景包含三个服务:A、B和数据库。 如果B在任何情况下都不能使用过时数据,则有两种选择: