久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長資訊網
最全最豐富的資訊網站

Tomcat之session解決方案

session方案及配置

用戶訪問服務器資源主要分成兩類,一類是無狀態訪問,例如請求一張圖片。另一類是有狀態訪問,這種情況下,服務器需要記錄追蹤用戶狀態,并根據用戶所處狀態做出不同響應,典型的例子是購物車。Session的作用就是在Web服務器上保持用戶的狀態信息。

用戶請求連接服務器時,服務器會生成一個唯一的sessionID為標識符至用戶端本地,客戶端使用該sessionID來存/取服務器端的session空間。sessionID是客戶端瀏覽器cookie保存的。

當客戶端訪問Tomcat集群時,所有的請求將被Nginx攔截,由Nginx做負載均衡后轉發給后臺真實Tomcat。按照這個流程就可能出現一個問題,當用戶進行頁面刷新或跳轉時,每次請求將被轉發給不同的Tomcat處理,這樣就會造成Session的不同步。舉個簡單的栗子,例如當用戶往購物車添加商品時,興高采烈地準備買單了,當他跳轉到付款頁面卻發現購物車被清空了,這就是Session丟失的典型栗子。因此,我們需要為集群環境做Session同步。

單機環境下,session可有部署在服務器上的web容器如:Tomcat進行保存管理。但在使用負載均衡集群時如架構前端Nginx來負載均衡后端多臺Tomcat,所以可能分發到任何一臺后端的Tomcat;雖然呢,也有類似于Nginx中的ip_hash算法可以將客戶端和服務器做一個綁定,但是弊端太多,生產環境慎用。

下面將介紹幾種session的方案

一、session綁定

session綁定就是利用負載均衡服務器的hash源IP地址算法實現,將來源于同一個IP的請求總是分發到同一臺后端web服務器上,又稱為會話粘滯。 但是如果該服務器死機或故障,那該用戶的session空間也就不復存在了,就如我們網頁瀏覽購物網站時,剛添加到購物車的寶貝,一刷新全沒了,用戶體驗肯定非常差,所以該session綁定方案使用場景非常有限

#編輯nginx主配置文件  upstream tomcats {      ip_hash  #使用ip_hash算法調度    server 192.168.111.4:8080;      server 192.168.111.5:8080;      }

二、session復制

適用于小型架構的服務器集群。開啟web服務器的session復制功能,在集群中的幾臺服務器之間同步session對象,這樣每臺服務器都保存了用戶的session信息,但是當集群規模比較大時,session復制機制會消耗大量系統資源以及網絡資源

操作系統 IP地址 軟件版本 主機名
CentOS7 192.168.111.3 nginx1.14.2 Nginx
centos7 192.168.111.4 JDK1.7;Tomcat7.0.54 tnode1
centos7 192.168.111.5 JDK1.7;Tomcat7.0.54 tnode2

如有防火墻或selinux記得關閉或者修改相應規則

