日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Tomcat集群及Session共享

發(fā)布時(shí)間:2024/3/26 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Tomcat集群及Session共享 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Tomcat集群

由于單臺(tái)Tomcat的承載能力是有限的,當(dāng)我們的業(yè)務(wù)系統(tǒng)用戶量比較大,請(qǐng)求壓力比較大時(shí),單臺(tái)Tomcat是扛不住的,這個(gè)時(shí)候,就需要搭建Tomcat的集群,而目前比較流行的做法就是通過Nginx 來實(shí)現(xiàn)Tomcat集群的負(fù)載均衡

1、準(zhǔn)備工作

1、準(zhǔn)備Tomcat
在服務(wù)器上,安裝兩臺(tái)tomcat(這里記得要改tomcat服務(wù)器端口號(hào))
2、安裝配置Nginx
在當(dāng)前服務(wù)器上,安裝Nginx
安裝完Nginx后,配置Nginx,修改配置文件conf/nginx.conf
加入代碼:

upstream serverpool {server localhost:8888;server localhost:9999; }server {listen 99;server_name localhost;# 后端搜索服務(wù)localhost / {proxy_pass http://serverpool/;} }

2、Session共享

在tomcat集群中,如果應(yīng)用需要用戶進(jìn)行登錄,這個(gè)時(shí)候,由于tomcat做了負(fù)載均衡,則用戶登錄并訪問應(yīng)用系統(tǒng)時(shí),就會(huì)出現(xiàn)問題

解決方案一:ip_hash 策略

一個(gè)用戶發(fā)起的請(qǐng)求,只會(huì)請(qǐng)求到tomcat1上進(jìn)行操作,另一個(gè)用戶發(fā)起的請(qǐng)求只在tomcat2上進(jìn)行操作。那么這個(gè)時(shí)候,同一個(gè)用戶發(fā)起的請(qǐng)求,都會(huì)通過nginx的ip_hash策略,將請(qǐng)求轉(zhuǎn)發(fā)到其中一臺(tái)tomcat上


假設(shè)用戶發(fā)送請(qǐng)求的ip為192.180.0.100,因?yàn)榇藭r(shí)的負(fù)載均衡策略是ip_hash策略,那么nginx就會(huì)對(duì)192.180.0.100這個(gè)ip地址進(jìn)行hash算法,算出的hash值指向了tomcat1,tomcat1存儲(chǔ)了該用戶的登錄信息,再進(jìn)行查詢操作,nginx算出的hash值還是指向了tomcat1。所以,該用戶的登錄和查詢都是在同一臺(tái)tomcat,這樣就不會(huì)出現(xiàn)登錄成功而查詢失敗的問題

解決方案二:Session復(fù)制
在tomcat中修改配置文件,修改文件名為conf/server.xml,添加代碼,這段代碼加在 <Engine> 或者 <Host> 里面

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster/>

然后,在tomcat部署的應(yīng)用中(放在webapps中),修改WEB-INF/web.xml,在web.xml中加入代碼:<distributable/>.即可

方案二是通過廣播的形式進(jìn)行session復(fù)制,當(dāng)tomcat服務(wù)器的數(shù)量有很多時(shí),方案二會(huì)對(duì)session復(fù)制很多次,就會(huì)浪費(fèi)很多的資源

解決方案三:SSO單點(diǎn)登錄

單點(diǎn)登錄(Single Sign On),簡(jiǎn)稱為 SSO,是目前比較流行的企業(yè)業(yè)務(wù)整合的解決方案之一。sso的定義是在多個(gè)應(yīng)用系統(tǒng)中,用戶只需要登錄一次就可以訪問所以相互信任的應(yīng)用系統(tǒng),也是用來解決集群環(huán)境session共享的方案之一
客戶端發(fā)起一次請(qǐng)求,請(qǐng)求到達(dá)nginx,nginx會(huì)去后端請(qǐng)求應(yīng)用服務(wù)器tomcat1(假設(shè)請(qǐng)求到了tomcat1),如果應(yīng)用需要登錄,tomcat1會(huì)將這個(gè)請(qǐng)求重定向到認(rèn)證服務(wù),在認(rèn)證服務(wù)中進(jìn)行登錄,然后認(rèn)證服務(wù)會(huì)將登錄的信息保存在redis數(shù)據(jù)庫當(dāng)中。下一次,用戶再一次發(fā)起查詢請(qǐng)求,請(qǐng)求到達(dá)nginx,nginx請(qǐng)求到了tomcat2,這時(shí)候,tomcat2中是沒有用戶登錄的信息,它就會(huì)到認(rèn)證系統(tǒng)中進(jìn)行驗(yàn)證,然后認(rèn)證系統(tǒng)就會(huì)去redis中查詢有沒有用戶登錄的信息,如果有,就可以在tomcat2中進(jìn)行查詢操作

總結(jié)

以上是生活随笔為你收集整理的Tomcat集群及Session共享的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。