[背景]
我正在研究用于信号分析/图像处理的java服务器端进程。 主服务器进程将接受来自用户的请求/输入参数(XML / Image)。 然后它将请求/输入分配给多个处理引擎。 处理引擎是用Java编写的。他们将执行JNI调用以进行图像/信号处理。他们将通过RMI进行沟通。
将使用不同的输入参数再次处理相同的请求,并且输入参数非常大(图像大小:1-2MB)。 我们不希望每次都将请求发送到处理引擎。 我们在处理引擎中缓存请求/输入。 JNI对象是有状态的,并且也保存在处理引擎中。 相同的计算将始终由相同的处理引擎计算。
[问题]
我们无法准确预测实时使用情况,工作量分布也不均匀。 由于相同的请求总是使用相同的处理引擎,因此某些处理引擎可能会过载而某些处理引擎处于空闲状态。
[条件]
以下是我想要实现的目标: - 动态工作负载分配:请求可以由不同的引擎处理。 - 数据的低延迟缓存(大型XML / Imagine):我们希望使用分布式缓存,而不是通过RMI将输入/数据发送到引擎。 - JNI对象也将存储在分布式缓存中并保持其状态
[问题]
感谢您的任何意见!
答案 0 :(得分:2)
Ehcache在我工作的几个不同网站很受欢迎。我听说的指示是积极的,但他们的用例有点简单。即便如此,缓存的项目也不应对缓存的性能产生任何影响,除非可能调整问题(并且您说过您的项目相当大)。
不明确的是你曾经说过你不想每次都发送参数,但是每个请求它们都不同。试图缓存或绑定每次不同的东西对你没有帮助,你最好在这种情况下完全忘记缓存,并且只需要承担发送请求参数的开销。也许我错过了什么!?