背景
最近我们项目想上分布式,所以工作中涉及一些对springboot项目在项目架构上的思考
session和cookie的大概区别
(很多网站登录一次登录,可以很多次不用密码,其中就用到了session和cookie。所以用用户登录来说明)
cookie将用户登录信息保存在浏览器端,下次登录直接发送cookie,就不需要输入用户名密码;
session将用户信息保存在服务端的服务运行内存中,下次登录直接比较内存中的session,如果对比一直,就不要用户名密码。
(cookie如果数据多浪费传输带宽,cookie可以破解,session保存在服务器不安全,分布式的时候session共享问题)
session的问题
上面说session保存在服务器,那么如果同一个前端服务有多个实例怎么办?用户这次登陆A实例,下次是B实例,那么session就不能共享。
所以分布式需要解决session问题。(一般用redis集群来解决,session共享问题)
优秀的spring服务架构,需要做到服务无状态
去session(用Redis实现共享session)
一般cache也有类似的问题,所以一般都会用双cache,首先redis,然后搞一个默认的caffeine、guava等什么的。