方式一:将存储在服务端的session保存在客户端cookie中
按照自定义的加密规则将session数据加密保存到cookie中:
优点:服务器压力减小,同时能够解决在多个服务器之间session不共享的问题。
缺点:不同的浏览器对cookie容量有大小限制;客户端每次请求都需要通过cookie发送session数据给服务器,导致网络请求占用高。
该方案不适合高访问量:带宽性能消耗大。
方式二:Session放在数据库中进行共享
建议使用内存表Heap进行存储
优点:安全性好。
缺点:(1)自己需要实现session淘汰逻辑;
(2)进行高并发读写时,数据库性能将会成为瓶颈,且容易出现表锁。
方式三:基于NFS的session共享
多台运行服务器共享保存session文件的磁盘。
优点:实现简单,仅需将共享目录服务器mount到各频道服务器的本地session目录。
缺点:NFS依托于复杂的安全机制和文件系统,因此并发效率不高,尤其对于session这类高并发读写的小文件, 会由于共享目录服务器的io-wait过高,最终拖累前端WEB应用程序的执行效率。
方式四:基于Key + Value内存数据库的Session共享
推荐使用
优点:性能很高,用户并发量很大的时候尤其合适(内存数据读取速度快)。
内存数据库系统都有实现数据过期淘汰机制,可实现session过期删除。