代码之家  ›  专栏  ›  技术社区  ›  morechilli

通过短暂且独占的用户会话实现有状态应用程序的kubernetes部署?

  •  0
  • morechilli  · 技术社区  · 6 年前

    我正在研究一个系统的设计,在这个系统中,希望许多部分能够很好地映射到基于kubernetes的部署,成为单用途、无状态的服务。

    不过,有些部分不太可能很好地适应模型,我正在寻求帮助,以了解哪些选项可能是最好的探索这些部分。

    具体来说,我希望有一些应用程序形成一个高度交互的ui的后端。后端将基于连续或频繁的用户交互显示从大型数据集派生的视图。想想像单人游戏或CAD程序之类的东西。

    因此,这些应用程序需要频繁地本地访问从远程存储加载的大数据,还需要访问不断更新的用户状态,这些状态可能太大,无法在用户交互之间序列化和反序列化。这种状态目前只是作为易失性应用程序状态存储在进程内存中。 还存在安全问题,以确保来自用户会话的详细信息不会暴露给其他用户。

    我认为重复快速访问远程数据是可以解决的,例如,可以使用一个有共享内存支持的卷和一些无状态服务来填充它,将其本地缓存到pod。然后缓存被粘性会话重用。

    然而,反复快速进入快速变化的易失状态似乎是一个难以解决的问题。 我可以想象的一种方法是,对于用户会话的长度,客户端应该始终连接到同一个应用程序实例,而其他用户永远不应该连接到该实例。

    到目前为止,我已经研究了kubernetes作业,以及通过nginx入口控制器使用粘性会话的有状态集。我认为这两个都不符合所有这些要求。我也听说过自定义负载平衡器和操作符,但我还没有详细了解这些。

    尽管与核心kubernetes用例不匹配,但我还是想考虑一些解决方案,这些解决方案可以利用它(可能有扩展),避免为完全独立于kubernetes的易失性进程/容器实现一个单独的自定义生命周期管理层。

    有人能提出最好的考虑方法吗?

    0 回复  |  直到 6 年前
    推荐文章