azure - Azure kubernetes - 具有会话管理的应用程序?
问题描述
我计划在 Azure kubernetes 上部署使用会话的 Asp.net 应用程序。如何确保传入请求转到创建会话的同一 pod。
解决方案
建议部署在 Kubernetes 上的应用具有遵循The Twelve Factor App的设计。
如果应用程序是无状态的并且不与其他实例共享任何内容,一切都会变得更容易。请参阅十二因素应用程序 - 流程
十二因素流程是无状态且无共享的。任何需要持久化的数据都必须存储在有状态的支持服务中,通常是数据库。
一些网络系统依赖于“粘性会话”——也就是说,将用户会话数据缓存在应用程序进程的内存中,并期望来自同一访问者的未来请求被路由到同一进程。粘性会话违反了十二因素,永远不应使用或依赖。会话状态数据非常适合用于提供超时的数据存储,例如 Memcached 或 Redis。
使用Redis是存储属于用户的临时数据的一种方式。
对于身份验证,我建议在Authorization: Bearer <token>
标头中使用带有 JWT 令牌的 OpenID Connect。有关OpenID Connect 提供程序的示例,请参见Azure Active Directory B2C 。
推荐阅读
- node.js - S3 使用 Node.js 上传 Excel 数据
- excel - Power Query:检测由 Table.NestedJoin JoinKind.FullOuter 创建的 null
- ruby-on-rails - 检查 PATH 中的 rbenv 垫片:发现位置错误
- recharts - 在 Recharts 中自定义 PieChart 上的标签
- php - 为什么 json_decode 函数不能解码这个 json 字符串?
- python - 如何使 tkinter 标签(在列表框中选择)动态?
- webpack - 我应该如何找出哪些模块在我的 webpack 中创建了许多包?
- mysql - 使用 MySQL 空间索引,查询错误时出错:3037 Invalid GIS data provided to function st_intersects
- javascript - 如何在后端和前端具有不同子文件夹的代码沙箱中运行应用程序
- r - 取消嵌套数据框并使用 NA 填充新行