针对无状态规则,对通过 docker 部署的应用程序使用 ehcache
Use ehcache for application deployed via docker against the stateless rule
我有一个 spring-boot 应用程序,我想将它部署到多个 docker 实例中,并且在实例之前有一个负载平衡。
但是,该应用程序使用 ehcache 来缓存数据库中的一些数据。它使应用程序有状态。
因此,如果没有会话粘性,同一个客户可能会点击不同的 docker 个实例并看到不同的结果。
我的问题是,如果我不能在负载平衡中应用会话粘性,那么通过 docker 样式部署具有缓存功能的应用程序并仍然遵守应该无状态的规则的最佳做法是什么?
通常将 ehcache 与 terracotta 结合使用以允许在节点之间进行分布式缓存。
此致
首先,如果你真的有一个纯粹的缓存用例,那么应该没有正确性影响,只有性能影响。当然,这本身对您的应用程序来说可能是一件坏事。
但实际上,如果你想使用缓存来提供性能,同时拥有多节点能力而没有粘性会话,你必须进入分布式缓存领域。这将使您能够在不同节点之间共享缓存内容,从而使对话中的给定请求(更)透明以命中应用程序的任何节点。
在 Ehcache 世界中,这意味着使用 Terracotta 服务器支持缓存,详情请参阅 the documentation。
我在这里解释 devoxx video 集群缓存如何帮助你们每个人 docker 实例共享相同的缓存
我有一个 spring-boot 应用程序,我想将它部署到多个 docker 实例中,并且在实例之前有一个负载平衡。 但是,该应用程序使用 ehcache 来缓存数据库中的一些数据。它使应用程序有状态。 因此,如果没有会话粘性,同一个客户可能会点击不同的 docker 个实例并看到不同的结果。 我的问题是,如果我不能在负载平衡中应用会话粘性,那么通过 docker 样式部署具有缓存功能的应用程序并仍然遵守应该无状态的规则的最佳做法是什么?
通常将 ehcache 与 terracotta 结合使用以允许在节点之间进行分布式缓存。
此致
首先,如果你真的有一个纯粹的缓存用例,那么应该没有正确性影响,只有性能影响。当然,这本身对您的应用程序来说可能是一件坏事。
但实际上,如果你想使用缓存来提供性能,同时拥有多节点能力而没有粘性会话,你必须进入分布式缓存领域。这将使您能够在不同节点之间共享缓存内容,从而使对话中的给定请求(更)透明以命中应用程序的任何节点。
在 Ehcache 世界中,这意味着使用 Terracotta 服务器支持缓存,详情请参阅 the documentation。
我在这里解释 devoxx video 集群缓存如何帮助你们每个人 docker 实例共享相同的缓存