http://www.cnblogs.com/xiehuiqi220/p/3592300.html

首先我们应该明白,为什么要实现共享,如果你的网站是存放在一个机器上,那么是不存在这个问题的,因为会话数据就在这台机器,但是如果你使用了负载均衡把 请求分发到不同的机器呢?这个时候会话id在客户端是没有问题的,但是如果用户的两次请求到了两台不同的机器,而它的session数据可能存在其中一台 机器,这个时候就会出现取不到session数据的情况,于是session的共享就成了一个问题。

http://huqilong.blog.51cto.com/53638/843891

目前大多数大型网站的服务器都采用了分布式的部署方式,但是session是在服务器端保存的,如果用户跳转到其他服务器的话,session就会丢失,于是就有了分布式系统的session共享问题。

session共享有很多解决方法,比较常用的如下:

一、以cookie加密的方式保存在客户端.优点是减轻服务器端的压力,缺点是受到cookie的大小限制,可能占用一定带宽,因为每次请求会在头部附带一定大小的cookie信息,另外这种方式在用户禁止使用cookie的情况下无效.

二、服务器间同步。定时同步各个服务器的session信息,此方法可能有一定延时,用户体验也不是很好。

三、以某种媒介共享session信息,比如memcached,NFS等

http://www.zhihu.com/question/19651970

1. 通过组播的方式进行集群间的共享,比如tomcat目前就具备这样的功能,优点是web容器自身支持,配置简单,适合小型网站。缺点是当一台机器的上的 session变更后会将变更的数据以组播的形式分发给集群间的所有节点,对网络和所有的web容器都是存在开销。集群越大浪费越严重。不能做到线性的扩 展。
2. 利用NFS等一些共享存储来共享Session数据
大致就是有一台公共的NFS服务器做共享服务器,当然也可以采用数
据库,所有的Web服务器都把session数据写到共享存储介质上,也都要来这台服务器获取session数据,通过这样的方式来实现Session数
据的共享。相比前面组播的方式来说,网络开销较小。缺点是受制于存储设备的依赖,如果存储设备down掉,就无法工作了,要做好主备同步等一些容灾措施。
另外,当访问量过大时,磁盘的IO也是一个非常大的问题。
3.利用Memcache来存储共享Session数据
这可能也是目前
互联网中比较流行的一种用法。所有Web服务器都把Session写入到memcache,也都从memcache来获取。memcache本身就是一个
分布式缓存,便于扩展。网络开销较小,几乎没有IO。性能也更好。缺点,受制于Memcache的容量(除非你有足够内存存储),如果用户量突然增多
cache由于容量的限制会将一些数据挤出缓存,另外memcache故障或重启session会完全丢失掉。
4.完全用cookie

用户的session数据全部存放在cookie中,很多大型站点都在这么干。优点是服务器架构也变得简单,每台web服务器都可以很独立。没有网络开销
和对磁盘IO,服务器重启也不会导致数据的丢失。缺点,cookie过于庞大会耗费单位页面的下载时间,所以要尽量保持cookie的精简。

memcache:

http://memcached.org/

What is Memcached?

Free & open source, high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load.

Memcached is an in-memory key-value store for small chunks of arbitrary data (strings, objects) from results of database calls, API calls, or page rendering.

http://blog.csdn.net/hjm4702192/article/details/7894080

为什么会有Memcache和memcached两种名称
其实Memcache是这个项目的名称,而memcached是它服务器端的主程序文件名,一个是项目名称,一个是主程序文件名

最新文章

  1. 一个前端程序猿的Sublime Text3的自我修养
  2. Mac添加bash alias
  3. 京东B2B的4种供销模式
  4. Nginx-->进阶-->原理-->Nginx+php+fastcgi的原理与关系
  5. windows 80端口被占用的解决方法
  6. [文字雲產生器] Tagxedo 把文字串成雲、變成畫,印在 T-Shirt、馬克杯、詩袋….
  7. Web Service 接口实现大量数据传输的解决方案
  8. NSPredicate,谓词
  9. Java学习笔记之:Java 继承
  10. .frm文件
  11. Miller-Rabin素性测试(POJ3641)
  12. 【转】.NET开发者必备的11款免费工具
  13. 使用javaservice 将jboss 注册为服务
  14. 【转载】一行代码加载网络图片到ImageView——Android Picasso
  15. git知识总结-2.git基本操作之原理说明
  16. windows server 2008性能测试出现大量time_wait
  17. haproxy prometheus 监控docker-compose 运行试用
  18. 开发ASP.NET MVC 在线录音录像(音视频录制并上传)
  19. RabbitMQ 初探
  20. d3js把circle和rect连接在一起

热门文章

  1. Makefile特殊标签
  2. mysql动态扩容调研
  3. MySQL笔记之多表
  4. iOS GCD之dispatch_semaphore(信号量)
  5. Python中的collections模块
  6. threejs Object的点击(鼠标)事件(获取点击事件的object)
  7. Typescript : 遍历Array的方法:for, forEach, every等
  8. WebLogic11g-常用运维操作
  9. 接口测试框架——第六篇-读Excel封装方法
  10. 【java基础】java集合之TreeMap