【发布时间】:2017-09-07 17:20:06
【问题描述】:
我有关于 Ignite 网络会话集群的设计问题。
我有带有 UI 的 springboot 应用程序。它集群应用程序,即负载均衡器后面的多个springboot应用程序实例。我正在使用 org.apache.ignite.cache.websession.WebSessionFilter() 来拦截请求并为任何传入请求创建\管理会话。
我有两个选择
- 在 springboot 应用程序中嵌入 ignite 节点。因此,让这些嵌入式 ignite 节点(在每个 springboot JVM 上)成为集群的一部分。这种方式请求会话在整个 springboot 集群中复制。在负载均衡器上,我不必维护粘性连接。请求可以循环或最小负载算法发送到任何应用程序。
几个注意事项
- 架构师很简单。我不担心缓存 下等。
-
现在缓存被嵌入,它使用 CPU 和内存 来自应用 jvm。它有可能耗尽我的应用程序的资源。
- 在应用程序 JVM 之外运行启动集群。所以现在我在 springboot 应用程序中运行客户端节点并连接到主 ignite 集群。
几个注意事项
- 出于任何原因,如果客户端节点无法连接到主 ignite 簇。我是否必须手动管理会话然后推送 那些会话稍后手动指向点燃集群?
- 如果我在本地管理会话,我需要开启粘性连接 负载均衡器。如果可能的话,我想避免。
- 我倾向于接近 2,但想让它变得简单。所以如果客户端节点 无法创建会话(覆盖 org.apache.ignite.cache.websession.WebSessionFilter()) 它重定向 用户到页面指示应用程序已关闭或到另一个应用程序节点 集群。
还有其他我可以采用的设计方法吗? 我是否忽略了任何一种方法?
如果你已经处理过,请分享你的想法。
提前致谢。 大神
【问题讨论】:
标签: session spring-boot ignite session-management