[root@localhost ~]# nginx -v  nginx version: nginx/1.14.2    [root@localhost ~]# vim /etc/hosts      192.168.111.3   nginx      192.168.111.4   tnode1      192.168.111.5   tnode2    [root@localhost ~]# scp /etc/hosts 192.168.111.4:/etc/  [root@localhost ~]# scp /etc/hosts 192.168.111.5:/etc/  #配置hosts文件    #hostname nginx  #hostname tnode1  #hostname tnode2  修改主機名      [root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf      http {      ...          upstream tomcatpool {              server 192.168.111.4:8080 weight=1 max_fails=1 fail_timeout=10s;              server 192.168.111.5:8080 weight=1 max_fails=1 fail_timeout=10s;              }      #以上為添加      location / {              root   html;              index  index.html index.htm;              proxy_pass http://tomcatpool;          }      #以上為修改添加最下面一行調用池      安裝配置Tomcat。    [root@tnode1 ~]# tar zxf jdk-7u65-linux-x64.tar.gz   [root@tnode1 ~]# mv jdk1.7.0_65/ /usr/local/java7  [root@tnode1 ~]# echo "PATH=$PATH:/usr/local/java7/bin" >> /etc/profile  [root@tnode1 ~]# source /etc/profile  [root@tnode1 ~]# rm -rf /usr/bin/java  [root@tnode1 ~]# java -version  java version "1.7.0_65"  Java(TM) SE Runtime Environment (build 1.7.0_65-b17)  Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)  [root@tnode1 ~]# tar zxf apache-tomcat-7.0.54.tar.gz   [root@tnode1 ~]# mv apache-tomcat-7.0.54 /usr/local/tomcat7      [root@tnode2 ~]# tar zxf jdk-7u65-linux-x64.tar.gz   [root@tnode2 ~]# mv jdk1.7.0_65/ /usr/local/java7  [root@tnode2 ~]# echo "PATH=$PATH:/usr/local/java7/bin" >> /etc/profile  [root@tnode2 ~]# source /etc/profile  [root@tnode2 ~]# rm -rf /usr/bin/java  [root@tnode1 ~]# java -version  java version "1.7.0_65"  Java(TM) SE Runtime Environment (build 1.7.0_65-b17)  Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)  [root@tnode2 ~]# tar zxf apache-tomcat-7.0.54.tar.gz   [root@tnode2 ~]# mv apache-tomcat-7.0.54 /usr/local/tomcat7      [root@tnode1 ~]# vim /usr/local/tomcat7/webapps/ROOT/session.jsp  #測試頁面      Session ID:<%= session.getId() %><BR>      SessionPort:<%= request.getServerPort() %>      <% out.println("This tomcat server 192.168.111.4");%>      [root@tnode2 ~]# vim /usr/local/tomcat7/webapps/ROOT/session.jsp      Session ID:<%= session.getId() %><BR>      SessionPort:<%= request.getServerPort() %>      <% out.println("This tomcat server 192.168.111.5");%>        #這是一個獲取當前服務器所擁有的IP和sessionID的腳本頁面        下面開始配置session復制(生產環境時一般10臺以下使用該session解決方案    [root@tnode1 ~]# vim /usr/local/tomcat7/conf/server.xml       104     <Engine name="Catalina" defaultHost="localhost" jvmRoute="tnode1">      #改行后面添加jvmroute配置項。      109       <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>      #去掉注釋        [root@tnode1 ~]# vim /usr/local/tomcat7/webapps/ROOT/WEB-INF/web.xml       </description>       #添加至倒數第二行      [root@tnode2 ~]# vim /usr/local/tomcat7/conf/server.xml       <Engine name="Catalina" defaultHost="localhost" jvmRoute="tnode2">      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>        [root@tnode1 ~]# vim /usr/local/tomcat7/webapps/ROOT/WEB-INF/web.xml       </description>       #添加至倒數第二行        [root@tnode1 ~]# /usr/local/tomcat7/bin/shutdown.sh    [root@tnode1 ~]# /usr/local/tomcat7/bin/startup.sh     [root@tnode2 ~]# /usr/local/tomcat7/bin/shutdown.sh     [root@tnode2 ~]# /usr/local/tomcat7/bin/startup.sh         客戶端使用火狐瀏覽器輸入:http://192.168.111.3/session.jsp來進行測試,并且刷新(別強制刷新,那樣是新的sessionID)

三、使用memcached解決session問題

memcached是一套分布式的快取系統,相關數據都是在內存里,一旦服務重啟或者死機,則數據必然丟失;memcached是鍵值對存儲形式;在以下試驗中,每個session都會在這兩臺memcached上進行分布式存儲,有了冗余性,即使一臺出問題也不影響工作。同樣只適用于中小型架構。
Tomcat之session解決方案

以下的配置兩臺Tomcat一樣

[root@tnode1 ~]# yum -y install libevent memcached  #安裝memcached及其依賴    [root@tnode1 ~]# memcached -u root -m 512M -n 10 -f 2 -d -vvv -c 512      //-u:運行用戶必須是root身份      //-m:指定使用物理機的多少內存      //-n:chunk size的最小空間是多少字節      //-f:chunk size大小增長的倍數默認1.25倍      //-d:在后臺啟動      //-vvv:顯示詳細信息      //-c:memcached服務的最大連接數  Tomcat連接memcached所依賴的庫文件:  javolution-5.5.1.jar                     memcached-session-manager-1.5.1.jar      msm-kryo-serializer-1.6.4.jar  kryo-1.03.jar                            memcached-session-manager-tc7-1.5.1.jar  reflectasm-0.9.jar  kryo-serializers-0.10.jar                minlog-1.2.jar                           spymemcached-2.7.3.jar  memcached-2.5.jar                        msm-javolution-serializer-1.5.1.jar   將這些文件放到/usr/local/tomcat7/lib/目錄下    配置文件連接memcached。  [root@tnode2 ~]# vim /usr/local/tomcat7/conf/context.xml       <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="memA:192.168.111.4:11211 memB:192.168.111.5:11211" requestUrilgnorePattern=".*(ico|png|gif|jpg|css|js)$" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"/>        [root@tnode2 ~]# /usr/local/tomcat7/bin/shutdown.sh   [root@tnode2 ~]# /usr/local/tomcat7/bin/startup.sh  #重啟服務    測試頁仍然使用以上的那個測試頁    瀏覽器訪問http://192.168.111.3/session.jsp測試,可以看到sessionID不變

