首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Google /Sub和多个接收器

Google /Sub和多个接收器
EN

Stack Overflow用户
提问于 2022-11-20 17:25:11
回答 1查看 34关注 0票数 0

我的用法是:

我有应用程序引擎NodeJS后端的X个实例。我使用作为缓存层。为了最小化Redis的使用,并添加性能,每个后端实例还具有自己的本地缓存。

规则是这样的,当请求进入后端实例时:

  • 首先检查是否找到本地缓存
  • ,如果没有找到
  • ,请查看Redis cache
  • 使用来自Redis

的数据更新本地缓存

本地缓存超时比Redis缓存快得多,但我仍然希望能够向所有实例发送“清除缓存”消息。

整个程序运行得非常好,但是我希望能够通过发送一个pub/sub消息来更新本地缓存,然后所有后端实例都会接收到该消息,从而清除本地缓存。

是的,我可以选择不使用本地缓存,只使用Redis MemoryStore,但这意味着每个Redis查找的网络流量、响应速度较慢以及更多的Redis资源使用。

这是可能的,还是每个被推送的消息只有一个接收器?我知道接收方可以选择不对消息进行攻击,但是如何确保所有实例都已收到,以及如何知道已经发生了什么,所以ack可以由最后一个实例发送?似乎不可能

EN

回答 1

Stack Overflow用户

发布于 2022-11-21 08:32:27

您的用例是不常见的,但是IMO,您有两个解决方案:

  1. 使用Redis

在redis中放置一个清晰的缓存日期时间。对于每个请求,App实例调用明确的缓存日期时间。如果本地值(以前的清除缓存值,或者如果没有先例调用(新实例情况)为null )在Redis值后面,则清除本地缓存。否则继续

  1. Use PubSub

(不是我想要的)当实例启动时,在PubSub主题上创建一个请求订阅。把信息拉出来。当您收到一个时,清除缓存。

使用PubSub时,当您在主题中发布消息时,它将在所有订阅中重复。使用该模式,所有实例都将有一个订阅,并可以接收消息。

但是,您可以达到订阅配额的数量。若要限制此值,请将过期值设置为1天,以便在没有任何订阅服务器的情况下,在1天后自动清除订阅。

不确定App实例上是否有删除通知,以便让您有时间很好地删除订阅。

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

https://stackoverflow.com/questions/74510347

复制
相关文章

相似问题

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