做者:断橋殘雪
连接: https://blog.csdn.net/qq_3562...
cookie是本地客户端用来存储少许数据信息的,保存在客户端,用户可以很容易的获取,安全性不高,存储的数据量小
session是服务器用来存储部分数据信息,保存在服务器,用户不容易获取,安全性高,储存的数据量相对大,存储在服务器,会占用一些服务器资源,可是对于它的优势来讲,这个缺点能够忽略了html
在一次客户端和服务器为之间的会话中,客户端(浏览器)向服务器发送请求,首先cookie会自动携带上次请求存储的数据(JSESSIONID)到服务器,服务器根据请求参数中的JSESSIONID到服务器中的session库中查询是否存在此JSESSIONID的信息,若是存在,那么服务器就知道此用户是谁,若是不存在,就会建立一个JSESSIONID,并在本次请求结束后将JSESSIONID返回给客户端,同时将此JSESSIONID在客户端cookie中进行保存前端
客户端和服务器之间是经过http协议进行通讯,可是http协议是无状态的,不一样次请求会话是没有任何关联的,可是优势是处理速度快java
session是一次浏览器和服务器的交互的会话,当浏览器关闭的时候,会话就结束了,可是会话session还在,默认session是还保留30分钟的nginx
客户端发送一个请求,通过负载均衡后该请求会被分配到服务器中的其中一个,因为不一样服务器含有不一样的web服务器(例如Tomcat),不一样的web服务器中并不能发现以前web服务器保存的session信息,就会再次生成一个JSESSIONID,以前的状态就会丢失web
直接将信息存储在cookie中cookie是存储在客户端上的一小段数据,客户端经过http协议和服务器进行cookie交互,一般用来存储一些不敏感信息redis
缺点算法
session复制是小型企业应用使用较多的一种服务器集群session管理机制,在真正的开发使用的并非不少,经过对web服务器(例如Tomcat)进行搭建集群。spring
存在的问题数据库
优势:浏览器
如何配置:
在Tomcat安装目录下的config目录中的server.xml文件中,将注释打开,tomcat必须在同一个网关内,要否则收不到广播,同步不了session
在web.xml中开启session复制:<distributable/>
Nginx是一款自由的、开源的、高性能的http服务器和反向代理服务器
反向代理、负载均衡、http服务器(动静代理)、正向代理
咱们利用nginx的反向代理和负载均衡,以前是客户端会被分配到其中一台服务器进行处理,具体分配到哪台服务器进行处理还得看服务器的负载均衡算法(轮询、随机、ip-hash、权重等),可是咱们能够基于nginx的ip-hash策略
,能够对客户端和服务器进行绑定,同一个客户端就只能访问该服务器,不管客户端发送多少次请求都被同一个服务器处理
在nginx安装目录下的conf目录中的nginx.conf文件
upstream aaa { Ip_hash; server 39.105.59.4:8080; Server 39.105.59.4:8081; } server { listen 80; server_name www.wanyingjing.cn; #root /usr/local/nginx/html; #index index.html index.htm; location / { proxy_pass http:39.105.59.4; index index.html index.htm; } }
缺点:
优势:
基于redis存储session方案流程示意图
引入pom依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-data-starter-redis</artifactId> </dependency>
配置redis
#redis数据库索引(默认是0) spring.redis.database=0 spring.redis.host=127.0.0.1 spring.redis.port=6379 #默认密码为空 spring.redis.password= #链接池最大链接数(负数表示没有限制) spring.redis.jedis.pool.max-active=1000 #链接池最大阻塞等待时间(负数表示没有限制) spring.redis.jedis.pool.max-wait=-1ms #链接池中的最大空闲链接 spring.redis.jedis.pool.max-idle=10 #链接池中的最小空闲链接 spring.redis.jedis.pool.min-idle=2 #链接超时时间(毫秒) spring.redis.timeout=500ms
优势:
缺点:
通常会将web容器所在的服务器和redis所在的服务器放在同一个机房,减小网络开销,走内网进行链接
12 套 微服务、Spring Boot、Spring Cloud 核心技术资料,这是部分资料目录:
公众号后台回复arch028
获取资料::