我们需要构建一个复制的缓存来缓存第三方应用程序数据,以获得更好的性能。数据包括字符串(消息)和图像(个人资料照片)。第三方应用程序不支持Webhooks或任何其他api来保持数据同步。我们需要构建一种实现某种提前刷新的自动刷新策略。
大多数缓存库包括google的guava,ehcache,cache2k等缓存内存中的数据。如果使用内存中的复制缓存,我们会遇到一些问题
由于数据库/文件距离应用服务器更近,因此与第三方服务器相比,性能会更好。请注意,我们的堆栈中已经有一个数据库(Oracle),因此我们不想为此引入另一个数据库。
缓存库需要支持来自多个进程的并发写入。是否有一个支持上述要求的Java库?
谢谢。
答案 0 :(得分:0)
我们有类似的要求,因此我们继续将MongoDB改编为nosql数据库。
这实际上取决于应用程序的类型,但是对于微服务和REST / Json适应而言,使用mongodb可能是您的正确选择。具有正确配置和replicset的MongoDB是非常强大且可扩展的解决方案,可以解决具有正确索引的查找字段的数百万条记录的性能。
MongoDB的设计方式是,它使用部署它的服务器的大部分内存,并将数据保留在内存中,这使其与缓存一样好。从应用程序的角度来看,它是您的同步数据-完全可扩展,并使用高性能磁盘(如SSD)来对持久数据进行数据检索。
文档中还有许多受支持的功能,例如过期等 ,这使得管理和清除缓存来控制空间非常容易。
您的所有应用程序服务器都可以连接到mongo副本集,并且您还可以启用从辅助mongo服务器的读取,以充分利用mongo数据库副本集。
要考虑的其他选项是Apache cassandra和其他nosql解决方案。
希望对您有帮助!