gpt4 book ai didi

java - 在 Java 中与多个打开的应用程序共享文件存储索引

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:21:05 26 4
gpt4 key购买 nike

我正在为 Java 编写一个 HTTP 缓存库,我试图在启动两次的同一个应用程序中使用该库。我希望能够在这些实例之间共享缓存。

最好的解决方案是什么?我还希望能够写入同一个存储,并且它应该对两个实例都可用。

现在我有一个可用于缓存的文件的基于内存的索引,这不能在多个 VM 之间共享。它在初创公司之间序列化,但这不适用于共享缓存。

根据 HTTP 规范,我不能只将文件映射到 URI,因为基于请求的相同负载可能会有所不同。例如,我可能有一个在“接受语言” header 上有所不同的请求:在这种情况下,我将为每个指定不同语言的后续请求提供不同的文件。

有什么想法吗?

最佳答案

首先,当周围有多个缓存时,您确定要编写自己的缓存吗?像这样的东西:

前两个是用 Java 编写的,第三个可以从 Java 访问。前两个还处理分布式缓存,我认为这是您所要求的一般情况。当他们启动时,他们希望连接到其他成员,以便他们在实例之间保持一致的缓存。对一个的更改反射(reflect)在各个实例中。它们可以设置为通过多播或指定的特定服务器列表进行连接。

Memcached 通常以略有不同的方式工作,因为它在您正在运行的 Java 进程外部运行,因此所有启动的 Java 实例都将与一个公共(public)服务对话。您可以将 memcached 设置为以分布式方式工作,但它通过对 key 进行散列来实现,以便可以根据您要查找的内容来确定要连接的服务器。

做一个内容一致的真正的分布式缓存很难做好,这就是为什么我建议查看现有的库。如果您想自己做,查看列出的那些以了解它们是如何进行的并考虑使用像 JGroups 这样的东西作为您的底层机制仍然会有所帮助。

关于java - 在 Java 中与多个打开的应用程序共享文件存储索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/299843/

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