做者:斷橋殘雪
連接: 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
獲取資料::