四、使用redis解決session問題

注意:盡量保持系統環境的純凈

如果使用如上做完memcached環境接著做redis    1.rpm -e memcached-1...  2.vim /usr/local/tomcat7/conf/context.xml  3.pkill -9 memcached  4.刪除相關jar包        安裝部署redis  [root@tnode1 ~]# tar zxf redis-3.2.5.tar.gz   [root@tnode1 ~]# yum -y install tcl  #依賴包    [root@tnode1 src]# mkdir /usr/local/redis/{bin,etc,var} -pv      [root@tnode1 src]# cp ~/redis-3.2.5/src/redis-benchmark redis-check-aof redis-cli redis-server /usr/local/redis/bin/  //redis-benchmark:讀寫性能測試工具  //redis-cli:redis命令行操作工具  //redis-server:redis服務的daemon啟動程序  [root@tnode1 src]# cp ~/redis-3.2.5/redis.conf /usr/local/redis/etc/  //redis的主配置文件      [root@tnode1 src]# vim /usr/local/redis/etc/redis.conf      128 daemonize yes      #表示將redis啟動在后臺            61 bind 0.0.0.0      #監聽所有主機      [root@tnode1 src]# /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf   [root@tnode1 src]# netstat -anpt | grep redis  tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      69432/redis-server    #啟動并且查看端口      Tomcat和redis連接需要用到如下包:  commons-logging-1.1.3.jar                jedis-2.5.2.jar                          tomcat-redis-session-manage-tomcat7.jar  commons-pool2-2.2.jar                    tomcat-juli.jar                              [root@tnode1 ~]# vim /usr/local/tomcat7/conf/context.xml   #連接redis配置  <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />  <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" host="192.168.111.4" port="6379" database="0" maxInactiveInterval="60" />  #Context字段中添加如上,IP為redis服務器的IP。      #如下可以先把node2上該lib目錄刪掉,直接復制覆蓋  [root@tnode1 ~]# scp -r /usr/local/tomcat7/lib root@192.168.111.5:/usr/local/tomcat7/lib    #如下是直接覆蓋node2配置文件  [root@tnode1 ~]# scp /usr/local/tomcat7/conf/context.xml root@192.168.111.5:/usr/local/tomcat7/conf/    #然后node2上重啟Tomcat服務,可多重啟幾遍順便觀察node1上的redis監視狀態,并且時刻關注本機catalina.out日志變化是否異常。      #如下是正常情況下redis監視的狀態輸出  [root@tnode1 src]# /usr/local/redis/bin/redis-cli -p 6379 monitor    1556385116.932343 [0 192.168.111.4:37948] "EXPIRE" "DCF23D098140E899E20A996990F690D5" "1800"  1556385116.970109 [0 192.168.111.4:37948] "GET" "DCF23D098140E899E20A996990F690D5"  1556385116.972760 [0 192.168.111.4:37948] "EXPIRE" "DCF23D098140E899E20A996990F690D5" "1800"  1556385117.582753 [0 192.168.111.4:37948] "GET" "DCF23D098140E899E20A996990F690D5"  1556385117.584391 [0 192.168.111.4:37948] "EXPIRE" "DCF23D098140E899E20A996990F690D5" "1800"  1556385117.599639 [0 192.168.111.4:37948] "GET" "DCF23D098140E899E20A996990F690D5"  1556385117.600743 [0 192.168.111.4:37948] "EXPIRE" "DCF23D098140E899E20A996990F690D5" "1800"  1556385125.008432 [0 192.168.111.4:37948] "PING"  1556385155.006175 [0 192.168.111.4:37948] "PING"  1556386097.450914 [0 192.168.111.5:34118] "SETNX" "F7379EF99F21FD0BBF830056FEF162A0" "null"  1556386097.575639 [0 192.168.111.5:34118] "SET" "F7379EF99F21FD0BBF830056FEF162A0" "xacxedx00x05srx00Dcom.orangefunction.tomcat.redissessions.S  essionSerializationMetadataBxd9xd9xf7vxa2xdbLx03x00x01[x00x15sessionAttributesHashtx00x02[Bxpwx14x00x00x00x10x1fxa2xa9ox15x7fxe1Wx9cx9cxc6xc2xb0xd5xe2xa8xsrx00x0ejava.lang.Long;x8bxe4x90xccx8f#xdfx02x00x01Jx00x05valuexrx00x10java.lang.Numberx86xacx95x1dx0bx94xe0x8bx02x00x00xpx00x00x01j3x83Fxddsqx00~x00x03x00x00x01j3x83Fxddsrx00x11java.lang.Integerx12xe2xa0xa4xf7x81x878x02x00x01Ix00x05valuexqx00~x00x04x00x00absrx00x11java.lang.Booleanxcd rx80xd5x9cxfaxeex02x00x01Zx00x05valuexpx01qx00~x00nsqx00~x00x03x00x00x01j3x83Fxddtx00 F7379EF99F21FD0BBF830056FEF162A0sqx00~x00ax00x00x00x00wbx00x00x01j3x83Fxdd"1556386097.577377 [0 192.168.111.5:34118] "EXPIRE" "F7379EF99F21FD0BBF830056FEF162A0" "1800"  1556386097.586858 [0 192.168.111.5:34118] "EXPIRE" "F7379EF99F21FD0BBF830056FEF162A0" "1800"  1556386099.395455 [0 192.168.111.5:34118] "GET" "F7379EF99F21FD0BBF830056FEF162A0"  1556386099.403983 [0 192.168.111.5:34118] "EXPIRE" "F7379EF99F21FD0BBF830056FEF162A0" "1800"  1556386099.410867 [0 192.168.111.5:34118] "GET" "F7379EF99F21FD0BBF830056FEF162A0"  1556386099.413166 [0 192.168.111.5:34118] "EXPIRE" "F7379EF99F21FD0BBF830056FEF162A0" "1800"  1556386099.855877 [0 192.168.111.5:34118] "GET" "F7379EF99F21FD0BBF830056FEF162A0"  1556386099.857305 [0 192.168.111.5:34118] "EXPIRE" "F7379EF99F21FD0BBF830056FEF162A0" "1800"  1556386100.497947 [0 192.168.111.5:34118] "GET" "F7379EF99F21FD0BBF830056FEF162A0"        客戶端訪問http://192.168.111.3/session.jsp,是Nginx的地址來進行測試,正常時是sessionID不會變的  

