网站在作了web集群后,你确定会首先考虑session同步问题,由于经过负载均衡后,同一个IP访问同一个页面会被分配到不一样的服务器上,若是session不一样步的话,一个登陆用户,一会是登陆状态,一会又不是登陆状态。因此本文就在网站建设中根据这种状况给出三种不一样的集群方法来解决这个问题:mysql
一,利用数据库同步sessionweb
1,用一个低端电脑建个数据库专门存放web服务器的session,或者,把这个专门的数据库建在文件服务器上,用户访问web服务器时,会去这个专门的数据库check一下session的状况,以达到session同步的目的。sql
2,这种方法是把存放session的表和其余数据库表放在一块儿,若是mysql也作了集群了话,每一个mysql节点都要有这张表,而且这张session表的数据表要实时同步。数据库
说明:用数据库来同步session,会加大数据库的负担,数据库原本就是容易产生瓶颈的地方,若是把session还放到数据库里面,无疑是雪上加霜。上面的二种方法,第一点方法较好,把放session的表独立开来,减轻了真正数据库的负担安全
二,利用cookie同步session服务器
session是存放在服务器端的,cookie是存放在客户端的,怎么实现同步呢?方法很简单,就是把用户访问页面产生的session放到cookie里面,就是以cookie为中转站。你访问web服务器A,产生了session把它放到cookie里面了,你访问被分配到web服务器B,这个时候,web服务器B先判断服务器有没有这个session,若是没有,在去看看客户端的cookie里面有没有这个session,若是也没有,说明session真的不存,若是cookie里面有,就把cookie里面的sessoin同步到web服务器B,这样就能够实现session的同步了。cookie
说明:这种方法实现起来简单,方便,也不会加大数据库的负担,可是若是客户端把cookie禁掉了的话,那么session就无从同步了,这样会给网站带来损失;cookie的安全性不高,虽然它已经加了密,可是仍是能够伪造的。session
三,利用memcache同步session负载均衡
memcache能够作分布式,若是没有这功能,他也不能用来作session同步。他能够把web服务器中的内存组合起来,成为一个”内存池”,无论是哪一个服务器产生的sessoin均可以放到这个”内存池”中,其余的均可以使用。分布式
优势:以这种方式来同步session,不会加大数据库的负担,而且安全性比用cookie大大的提升,把session放到内存里面,比从文件中读取要快不少。
缺点:memcache把内存分红不少种规格的存储块,有块就有大小,这种方式也就决定了,memcache不能彻底利用内存,会产生内存碎片,若是存储块不足,还会产生内存溢出。
四,总结
上面三种方法都是可行的
第一种方法,最影响系统速度的那种,网站开发中不推荐使用;
第二种方法,效果不错,不过安全隐患同样的存在;
第三种方法,我的以为第三种方法是最好的,网站制做中推荐你们使用