分布式session存储方案

标签: 分布 session | 发表时间:2016-11-04 18:21 | 作者:youyu4
出处:http://www.iteye.com

分布式session存储方案

 

Session Stick

 

Session Stick 方案即将客户端的每次请求都转发至同一台服务器,这就需要负载均衡器能够根据每次请求的会话标识(SessionId)来进行请求转发

 


 

这种方案实现比较简单,对于Web服务器来说和单机的情况一样。但是可能会带来如下问题:

 

1. 如果有一台服务器宕机或者重启,那么这台机器上的会话数据会全部丢失。

 

2. 会话标识是应用层信息,那么负载均衡要将同一个会话的请求都保存到同一个Web服务器上的话,就需要进行应用层(第7层)的解析,这个开销比第4层大。

 

3. 负载均衡器将变成一个有状态的节点,要将会话保存到具体Web服务器的映射。和无状态节点相比,内存消耗更大,容灾方面也会更麻烦。

 

 

 

Session Replication 

 

Session Replication 的方案则不对负载均衡器做更改,而是在Web服务器之间增加了会话数据同步的功能,各个服务器之间通过同步保证不同Web服务器之间的Session数据的一致性

 



 

Session Replication 方案对负载均衡器不再有要求,但是同样会带来以下问题:

 

1. 同步Session数据会造成额外的网络带宽的开销,只要Session数据有变化,就需要将新产生的Session数据同步到其他服务器上,服务器数量越多,同步带来的网络带宽开销也就越大。

 

2. 每台Web服务器都需要保存全部的Session数据,如果整个集群的Session数量太多的话,则对于每台机器用于保存Session数据的占用会很严重。

 

 

 

Session 数据集中存储 

 

Session 数据集中存储方案则是将集群中的所有Session集中存储起来,Web服务器本身则并不存储Session数据,不同的Web服务器从同样的地方来获取Session

 



 

相对于Session Replication方案,此方案的Session数据将不保存在本机,并且Web服务器之间也没有了Session数据的复制,但是该方案存在的问题在于:

 

1. 读写Session数据引入了网络操作,这相对于本机的数据读取来说,问题就在于存在时延和不稳定性,但是通信发生在内网,则问题不大。

 

2. 如果集中存储Session的机器或集群出现问题,则会影响应用。

 

 

 

Cookie Based 

 

Cookie Based 方案是将Session数据放在Cookie里,访问Web服务器的时候,再由Web服务器生成对应的Session数据

 



 

但是Cookie Based 方案依然存在不足:

 

1. Cookie长度的限制。这会导致Session长度的限制。

 

2. 安全性。Seesion数据本来是服务端数据,却被保存在了客户端,即使可以加密,但是依然存在不安全性。

 

3. 带宽消耗。这里不是指内部Web服务器之间的宽带消耗,而是数据中心的整体外部带宽的消耗。

 

4. 性能影响。每次HTTP请求和响应都带有Seesion数据,对Web服务器来说,在同样的处理情况下,响应的结果输出越少,支持的并发就会越高。

 

 

总结

前面四个方案都是可行的,但是对于大型网站来说,Session Sticky和Session数据集中存储是比较好的方案。

 

参考

http://blog.csdn.net/t894690230/article/details/50477923

 

《大型网站系统与 Java中间价实践》

 



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [分布 session] 推荐:

电商课题VI:分布式Session

- - 博客园_旁观者
与分布式缓存在高并发和高可用下所要解决问题差不多. 二.高并发下分布式Session需解决的问题:. 透明处理存储介质的故障转移. 动态增删节点,减小“缓存颠簸”问题. 保证数据在各个节点的分布均衡. 三.保证“基本可用 Basically Available”的分布式Session方案:. Brewer 在 1988 年提出的 BASE 策略,即 Basically Available、Soft state、和Eventually consistent.

分布式session存储方案

- - 互联网 - ITeye博客
分布式session存储方案. Session Stick 方案即将客户端的每次请求都转发至同一台服务器,这就需要负载均衡器能够根据每次请求的会话标识(SessionId)来进行请求转发. 这种方案实现比较简单,对于Web服务器来说和单机的情况一样. 如果有一台服务器宕机或者重启,那么这台机器上的会话数据会全部丢失.

分布式web应用session机制研究

- - CSDN博客互联网推荐文章
session机制对于初学者来讲是有些难于理解的,在此探讨一下session的机理.    由于http协议是一种无状态的协议. 即协议本身并没有规定建立连接的客户端和服务器端之间需要存储一些内容. 但是随着web技术的发展以及互联网商业的兴起,为了构建更加复杂的更加人性化的网络应用,必须有一种机制来保存客户端和服务器端连接的信息.

session fixation攻击

- - 互联网 - ITeye博客
什么是session fixation攻击. Session fixation有人翻译成“Session完成攻击”,实际上fixation是确知和确定的意思,在此是指Web服务的会话ID是确知不变的,攻击者为受害着确定一个会话ID从而达到攻击的目的. 在维基百科中专门有个词条 http://en.wikipedia.org/wiki/Session_fixation,在此引述其攻击情景,防范策略参考原文.

Zookeeper的Session

- - 行业应用 - ITeye博客
介绍一下基于zookeeper的一些API的编程. 在此之前,我们先来熟悉一下相关知识:. Zookeeper的Session:. (1)客户端和server间采用长连接. (2)连接建立后,server产生session ID(64位)返还给客户端. (3)客户端定期发送ping包来检查和保持和server的连接.

Session机制解析

- - ITeye博客
虽然session机制在web应用程序中被采用已经很长时间了,但是仍然有很多人不清楚session机制的本质,以至不能正确的应用这一技术. 本文将详细讨论session的工作机制并且对在Java web application中应用session机制时常见的问题作出解答. 二、HTTP协议与状态保持.

session和cookie详解

- - ITeye博客
摘要:虽然session机制在web应用程序中被采用已经很长时间了,但是仍然有很多人不清楚session机制的本质,以至不能正确的应用这一 技术. 本文将详细讨论session的工作机制并且对在Java web application中应用session机制时常见的问题作出解答. 二、HTTP协议与状态保持.

nginx + memcached session 同步

- - 企业架构 - ITeye博客
squid 缓存疑问 问题归纳:. 1 squid 缓存的数据,何时过期,如何判断缓存的数据已经过期,如何把最新的数据缓入squid 并且替换掉旧的内容. 2 如何判断数据是否应该被缓存. 3 校验失败时,是否给出缓存中旧的内容. 上面的几个问题  都可以通过 squid中的 refresh_pattern 配置项 找到答案.

session深入解读

- - CSDN博客推荐文章
林炳文Evankaka原创作品. 转载请注明出处 http://blog.csdn.net/evankaka. 摘要:虽然session机制在web应用程序中被采用已经很长时间了,但是仍然有很多人不清楚session机制的本质,以至不能正确的应用这一技术. 本文将详细讨论session的工作机制并且对在Java web application中应用session机制时常见的问题作出解答.

JavaOne美国之行–Session篇

- LightingMan - 淘宝JAVA中间件团队博客
Session的总结是重头戏,在这篇blog中,来分享下我参与过的Session,以及听完后我对Session的评价和对于有收获的Session制定的一些Action Plan. 本届JavaOne我总共参加了24个Session,主要集中在JVM方面以及Experience Talk方面,5分为最高分的话,我给这些Session的评分状况如下所示:.