rest - 如何在 Kubernetes 中部署的 API 中维护 http 会话?
问题描述
我正在设计一个 API,它将接收来自客户的请求,并代表客户与 AWS 等云后端进行交互。这个 API 必须是可扩展的,所以一些研究让我相信我可以将 API 放入容器中,并通过 Kubernetes 对其进行扩展。我打算使用 Flask 来编写这个 API。在这方面我有三个问题:
- 烧瓶是一个合适的选择吗?通过我的研究似乎是这样。
- API 应该如何处理对后端的用户认证?它是否应该简单地从用户那里获取用户名/密码,根据这些凭据建立与后端的连接,并以某种方式在内存/数据库中维护生成的连接?还有其他方法吗?
- 如果我们采用第二种方法进行用户身份验证,那么问题是:我不希望 API 在每个用户请求时都与后端建立新连接。这意味着我需要始终以某种方式维护连接状态,同时确保 API 应该以分散的方式工作。例如,用户 A 之前由 API 的 docker 实例 1 提供服务,但现在她的请求被路由到 docker 实例 2,在这种情况下,我想使用用户到后端的相同连接,该连接由 docker 1 API 实例建立. 那么如何保持这种连接呢?是否违反了应该是无状态的 REST API 的原则?那么,设计系统的另一种选择是什么?谢谢。
解决方案
Flask 应该没问题,就像许多其他方法一样,毕竟如何编写 API 取决于你
在我看来,最好的方法是进行不记名令牌身份验证,您可以在其中为令牌发行服务提供一些身份验证机制,并且当您拥有签名令牌时,您的 API(或 API 网关/身份验证代理)可以检查如果令牌有效(单独使用或通过调用专用微服务)
如果出于任何原因需要会话存储,则应该实现一个单独的服务来存储该会话数据。例如,您可以使用 Redis 作为中央存储。如果您也需要此服务的 HA,那么您必须使用一些集群支持来实现会话存储。
推荐阅读
- regex - 使用 grep 函数保留特定行
- mysql - SQL 从一个表中获取所有列以及另一个表中由外键关联的分组列的计数
- javascript - 传播类函数
- excel - 从 Postico 导出到 CSV 并在 Excel 上打开时如何更正日期格式?
- sql - 将字符串(看起来像 list )拆分为 Hive 中的值列表
- javascript - 当父项上的下一项与选择器上的 ngIf 具有相同的变量值时,角度子组件不会被破坏
- react-native - 将 react-spring 用于 react-native
- php - 免费主机比付费主机表现更好,还是我的网站有其他问题?
- java - 抽屉布局中菜单项工具栏上的后退操作按钮不起作用
- angular - 使用等待异步时出错 - “未捕获(承诺):已取消”