• 负载均衡的时候如何实现相同的session被分配到同一个服务器


    http://www.zhihu.com/question/19651970

    session共享那个问题时,有人说:其实从负载均衡的层面来看,大多数硬件/软件的负载均衡方案,都支持session状态保持的。可以作为一种应急方案。当然,从某种意义来讲,这违反了负载均衡的本质。

    这里面说到的session状态保持应该就是会话保持了

    http://www.bitic.com.cn/news/onewszyzx.asp?id=240

    (以下只列出要点,详细参考原文)

    什么是会话保持?

    在 大多数电子商务的应用系统或者需要进行用户身份认证的在线系统中,一个客户与服务器经常经过好几次的交互过程才能完成一笔交易或者是一个请求的完成。由于 这几次交互过程是密切相关的,服务器在进行这些交互过程的某一个交互步骤时,往往需要了解上一次交互过程的处理结果,或者上几步的交互过程结果,服务器进 行下一步操作时需要这就要求所有这些相关的交互过程都由一台服务器完成,而不能被负载均衡器分散到不同的服务器上。

               而这一系列的相关的交互过程可能是由客户到服务器的一个连接的多次会话完成,也可能是在客户与服务器之间的多个不同连接里的多次会话完成。不同连接的多次会话,最典型的例子就是基于http的访问,一个客户完成一笔交易可能需多次点击,而一个新的点击产生的请求,可能会重用上一次点击建立起来的连接,也可能是一个新建的连接。

            会话保持就是指在负载均衡器上有这么一种机制,可以识别做客户与服务器之间交互过程的关连性,在作负载均衡的同时,还保证一系列相关连的访问请求会保持分配到一台服务器上。

    (插入一下个人见解:如果实现session共享的话,那么不用会话保持应该也是可以的吧)

    会话保持实现方法

    1、简单会话保持

    简单会话保持也被称为基于源地址的会话保持,是指负载均衡器在作负载均衡时是根据访问请求的源地址作为判断关连会话的依据。对来自同一IP地址的所有访问请求在作负载均时都会被保持到一台服务器上去。

    基 于原地址的会话保持实现起来简单,只需要根据数据包三、四层的信息就可以实现,效率也比较高。存在的问题就在于当多个客户是通过代理或地址转换的方式来访 问服务器时,由于都分配到同一台服务器上,会导致服务器之间的负载严重失衡。另外一种情况上客户机数量很少,但每个客户机都会产生多个并发访问,对这些必 发访问也要求通过负均均衡器分配到多个服器上,这时基于客户端源地址的会话保持方法也会导致负载均衡失效。

    (http://blog.51yip.com/server/942.html 这段话很有意思:经常发现google打不开,但是过一会就好了。这让那些google的爱好者们郁闷不已,很多用户都到国外找代理去了,狗急跳墙,人急FQ。如果这样的话,这些代理会被分到同一个服务器,会导致负载不均衡 ,甚至失效。)

    2、基于Cookie的会话保持

  • 相关阅读:
    在线教育项目-day10【微服务简单概念】
    在线教育项目-day10【删除小节视频】
    在线教育项目-day09【添加小节上传视频前端】
    【面试】足够应付面试的Spring事务源码阅读梳理(建议珍藏)
    【面试】Spring事务面试考点吐血整理(建议珍藏)
    【面试】我是如何在面试别人Spring事务时“套路”对方的
    爸爸又给Spring MVC生了个弟弟叫Spring WebFlux
    JVM上的响应式流 — Reactor简介
    我是如何在毕业不久只用1年就升为开发组长的
    JVM平台上的响应式流(Reactive Streams)规范
  • 原文地址:https://www.cnblogs.com/crane-practice/p/3662369.html
Copyright © 2020-2023  润新知