会话亲和力和粘性会话之间的区别?


126

在负载平衡服务器的上下文中,会话亲和力粘性会话之间有什么区别?

Answers:


82

我已经看到这些术语可以互换使用,但是有不同的实现方式:

  1. 在第一个响应上发送一个cookie,然后在后续响应中查找它。cookie指出要发送到哪个真实服务器。如果您必须支持无cookie的浏览器,那就
    不好了
  2. 根据请求者的IP地址进行分区。如果它不是静态的,或者很多是通过同一代理服务器
    传入的,则很糟糕
  3. 如果您对用户进行身份验证,则基于用户名进行分区(必须是HTTP支持的身份验证模式才能执行此操作)。
  4. 不需要状态。
    让客户端访问任何服务器(将状态发送到客户端,然后让它们发送回客户端)。
    这不是一个棘手的会话,它是避免执行此操作的一种方法。

我怀疑粘性可能是指Cookie的方式,而亲和力在某些情况下可能指的是#2和#3,但这并不是我所看到的(或自己使用)的方式。


6
如果请求绑定到物理服务器,那么如果该服务器发生故障怎么办?是否有使用Cookie来包含故障转移服务器的策略?
拉菲安

2
如果服务器发生故障,则应用程序将发生故障-也许您需要重新登录。也许您丢失了数据。通常,负载均衡器选择另一台服务器,然后继续运行,但是某些状态丢失了。如果这是不可接受的,那么您需要尽快将状态传递给数据库或其他服务器,或者采用无状态策略。
Lou Franco

FWIW Heroku则相反。会话关联性基于Cookie,并且不支持粘贴。devcenter.heroku.com/articles/session-affinity
RandallB

39

正如我一直听到的在负载均衡方案中使用的术语一样,它们是可以互换的。两者都意味着一旦启动会话,则同一台服务器将为该会话提供所有请求。


21

粘性会话意味着,当一个请求从客户端进入站点时,所有其他请求都将被访问到同一服务器的初始客户端请求。我相信会话亲和力是粘性会话的同义词。



11

粘性会话是指将特定会话的请求路由到为该会话提供第一个请求的同一台物理计算机。



0

它们是同义词。完全没有区别

粘性会话/会话亲和力:

保留用户会话与向其发送用户请求的服务器之间的亲缘关系/粘性/联系。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.