我想我对一些概念感到困惑,这就是为什么我要你帮我做这件事:
我们有一个大型网络应用程序,供许多用户(公司)使用,部署在用户的办公场所。但是现在我们开始使用saas,所以为了让应用程序像这样运行,我们正在做一些调整。
为了处理我们的用户,我们这样做:我们每个用户都有一个db。当然,我们需要负载平衡,因为我们需要很多服务器,所以我提出了一种“切分”架构。我的想法是有一个网络服务器,每个服务器完全独立于彼此。所以我们会把所有的用户数据分割成10台服务器。因此,当用户登录时,实际上他会连接到服务器4。实际上,为了保持可用性,每台服务器中的一台将是一个由2-3台服务器组成的小型集群,其中dbs将在其中进行复制。我们在每个“集群”中使用memcache。我们甚至可以在这个级别上进行负载平衡,只是我们认为我们不需要它,因为数据/用户已经被分割了。
一些问题:
我认为‘公共/身份验证集群’设计得不太好。因为我有2-3台服务器,仅用于向所有用户提供主站点服务(在身份验证之前),而在后台,我有5-6个集群,其中一些可能正在睡觉。或者相反:当公共集群处于休眠状态时,我有一个负载很重的集群,因为它的唯一任务是显示主页并处理重定向到登录过程。
如果这一切成功的话,
谢谢你的帮助。
发布于 2013-06-07 19:09:55
基本上,我会说,是的,这是切分。
为了避免需要了解哪个用户居住在哪个集群(因此您提到了memcache db ),您可以使用某种(一致的)散列。
要将用户重定向到正确的集群而不需要单独的主机名,您可以在成功的身份验证之后向客户端发送cookie,其中包含用户集群的标识符。可以由负载平衡器对cookie进行评估,以将所有进一步的请求转发到正确的集群。这是负载平衡中“会话持久化”的常见实践。
我认为,只有当确实有一个以上的(活动/主动)服务器是为一个用户提供请求的有效候选服务器时,负载平衡这一术语才适用。
https://stackoverflow.com/questions/13406064
复制相似问题