gpt4 book ai didi

java - 如何向所有运行 Web 应用程序的服务器广播缓存无效消息?

转载 作者:搜寻专家 更新时间:2023-10-31 20:28:53 24 4
gpt4 key购买 nike

我有一个基于 Java 的 Web 应用程序托管在 AWS 上。它以读取为主,因此缓存从数据库中检索的对象以提高性能非常有意义。

当我更新一个对象时,我希望能够向所有服务器广播该对象已被保存并且它应该从所有本地缓存​​中失效。

不需要是实时的。陈旧的对象很烦人,需要在大约 20 秒内刷新。用户会注意到他们是否停留了几分钟。缓存失效不必在对象保存的毫秒级发生。


我的想法

  • 我研究过 jGroups 等广播技术,但 AWS 不支持 jGroups。
  • 我不认为 Amazon 的 SQS 消息服务可以做成广播服务。
  • 我正在考虑为此目的使用数据库:我会将事件写入数据库表并让每个服务器每隔几秒轮询一次该表以获取新的列表项。

最佳答案

我想到了两个选项。第一种是使用 Amazon SNS ,它可以使用 SQS 作为交付后端。不过,这可能有点矫枉过正,因为它被设计为许多交付类型的前端,包括电子邮件和 SMS。

我尝试的方法类似于 cometd 式推送通知。让每台带有缓存的机器打开与负责处理更新的服务器的长期 TCP 连接,并从该服务器向所有正在收听的人发送一条紧凑的“无效”消息。作为一种特殊用途的协议(protocol),这可以以最小的开销完成,也许只需发送对象 ID(如果需要,还可以发送类)。

关于java - 如何向所有运行 Web 应用程序的服务器广播缓存无效消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18512102/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com