网站建设新手看什么书,wordpress增加购物车,免费网站模板建站,wordpress怎么加入站长统计cookie和session的区别和联系 cookie是本地客户端用来存储少量数据信息的#xff0c;保存在客户端#xff0c;用户能够很容易的获取#xff0c;安全性不高#xff0c;存储的数据量小 session是服务器用来存储部分数据信息#xff0c;保存在服务器#xff0c;用户不容易获…
cookie和session的区别和联系 cookie是本地客户端用来存储少量数据信息的保存在客户端用户能够很容易的获取安全性不高存储的数据量小 session是服务器用来存储部分数据信息保存在服务器用户不容易获取安全性高储存的数据量相对大存储在服务器会占用一些服务器资源但是对于它的优点来说这个缺点可以忽略了 session有什么用 在一次客户端和服务器为之间的会话中客户端(浏览器)向服务器发送请求首先cookie会自动携带上次请求存储的数据(JSESSIONID)到服务器服务器根据请求参数中的JSESSIONID到服务器中的session库中查询是否存在此JSESSIONID的信息如果存在那么服务器就知道此用户是谁如果不存在就会创建一个JSESSIONID并在本次请求结束后将JSESSIONID返回给客户端同时将此JSESSIONID在客户端cookie中进行保存 客户端和服务器之间是通过http协议进行通信但是http协议是无状态的不同次请求会话是没有任何关联的但是优点是处理速度快 session是一次浏览器和服务器的交互的会话当浏览器关闭的时候会话就结束了但是会话session还在默认session是还保留30分钟的 分布式session一致性 客户端发送一个请求经过负载均衡后该请求会被分配到服务器中的其中一个由于不同服务器含有不同的web服务器(例如Tomcat)不同的web服务器中并不能发现之前web服务器保存的session信息就会再次生成一个JSESSIONID之前的状态就会丢失 4种分布式session解决方案 方案一 客户端存储 直接将信息存储在cookie中 cookie是存储在客户端上的一小段数据客户端通过http协议和服务器进行cookie交互通常用来存储一些不敏感信息 缺点 数据存储在客户端存在安全隐患cookie存储大小、类型存在限制数据存储在cookie中如果一次请求cookie过大会给网络增加更大的开销方案二 session复制 session复制是小型企业应用使用较多的一种服务器集群session管理机制在真正的开发使用的并不是很多通过对web服务器(例如Tomcat)进行搭建集群。 存在的问题 session同步的原理是在同一个局域网里面通过发送广播来异步同步session的一旦服务器多了并发上来了session需要同步的数据量就大了需要将其他服务器上的session全部同步到本服务器上会带来一定的网路开销在用户量特别大的时候会出现内存不足的情况优点 服务器之间的session信息都是同步的任何一台服务器宕机的时候不会影响另外服务器中session的状态配置相对简单Tomcat内部已经支持分布式架构开发管理机制可以对tomcat修改配置来支持session复制在集群中的几台服务器之间同步session对象使每台服务器上都保存了所有用户的session信息这样任何一台本机宕机都不会导致session数据的丢失而服务器使用session时也只需要在本机获取即可如何配置 在Tomcat安装目录下的config目录中的server.xml文件中将注释打开tomcat必须在同一个网关内要不然收不到广播同步不了session 在web.xml中开启session复制distributable/ 方案三 session绑定 Nginx介绍 Nginx是一款自由的、开源的、高性能的http服务器和反向代理服务器 Nginx能做什么 反向代理、负载均衡、http服务器动静代理、正向代理 如何使用nginx进行session绑定 我们利用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;}
}缺点 容易造成单点故障如果有一台服务器宕机那么该台服务器上的session信息将会丢失前端不能有负载均衡如果有session绑定将会出问题优点 配置简单方案四 基于redis存储session方案 基于redis存储session方案流程示意图引入pom依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-session-data-redis/artifactId
/dependency
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-data-starter-redis/artifactId
/dependency配置redis #redis数据库索引(默认是0)
spring.redis.database0
spring.redis.host127.0.0.1
spring.redis.port6379
#默认密码为空
spring.redis.password
#连接池最大连接数(负数表示没有限制)
spring.redis.jedis.pool.max-active1000
#连接池最大阻塞等待时间(负数表示没有限制)
spring.redis.jedis.pool.max-wait-1ms
#连接池中的最大空闲连接
spring.redis.jedis.pool.max-idle10
#连接池中的最小空闲连接
spring.redis.jedis.pool.min-idle2
#连接超时时间(毫秒)
spring.redis.timeout500ms优点 这是企业中使用的最多的一种方式spring为我们封装好了spring-session直接引入依赖即可数据保存在redis中无缝接入不存在任何安全隐患redis自身可做集群搭建主从同时方便管理缺点 多了一次网络调用web容器需要向redis访问总结 一般会将web容器所在的服务器和redis所在的服务器放在同一个机房减少网络开销走内网进行连接 --------------------- 作者断橋殘雪 来源CSDN 原文https://blog.csdn.net/qq_35620501/article/details/95047642 版权声明本文为作者原创文章转载请附上博文链接 内容解析ByCSDN,CNBLOG博客文章一键转载插件