- 缺点
依懒性太强,mysql 服务器无法工作,影响整个系统;
- b、将存放 session 的数据表与业务的数据表放在同一个库。
如果 mysql 做了主从,需要每一个库都需要存在这个表,并且需要数据实时同步。
- 缺点
用数据库来同步 session,会加大数据库的负担。
数据库本来就是容易产生瓶颈的地方,如果把 session 还放到数据库里面,无疑是雪上加霜。
上面的二种方法,第一点方法较好,把放 session 的表独立开来,减轻了真正数据库的负担 。
但是 session 一般的查询频率较高,放在数据库中查询性能也不是很好,不推荐使用这种方式。
2、通过 cookie 共享 session
- 把用户访问页面产生的 session 放到 cookie 里面,就是以 cookie 为中转站。
当访问服务器 A 时,登录成功之后将产生的 session 信息存放在 cookie 中;
当访问请求分配到服务器 B 时,服务器 B 先判断服务器有没有这个 session,
如果没有,在去看看客户端的 cookie 里面有没有这个 session,
如果 cookie 里面有,就把 cookie 里面的 session 同步到 web 服务器 B,这样就可以实现 session 的同步了。
- 缺点
cookie的安全性不高,容易伪造、客户端禁止使用cookie等都可能造成无法共享session。
3、通过服务器之间的数据同步 session
- 使用一台作为用户的登录服务器,当用户登录成功之后,会将 session 写到当前服务器上,我们通过脚本或者守护进程将 session 同步到其他服务器上,这时当用户跳转到其他服务器,session 一致,也就不用再次登录。
- 缺点
速度慢,同步session有延迟性,可能导致跳转服务器之后,session未同步。
而且单向同步时,登录服务器宕机,整个系统都不能正常运行。
4、通过 NFS 共享 Session
- 选择一台公共的 NFS 服务器(Network File Server)做共享服务器,所有的 Web 服务器登陆的时候把 session 数据写到这台服务器上,那么所有的 session 数据其实都是保存在这台 NFS 服务器上的,不论用户访问那太 Web 服务器,都要来这台服务器获取 session 数据,那么就能够实现共享 session 数据了。
- 缺点
依赖性太强,如果NFS服务器down掉了,那么大家都无法工作了,
当然,可以考虑多台NFS服务器同步的形式。
5、通过 memcache 同步 session
- memcache 可以做分布式,如果没有这功能,他也不能用来做 session 同步。他可以把 web 服务器中的内存组合起来,成为一个"内存池",不管是哪个服务器产生的 session 都可以放到这个"内存池"中,其他的都可以使用。
- 优点
以这种方式来同步session,不会加大数据库的负担,并且安全性比用cookie大大的提高,把session放到内存里面,比从文件中读取要快很多。- 缺点
memcache把内存分成很多种规格的存储块,有块就有大小,这种方式也就决定了,memcache不能完全利用内存,会产生内存碎片,如果存储块不足,还会产生内存溢出。
6、通过 Redis 共享 session
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Linux运维工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Linux运维知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip1024b (备注Linux运维获取)
频,并且后续会持续更新**
如果你觉得这些内容对你有帮助,可以添加VX:vip1024b (备注Linux运维获取)
[外链图片转存中…(img-J2oC9GZP-1712882525052)]