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服务管理平台
转载于:https://blog.51cto.com/molewan/1930803