Session 如何避免给定分布式体系结构中的单点故障
我经历了这一切 这就是我被卡住的地方。解释问题- 让我们假设LB使用循环的方法 根据第一个映像,所有服务器都在其本地空间中存储会话,其他服务器无法访问该会话。如果下次出现相同的请求,并且LB将此请求重定向到另一台服务器,则该服务器将询问身份验证。从用户的角度来看,这是非常恼人的 如第二幅图所示,所有服务器都在共享会话。在这种情况下,当下一个请求来自同一个客户机时,LB重定向到另一个服务器。现在,它将从会话主机获取信息,而不是请求身份验证 这在上面的视频链接中提到 问题-Session 如何避免给定分布式体系结构中的单点故障,session,architecture,scalability,high-availability,distributed-system,Session,Architecture,Scalability,High Availability,Distributed System,我经历了这一切 这就是我被卡住的地方。解释问题- 让我们假设LB使用循环的方法 根据第一个映像,所有服务器都在其本地空间中存储会话,其他服务器无法访问该会话。如果下次出现相同的请求,并且LB将此请求重定向到另一台服务器,则该服务器将询问身份验证。从用户的角度来看,这是非常恼人的 如第二幅图所示,所有服务器都在共享会话。在这种情况下,当下一个请求来自同一个客户机时,LB重定向到另一个服务器。现在,它将从会话主机获取信息,而不是请求身份验证 这在上面的视频链接中提到 问题- 现在会话主机成为单点故
3) 到目前为止,我使用的最具可扩展性的方法是使用客户端会话,而不使用服务器端数据/会话存储。在这种情况下,您可以在每个应用服务器中存储一个很长的密钥,并在使用该密钥加密数据后设置cookie中的所有数据。这种方法的唯一问题是,您需要对会话中存储的内容进行非常有选择性的选择,因为cookie上的数据大小有限制。这种加密是双向的。大多数基于SAAS的工具都使用这种方法。将会话主机实现为复制数据存储有助于消除单点故障。例如,使用像Hazelcast这样的复制缓存将保持缓存的复制和分布,从而消除单点故障。还有其他的像Memcached和Mongo。可以通过虚拟ip地址实现自动故障切换。正是由于这个原因,通常会话主机(如memcache)前面有一个VIP(虚拟ip)并且有多个主机。在分布式体系结构中,您通常希望有1-N台主机。大多数大规模运营的公司使用Couchbase(memcahce Bucket)等数据存储来存储会话状态,因为它快速、冗余且高度可扩展 在负载平衡器中实现粘性会话逻辑。这可能会起作用。或者使用客户端会话。在客户端保存信息称为cookie。但是你不能存太多。这是会话和cookie之间的一个主要区别。