我有一个Java Web服务器,目前使用Guava库处理我的内存缓存,并且我经常使用它。现在我需要扩展到多个服务器(2+)以进行故障转移和负载均衡。在此过程中,我从进程内缓存切换到了Memcache(外部服务)。但是,现在几乎每次调用都要进行一次外部调用到另一台服务器,这比内存缓存慢得多,让我不是特别满意。
我考虑不从Memcache中获取数据,而是在每个服务器上继续使用本地缓存,并使用RabbitMQ通知其他服务器何时更新其缓存。因此,如果一个服务器对底层数据进行更改,它将向所有其他服务器广播消息,告诉它们它们的缓存现在无效了。每个服务器都在广播和监听缓存失效消息。
有人知道这种方法可能存在什么问题吗?我有点紧张,因为我找不到其他在生产环境中使用此方法的人。我看到唯一的问题是每个服务器需要更多的内存(内存缓存),并且任何给定服务器获取更新的数据可能需要更长时间。还有其他注意事项吗?