Tomcat中負載的Session解決辦法

2021-09-08 23:23:11 字數 900 閱讀 9947

tomcat進行請求的session解決方式總體來說有三種,

(1)使用nginx或者apache反向**工具進行使用者請求的分機器,在tomcat的engine中的標籤中加入jvmroute屬性,指定對應的負載到這個機器上就可以了,即稱為有粘性的session。

nginx_upstream_jvm_route是乙個nginx的擴充套件模組,用來實現基於 cookie 的 session sticky 的功能。

簡單來說,它是基於cookie中的jsessionid來決定將請求傳送給後端的哪個server,nginx_upstream_jvm_route會在使用者第一次請求後端server時,將響應的server標識繫結到cookie中的jsessionid中,從而當使用者發起下一次請求時,nginx會根據jsessionid來決定由哪個後端server來處理。

還可以使用ip_hash的方式來進行,但是,不推薦這樣的方式,所以,總體來說,這個方式是可以進行負載的,也是解決session問題。

通常,更推薦大家使用第三方的**進行session的分機器方式,這樣在高可用方面可能稍微欠缺,但是,如果不是很大的專案情況,不會出現太大的問題。

配置方式:待後面進行實際親測後貼出來

這裡也講了一些價值的東西:

(2)使用tomcat自帶的功能,進行服務間的session複製,但是,session複製可以使用兩種方式,修改後全量的複製,還是修改後增量複製,對應的tomcat的類,deltasession(增量)、replicatedsession(全量,暫時在tomcat9原始碼中未找到),這裡的配置還有待新增。即稱為無粘性的session。

配置方式:待後面進行實際親測後貼出來

(3)將tomcat的session管理分離出來,進行統一管理,將session放入到redis或其他快取中去。

Tomcat中兩個不同專案共享Session

本文研究的是同乙個tomcat目錄下的兩個不同的應用共享同乙個session。由於每個web應用程式都有乙個唯一的乙個servletcontext例項物件,本應用中的所有的servlet共享此servletcontext。利用servletcontext中的setattribute 方法把sessi...

Tomcat中兩個不同專案共享Session

本文研究的是同乙個tomcat目錄下的兩個不同的應用共享同乙個session。由於每個web應用程式都有乙個唯一的乙個servletcontext例項物件,本應用中的所有的servlet共享此servletcontext。利用servletcontext中的setattribute 方法把sessi...

Tomcat中兩個不同專案共享Session

本文研究的是同乙個tomcat目錄下的兩個不同的應用共享同乙個session。由於每個web應用程式都有乙個唯一的乙個servletcontext例項物件,本應用中的所有的servlet共享此servletcontext。利用servletcontext中的setattribute 方法把sessi...