如果我将 spring-session jdbc 添加到我的 vaadin-spring-boot-application 中,该应用程序会非常慢,并且会在几秒钟后重新加载整个页面。其他一切看起来都工作正常。
我没有注意到这个问题,我已经研究了这个问题几天并得到了这个Github issue和 Vaadin microservices configuration但在这些中,我没有找到合适的解决方案来解决这个问题,任何人都可以给我一个真实的例子来实现Vaadin上的Spring session ?
问候。
最佳答案
像 spring-session 这样的 session 复制方案假设 session 相对较小,并且内容对多个请求线程的并发修改不敏感。对于典型的 Vaadin 应用程序,这两个假设都不成立。
第一个问题是, session 中通常有 100KB 到 10MB 的数据需要从数据库中获取、反序列化、更新,然后针对每个请求再次序列化并存储在数据库中。第二个问题是 Vaadin 在 session 中存储一个锁实例,并使用它来确保不会有多个请求线程同时使用同一 session 。
要将 session 序列化到持久存储,您需要确保负载均衡器使用粘性 session ,并且通常还使用 Hazelcast 等高性能解决方案,而不仅仅是针对每个请求单独进行反序列化和序列化。
有关更多详细信息,您可以查看这两篇文章:
关于spring-boot - 无法在 Vaadin 上使用 Spring session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64004672/