龙空技术网

Spring Session 简单的了解

峡谷那些事儿 852

前言:

现在兄弟们对“反向代理 session”都比较重视,看官们都需要学习一些“反向代理 session”的相关资讯。那么小编也在网摘上搜集了一些有关“反向代理 session””的相关文章,希望我们能喜欢,你们一起来了解一下吧!

原来以为对于session和cookie的实现机制还是比较的了解的,但是在接触到一些分布式用户session信息的管理的时候,就会发现对于一些基本的概念有些模糊了。。。

1.浏览器是如何区分不同的用户?

虽然我们一直认为session是保存在服务端、cookie保存在客户端的,但是我们登录后的用户是如何区分当前的用户的id额,说道这里我发现了自己以前没有好好的思考过这个问题,参考链接中如何区分不同的用户和session id如何产生的都有详细的介绍,具体就是呢(虽然Session保存在服务器,对客户端是透明的,它的正常运行仍然需要客户端浏览器的支持。这是因为Session需要使用Cookie作为识别标志。HTTP协议是无状态的,Session不能依据HTTP连接来判断是否为同一客户,因此服务器向客户端浏览器发送一个名为JSESSIONID的Cookie,它的值为该Session的id(也就是HttpSession.getId()的返回值)。Session依据该Cookie来识别是否为同一用户。)

2.对于分布式系统我们需要考虑的几点

单服务器web应用中,session信息只需存在该服务器中,这是我们前几年最常接触的方式(guava cache与spring集成),但是近几年随着分布式系统的流行,单系统已经不能满足日益增长的百万级用户的需求,集群方式部署服务器已在很多公司运用起来,当高并发量的请求到达服务端的时候通过负载均衡的方式分发到集群中的某个服务器,这样就有可能导致同一个用户的多次请求被分发到集群的不同服务器上,就会出现取不到session数据的情况,于是session的共享就成了一个问题。

3.四种解决方案

a. 基于IP机制的负载均衡,各自维护自己的session.

反向代理hash一致性

b. 服务器session复制,可以通过Tomact配置集群的方式配置同步session。

session复制(同步)

c. Session 统一缓存,这个就是spring seesion解决方案。

后端统一存储(redis)

d. 客户端缓存,也就是token机制

token机制

app常用

标签: #反向代理 session