根据无状态规则,对通过docker部署的应用程序使用ehcache

根据无状态规则,对通过docker部署的应用程序使用ehcache,docker,spring-boot,ehcache,microservices,stateless,Docker,Spring Boot,Ehcache,Microservices,Stateless,我有一个SpringBoot应用程序,我想将它部署到多个docker实例中,在这些实例之前有一个负载平衡。 但是,应用程序使用ehcache来缓存数据库中的一些数据。它使应用程序有状态。 因此,如果没有会话粘性,同一个客户可能会遇到不同的docker实例,并看到不同的结果。 我的问题是,如果我不能在负载平衡中应用session sticky,那么通过docker风格部署具有缓存功能的应用程序,并且仍然遵守应该是无状态的规则的最佳实践是什么?通常将ehcache与terracotta结合起来,以允

我有一个SpringBoot应用程序,我想将它部署到多个docker实例中,在这些实例之前有一个负载平衡。 但是,应用程序使用ehcache来缓存数据库中的一些数据。它使应用程序有状态。 因此,如果没有会话粘性,同一个客户可能会遇到不同的docker实例,并看到不同的结果。
我的问题是,如果我不能在负载平衡中应用session sticky,那么通过docker风格部署具有缓存功能的应用程序,并且仍然遵守应该是无状态的规则的最佳实践是什么?

通常将ehcache与terracotta结合起来,以允许节点之间的分布式缓存


关于

首先,如果您真的有一个纯缓存用例,那么不应该有正确性影响,而应该只有性能影响。当然,这本身对您的应用程序来说是一件坏事

但实际上,如果您想使用缓存来提供性能,同时又想拥有无粘性会话的多节点能力,就必须进入分布式缓存领域。这将使您能够在不同节点之间共享缓存内容,从而使会话中的给定请求命中应用程序的任何节点(更)透明


在Ehcache世界中,这意味着使用Terracotta服务器备份缓存,请参阅以了解详细信息。

我在这里解释了集群缓存如何帮助每个docker实例共享相同的缓存

缓存应该只是一种优化,您的用户应该看到相同的想法,而不管他们遇到的实例是什么。重新思考您的应用程序设计或向我们提供更多数据。