五、memcached和redis對比表

、 內存利用率 性能 數據持久化 其它
redis 鍵值對村存儲利用率低于memcached,但使用hash結構存儲則超過后者 只使用單核CPU,數據大小100K以下快于后者 支持數據持久化(保存到硬盤) Redis 支持數據的備份,即 master-slave 模式的數據備份,支持多種數據結構的存儲
memcached 如上 可以使用多核,100K以上快于前者 自身不支持持久化,但可以結合其他數據庫做架構如:memcached + bdb 兩者性能都屬于非常不錯的,而且也都是開源免費。
贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
欧美日韩精品免费观看视欧美高清免费大片| 精品国产午夜肉伦伦影院| 国产精品7m凸凹视频分类| 韩日一区二区| 国产自产自拍视频在线观看| yellow在线观看网址| 国产精品国产一区| 国产一区二区三区亚洲综合| 国产va免费精品观看精品视频| 欧美天堂一区| 欧美a级一区二区| 成人污污视频| 久久久久国产| 中国女人久久久| 亚洲人www| 国产精品一国产精品| 国际精品欧美精品| 亚洲不卡av不卡一区二区| 好吊日精品视频 | 国产精品一页| 精品午夜久久| 日本免费久久| 欧美日韩中文字幕一区二区三区| 欧美精品一线| 亚洲va久久久噜噜噜久久| 国产日产高清欧美一区二区三区 | 日韩国产欧美三级| 欧美韩一区二区| 日韩欧美少妇| 亚洲综合精品四区| 国产视频网站一区二区三区| 91亚洲国产高清| 亚洲男女av一区二区| 亚洲自拍另类| 国产精品一区二区三区四区在线观看 | 欧美日韩一二三四| 日韩影院精彩在线| 久久xxx视频| 精品一区在线| 欧美日韩精品一区二区三区视频 | 久久中文字幕一区二区三区| 午夜欧美巨大性欧美巨大| 噜噜噜躁狠狠躁狠狠精品视频| 欧美中文一区| 欧产日产国产精品视频| 伊人久久婷婷| 国产精品一国产精品k频道56| 亚洲四虎影院| 日韩一区精品| 免费污视频在线一区| 综合五月婷婷| 国产欧洲在线| 亚洲午夜久久| 国产白浆在线免费观看| 中文视频一区| 日韩久久一区二区三区| 亚洲精品看片| 亲子伦视频一区二区三区| 日韩综合小视频| 亚洲三级精品| 久久av日韩| 日韩亚洲在线| 精品午夜视频| 亚洲精品一级| 99热国内精品| 国产极品模特精品一二| 欧美色图一区| 国产剧情一区| 亚洲精品91| 风间由美中文字幕在线看视频国产欧美| 欧洲激情综合| 精品国产乱码久久久久久樱花| 亚洲一区av| 久久九九国产| 精品91福利视频| 日本午夜精品一区二区三区电影 | 欧美国产专区| 亚洲久久视频| 欧美日韩国产一区二区三区不卡| 欧美在线不卡| 日本欧美在线看| 久久香蕉国产| 久久久久97| 69堂精品视频在线播放| 国产精品三上| 日韩中文视频| 美女视频免费精品| 日本中文字幕一区二区| 美女网站一区| 高清av一区| 久久成人福利| 久久精品999| 人人爽香蕉精品| 在线日韩欧美| 福利在线一区| 国产精品嫩草影院在线看| 蜜桃av一区二区三区电影| 99精品在线| 日韩伦理福利| 精品免费视频| 你懂的国产精品| 国产欧美一区二区精品久久久| 一本一道久久a久久| 99国产精品自拍| 激情视频一区二区三区| 国产欧洲在线| 日韩伦理在线一区| 神马午夜在线视频| 精品资源在线| 国产伦精品一区二区三区千人斩 | 国产精品久久| 久久激情五月婷婷| 日韩一区二区三区精品| 国产精品毛片| 偷拍欧美精品| 91亚洲人成网污www| 荡女精品导航| 日本不卡免费高清视频在线| 欧美丰满日韩| 色欧美自拍视频| 欧美日韩一区二区三区在线电影| 亚洲毛片视频| 一区二区三区午夜视频| 在线观看亚洲精品福利片| 亚洲欧美日韩国产| 石原莉奈在线亚洲三区| 免费观看在线色综合| 久久国产精品亚洲77777| 视频一区二区三区中文字幕| 免费在线欧美视频| 三级亚洲高清视频| 婷婷丁香综合| 国产精品3区| 久久精品xxxxx| 国产伦精品一区二区三区千人斩| 日韩精品一区第一页| 中文一区在线| 六月天综合网| 色综合视频一区二区三区日韩| 中文字幕一区二区三区日韩精品 | 亚洲午夜一级| 伊人精品视频| 天堂av在线一区| 蜜桃视频在线观看一区二区| 亚洲精品日本| 国产精品网在线观看| 麻豆中文一区二区| 日韩伦理福利| 日韩综合精品| 欧美精品一二| 日韩精品一卡二卡三卡四卡无卡| 日韩激情啪啪| 久久三级中文| 999国产精品视频| 午夜一区在线| 日本va欧美va瓶| 国产精品网在线观看| 国产一区二区三区亚洲综合| 亚洲精品**中文毛片| 欧美成人综合| 在线精品亚洲| 欧美黄色一区| 久久美女精品| 先锋影音国产一区| 奇米777国产一区国产二区| 美女久久精品| 亚洲国内精品| 亚州国产精品| 精品视频一区二区三区四区五区| 成人免费网站www网站高清| 影音先锋国产精品| 日本久久一区| 成人精品国产亚洲| 欧美在线亚洲综合一区| 亚州精品视频| 国产在线观看91一区二区三区| 久久免费福利| 极品日韩av| 日韩一区二区三区四区五区| 欧美日韩中文| 日韩深夜视频| 免费观看日韩电影| 欧美国产日本| 今天的高清视频免费播放成人| 综合激情网...| 国产一区国产二区国产三区| 日韩视频一区二区三区在线播放免费观看| 亚洲三区欧美一区国产二区| 国产一区二区视频在线看| 亚洲激情中文在线| 国产精品qvod| 亚洲精品国产偷自在线观看| 国产亚洲一卡2卡3卡4卡新区| 日本少妇一区| 亚洲综合激情在线| 岛国av免费在线观看| 免费在线观看日韩欧美| 美女尤物国产一区| 亚洲一区观看| 麻豆国产精品|