码迷,mamicode.com
首页 > 其他好文 > 详细

应用服务器集群的session管理

时间:2017-05-31 15:25:15      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:服务器   应用程序   session   上下文   

1、什么是session

  a、web应用中将这些多次请求修改使用的上下文对象称作会话(session)

  b、Session 对象存储特定用户会话所需的信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。

  c、当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话


2、session的应用场景

  在高可用的架构中,业务总是有状态的,比如电商交易类平台中,需要有购物车记录用户的购买信息;在社交类的网站中,需要记录用户的当前登陆状态、最新发布的消息及好友状态等,用户每次刷新页面都需要更新这些信息


3、session管理的几种手段

a)session复制

  应用服务器开启web容器的session复制功能,在集群中几台服务器之间同步session对象,使得每台服务器上都保存所有用户的session信息

  较大规模的情况下(session复制就会显得不足了)

技术分享

b)session绑定

  ession绑定可以利用负载均衡的源地址Hash算法实现,负载均衡服务器总是将来源于同一个IP的请求分发到同一台服务器上,显然session绑定不符合我们对系统高可用的要求,因为一旦服务器宕机,那么该机器上的session就不复存在了

  优点:实现简单、配置方便、没有额外网络开销

  缺点:网络中有机器Down掉时、用户Session会丢失、容易造成单点故障

技术分享

c)利用cookie记录session

  说明:网站没有客户端,可以利用浏览器支持的cookie记录session(事实上,许多网站或多或少地使用cookie记录session)

  不足:

  •   受cookie大小限制,能记录的信息有限

  •   每次响应请求都要传输Cookie,影响性能

  •   如果用户关闭cookie,访问就会不正常

技术分享


d)session服务器

  •  利用独立部署的服务器(集群)统一管理session

  •  应用服务器的状态分离,分为无状态的应用服务器和有状态的session服务器

  •  对于有状态的session服务器:分布式缓存+数据库等

  •  业务场景要求高的情况下,利用session服务集成单点登录(SSO)、用户服务等功能,或者开发专门的session服务管理平台

技术分享

本文出自 “冰冻vs西瓜” 博客,请务必保留此出处http://molewan.blog.51cto.com/287340/1930803

应用服务器集群的session管理

标签:服务器   应用程序   session   上下文   

原文地址:http://molewan.blog.51cto.com/287340/1930803

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!