Ignite Web Session Clustering design delima

时间:2017-09-07 17:20:06

标签: session spring-boot ignite session-management

我有关于Ignite网络会话群集的设计问题。

我有带UI的springboot应用程序。它集群应用程序,即负载均衡器后面的springboot app的多个实例。我正在使用org.apache.ignite.cache.websession.WebSessionFilter()拦截请求并为任何传入请求创建\ manage session。

我有2个选项

  1. 将ignite节点嵌入springboot应用程序中。因此,将这些嵌入式点火节点(在每个springboot JVM上)作为集群的一部分。这样,请求会话将在整个springboot群集中进行复制。在负载均衡器上,我不必保持粘性连接。请求可以循环或最小负载算法转到任何应用程序。
  2. 几点考虑

    1. 建筑师很简单。我不担心缓存是什么 等等。
    2. 现在正在嵌入缓存,它使用CPU和内存 来自app jvm。它有可能使我的资源应用程序匮乏。

      1. 点击应用程序JVM外部运行的集群。所以现在我在springboot app中运行客户端节点并连接到主要的点火集群。
    3. 几点考虑

      1. 由于任何原因,如果客户端节点无法连接到主要点火 簇。我是否必须手动管理会话然后推送 那些会话在以后手动指向点火集群?
      2. 如果我在本地管理会话,我需要进行粘连 负载均衡器。如果可能,我想避免。
      3. 我倾向于接近2,但想要简单。所以如果客户端节点 无法创建会话(覆盖 org.apache.ignite.cache.websession.WebSessionFilter())它重定向 用户指向应用程序已关闭或其他应用程序节点的页面 集群。
      4. 我可以采取其他任何设计方法吗? 我在任何一种方法中都忽略了什么?

        如果您已经处理过,请分享您的想法。

        提前致谢。 至尊

1 个答案:

答案 0 :(得分:1)

如果您有会话和粘性会话的本地缓存,为什么还需要使用点火?

然而,最好是点燃,你的应用程序将有HA,如果某个节点失败,整个应用程序仍然可以正常工作。 我同意您应该拆分应用群集并点燃群集,但是,我认为您不应该关心服务器和客户端连接问题。 这种问题应该导致500错误,如果你的数据库发生故障或你无法连接它,你会模拟主存储吗?