Rest 如何在Kubernetes中部署的API中维护http会话?

Rest 如何在Kubernetes中部署的API中维护http会话?,rest,flask,kubernetes,cloud,scalability,Rest,Flask,Kubernetes,Cloud,Scalability,我正在设计一个API,它将接收客户的请求,并代表客户与云后端(如AWS)交互。这个API必须是可伸缩的,所以一点研究让我相信我可以把API放在容器中,让它通过Kubernetes进行伸缩。我计划使用Flask来编写这个API。在这方面,我有三个问题: 烧瓶是合适的选择吗?通过我的研究,似乎是这样 API应该如何处理到后端的用户身份验证?它是否应该简单地从用户那里获取用户名/密码,基于这些凭据建立到后端的连接,并以某种方式在内存/数据库中维护由此产生的连接?还有别的办法吗 如果我们采用第二种方法进

我正在设计一个API,它将接收客户的请求,并代表客户与云后端(如AWS)交互。这个API必须是可伸缩的,所以一点研究让我相信我可以把API放在容器中,让它通过Kubernetes进行伸缩。我计划使用Flask来编写这个API。在这方面,我有三个问题:

  • 烧瓶是合适的选择吗?通过我的研究,似乎是这样
  • API应该如何处理到后端的用户身份验证?它是否应该简单地从用户那里获取用户名/密码,基于这些凭据建立到后端的连接,并以某种方式在内存/数据库中维护由此产生的连接?还有别的办法吗
  • 如果我们采用第二种方法进行用户身份验证,那么问题是:我不希望API在每个用户请求时都与后端建立新的连接。这意味着我需要始终以某种方式维护连接状态,同时确保API以分散的方式工作。e、 g用户a以前由API的docker实例1提供服务,但现在她的请求被路由到docker实例2,在本例中,我希望使用相同的用户到后端的连接,该连接由docker 1 API实例建立。那么我如何保持这种联系呢?这是否违反了RESTAPI的无状态原则?那么,设计系统的另一个选择是什么?谢谢
  • Flask应该很好,就像许多其他方法一样,最终取决于您如何编写API

  • 在我看来,最好的方法是采用类似于承载令牌身份验证的方式,即为令牌颁发服务提供一些身份验证机制,并且当您拥有签名令牌时,您的API(或API网关/auth代理)可以检查令牌是否有效(单独或通过调用专用微服务)

  • 如果出于任何原因需要会话存储,您应该实现一个单独的服务来存储该会话数据。例如,您可以使用Redis作为中央存储。如果此服务也需要HA,则必须使用一些群集支持来实现会话存储