首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >大(高流量)应用程序中的用户状态

大(高流量)应用程序中的用户状态
EN

Stack Overflow用户
提问于 2017-02-21 06:15:10
回答 2查看 283关注 0票数 0

假设-

  1. 有4台服务器位于反向代理后面,它充当负载均衡器。
  2. 负载均衡器是纯粹的负载平衡,并根据当前负载将请求发送到4台服务器中的任何一台。
  3. 访问此应用程序需要对用户进行身份验证,并且某些空间应该保持所有用户的状态,因为反向代理只是负载平衡。
  4. 应用程序需要扩展到超过4台服务器,比如4000台服务器。

问题-

  1. 在一个大规模的多服务器系统中,谁掌握着所有用户的状态--负载均衡器,每个服务器,单独的服务器?
  2. 是否将所有用户的状态保存在所有服务器上,以便负载均衡器可以向任何服务器发送请求?这个规模如何扩大到1亿用户呢?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-26 00:59:26

  1. 在无状态多服务器系统()中,单独的服务器(身份验证服务器)或单独的服务器集群(身份验证api)保存所有用户的状态。如果它是一个大型应用程序的单一身份验证服务器,您可以期望它的RAM在100的GBs范围内,也许更多。
  2. 不,所有用户的状态通常不会被复制到所有的应用服务器上,这将是对资源的巨大浪费。身份验证服务器(或服务器集群)可以充当负载均衡器本身,也可以将所有请求转发到单独的负载均衡器--对于无状态应用程序为true。

在有状态应用程序中,单个服务器通过粘性会话保持用户状态。

如果可能,尝试将应用程序保持无状态。与有状态应用程序相比,无状态应用程序具有更好的性能和更容易扩展!

票数 0
EN

Stack Overflow用户

发布于 2017-02-25 12:22:12

您可以使用粘性会话。它使负载均衡器能够将用户的会话绑定到特定实例。这确保会话期间来自用户的所有请求都发送到同一个实例。读Sticky and NON-Sticky sessions

另外,假设由于某种原因,实例会被杀死,为了维护状态,身份验证令牌和其他信息也可以保存在单独的redis缓存中,这要快得多。读取Session Management in microservices

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42359969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档