zoukankan      html  css  js  c++  java
  • 服务器集群的session管理

      应用服务器的高可用架构设计主要基于服务无状态这一特性,但是事实上,业务总是有状态的,单机情况下,Session可由部署在服务器上的web容器(如Jboss)管理。在使用负载均衡的集群环境中,由于负载均衡服务器可能会分发到集群任何一台服务器上,所以保证每次请求依然能够获得正确的Session比单机要复杂的多。

      集群环境下,Session管理主要有以下几种手段。

      1、Session复制

      应用服务器开启Web容器的Session复制功能,在集群中的几台服务器之间同步Session对象,使得每台服务器上都保存所有用户的Session信息,这样任务一台机器都不会导致Session数据丢失。

      这种方案简单,但是只能使用集群规模比较小的情况。当集群规模比较大时,集群服务器之间需要大量的通信进行Session复制,占用服务器和网络大量的资源,系统不堪重负。

      2、Session绑定

      Session绑定可以利用负载均衡的源地址Hash算法实现,负载均衡服务器总是将来源于同一ip的请求分发到同一台服务器上。也可以根据cookie信息将同一用户的请求总是分发到同一台服务器上,当然这时的负载均衡服务器必须工作在http协议层上。这样在整个会话期间,用户所有的请求都在同一台服务器上处理。即session绑定在某台特定服务上,保证session总能在这台服务器上获取。

      但是session绑定的方案明显不符合我们对系统高可用的需求,因为一旦某台服务器坏了,那么该服务器上的session也就不复存在,用户请求切换到其他服务器后因为没有session而无法完成业务处理。

      3、利用cookie记录session

      将session记录在客户端,每次请求服务器的时候,将session放在请求发送给服务器,服务器处理完请求后再将修改过的session响应给客户端。但是cookie受到大小的限制,能记录的信息有限,每次传输请求响应都需要传输cookie影响性能。如果用户关闭cookie,访问就不会正常。

      4、session服务器

      使用session服务器,利用独立部署的session服务器统一管理session,应用服务器每次读写session时,都访问session服务器。

      

  • 相关阅读:
    前后端交互实现(nginx,json,以及datatable的问题相关)
    前端工作笔记
    系统前端基本文件+ajax部分理解
    python(day17)二分查找
    python(day16)内置函数,匿名函数
    day15(PYTHON)推导式{生成器,字典,列表,集合}
    Javascript 模拟 new
    Javascript call和apply的模拟实现
    Javascript——bind的模拟实现
    模拟Vue 中数据双向绑定
  • 原文地址:https://www.cnblogs.com/Hxinguan/p/8395288.html
Copyright © 2011-2022 走看看