会话会话基础理论




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

Connection)、什么是会话(Session),以及这二者之间的区别。需要特别强调的是,如果我们仅仅是谈论负载均衡,会话和连接往往具有相同的含义。

NAT转换后,转发至后端固定的服务器进行处理。负载均衡系统内部会专门有一张表来记录这些连接的状况,包括:[源IP:端口]、[目的IP:端口]、[服务器IP:端口]、空闲超时时间(Idle Timeout)等等。,所有传统厂商都会有一定的限制。这张表的大小一般称之为最大并发连接数,也就是系统同时能够容纳的连接数量。负载均衡的当前连接状态表项中,设计了一个空闲超时时间(Idle Timeout)的参数。当该连接在Idle Timeout内无流量通过时,负载均衡会自动删除该连接条目,释放系统资源。

session)以记录客户端的各种信息。比如在大多数电子商务的应用系统或者需要进行用户身份认证的在线系统中,一个客户与服务器经常经过好几次的交互过程才能完成一笔交易或者是一个请求的完成。由于这几次交互过程是密切相关的,服务器在进行这些交互过程的某一个交互步骤时往往需要了解上一次或上几次的交互过程处理结果,这就要求所有这些相关的交互过程都由一台服务器完成,而不能被负载均衡器分散到不同的服务器上否则可能出现异常情景:


session sticky,session LBcluster和session server,而这三种会话绑定方式又各有优缺点,适应不同的场景;

session sticky在调度中不能够很好的实现会话的保持与高可用性,只要其中一台主机宕机,就意味着这台主机维持的所有会话都将丢失,这不仅对用户是一种不好的体验,更是一个站点的损失,于是人们开始思考能否让后端的每个服务器都能够携带所有服务器的会话呢?渐渐的找到了解决方案,那就是实现会话集群,会话集群,顾名思义,那就是将所有维持会话的服务组合成一个集群,维护该站点所有的会话信息,这样一来,我们就不用在担心因为某台主机而使得用户的信息丢失。

”客户端放入购物车的物品丢失”这类问题了。但是解决了A类问题也会带来B类问题,每个会话服务器既要处理前端的用户请求又要会话同步至其他的主机,如果这是一个量很大的服务站点,那么每一台主机在同步其他主机的会话信息,以及将自己维持的会话发送给其他服务器时将会产生大量IO操作,这就使得每个服务器的压力变得异常大,处理前端的请求的性能大大降低。并且,同步使用的是组播的方式来实现的,大量服务器同时同步各自的会话给其他的主机,这将消耗大量的带宽。

session server中的会话值做比较即可。那么session Server怎样存储这些会话信息呢,于是有了以下几种存储方式:

Web应用中,最大的性能瓶颈通常出现在数据库服务器。因此如果将 Session存储到数据库表,频繁的数据库操作会影响业务。

NFS)来实现各台服务器间的Session共享。此种方式适合并发量不大的网站。

mount存储Session的磁盘即可,实现较为简单。

Memcached来保存Session数据,直接通过内存的方式读取。

Session也更加方便,将这些服务器都配置成使用同一组memcached服务器就可以,减少了额外的工作量。

Session数据来说并不是严重的问题。如果网站访问量太大、Session太多的时候memcached会将不常用的部分删除,但是如果用户隔离了一段时间之后继续使用,将会发生读取失败的问题。


会话会话基础理论