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