zoukankan      html  css  js  c++  java
  • Tomcat Session独立服务器之Memcached与Redis

    一、解决方案三: Session独立服务器之Memcached

    如果之前做过session复制,先把之前做的步骤还原

    [root@node1 ~]# vim /usr/local/tomcat8/conf/server.xml
    [root@node1 ~]# vim /usr/local/tomcat8/webapps/ROOT/WEB-INF/web.xml
    [root@node1 ~]# /usr/local/tomcat8/bin/shutdown.sh &&/usr/local/tomcat8/bin/startup.sh

    恢复到默认的轮询状态

    112和113既是Tomcat也是Memcached

    1、两台Tomcat上装上Memcached(内存型的缓存服务,运行和数据的存储在内存上操作)

    [root@node1 ~]# yum -y install libevent memcached

    [root@node1 ~]# memcached -u root -m 512M -n 10 -f 2 -d -vvv -c 512

    选项: 
    -h     #查看帮助信息

    -p      指定memcached监听的端口号默认11211

    -u    #memcached程序运行时使用的用户身份必须是root用户

    -l     #memcached服务器的ip地址

    -m    #指定使用本机的多少物理内存存数据默认64M

    -c     #memcached服务的最大链接数

    -vvv  #显示详细信息

    -n     #chunk size的最小空间是多少单位字节

    -f       #chunk size大小增长的倍数默认1.25倍

    -d     #在后台启动

     [root@node1 ~]# netstat -lnpt | grep :11211

    2、测试memcached能否存储数据

    [root@node1 ~]# yum -y install telnet

    [root@node1 ~]# telnet 192.168.200.112 11211

    set username 0 0 8

    zhangsan

    get username

    quit

    3、最后执行让tomcat-1和tomcat-2通过(msm)连接到memcached,将session包中的“.jar复制到/usr/local/tomcat/lib/下面”

    先在112和113上创建一个session的文件,把一些.jar的包传上去

    [root@node1 ~]# mkdir session
    [root@node1 ~]# cd session/

     [root@node1 ~]# cp session/*.jar /usr/local/tomcat8/lib/

    4、编辑tomcat配置文件连接指定的memcached服务器,两台tomcat配置一样

    [root@node1 ~]# vim /usr/local/tomcat8/conf/context.xml       // 添加以下内容

    <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"

    memcachedNodes="memA:192.168.200.112:11211 memB:192.168.200.113:11211"
    requestUrilgnorePattern=".*(ico|png|gif|jpg|css|js)$"
    transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
    />

     [root@node2 ~]# /usr/local/tomcat8/bin/shutdown.sh &&  /usr/local/tomcat8/bin/startup.sh 

    去网页上测试,session ID和mem不会变,ip会变。

    二、解决方案四: Session独立服务器之Redis

    把之前做的步骤还原

    [root@node2 ~]# killall -9 memcached
    [root@node2 ~]# vim /usr/local/tomcat8/conf/context.xml

    [root@node2 ~]# ls session/ | while read line; do rm -rf /usr/local/tomcat8/lib/$line; done

    [root@node2 ~]# /usr/local/tomcat8/bin/shutdown.sh &&  /usr/local/tomcat8/bin/stah 

    Redis与Memcached的区别
    ●内存利用率:使用简单的keyvalue (键值对)存储的话,Memcached 的内存利用率更高,而如果Redis采用hash结构来做key value存储,由于其组合式的压缩,其内存利用率会高于Memcached。
    ●性能对比:由于Redis只使用单核,而Memcached可以使用多核,所以平均每一个核上Redis 在存储小数据时比Memcached 性能更高。而在100k以上的数据 中,Memcached性能要高于Redis, 虽然Redis 最近也在存储大数据的性能上进行优化,但是比起Memcached,还是稍有逊色。
    ●Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用
    ●Redis支持数据的备份,即master slave模式的数据备份。
    ●Redis不仅仅支持简单的key Value类型的数据,同时还提供ist, set, zset, hash 等数据结构的存储。

    只在一台tomcat上操作:
    1、安装部署redis

    把redis-4.0.9.tar.gz  rz进来

    [root@node1 ~]# tar xf redis-4.0.9.tar.gz -C /usr/src/
    [root@node1 ~]# cd /usr/src/redis-4.0.9/
    [root@node1 redis-4.0.9]# make

    [root@node1 redis-4.0.9]# mkdir -p /usr/local/redis/{bin,etc,var}

    [root@node1 src]# cp redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-server /usr/local/redis/bin/

    src目录下这些文件作用如下
    redis-server: Redis 服务器的daemon启动程序。
    redis-cli:  Redis命令行操作工具.你也可以用telnet根据其纯文本协议来操作。
    redis-benchmark: Redis 性能测试工具,测试Redis在你的系统及你的配置下的读写性能。

    redis-stat Redis: 状态检测工具,可以检测Redis当前状态参数及延迟状况。

    [root@node1 src]# cd /usr/src/redis-4.0.9/

    [root@node1 redis-4.0.9]# cp redis.conf /usr/local/redis/etc/
    [root@node1 redis-4.0.9]# vim /usr/local/redis/etc/redis.conf            // 修改内容

    bind 0.0.0.0

    daemonize yes

    [root@node1 redis-4.0.9]# /usr/local/redis/bin/redis-server /usr/local/redis/etc/redisconf        //启动

    接下来在两台Tomcat虚拟机上操作:

    [root@node1 ~]# mkdir redis-session
    [root@node1 ~]# cd redis-session/

    把redis下的那些包rz进来

    [root@node1 redis-session]# cp *.jar /usr/local/tomcat8/lib/

    [root@node1 redis-session]# vim /usr/local/tomcat8/conf/context.xml            //添加以下内容

    <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
        <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
    host="192.168.200.114"
    port="6379"
    database="0"
    maxInactiveInterval="60" />

    [root@node1 redis-session]# /usr/local/tomcat8/bin/shutdown.sh && /usr/local/tomcat8/bin/startup.sh

    去网页上进行测试,还是IP 在变,其他不变。

     

     

  • 相关阅读:
    python的浅拷贝和深拷贝的区别
    listview中添加CheckBox的完美实现
    Content Provider 详解
    listView 结合 ArrayList和HashMap 的应用
    App Widget Provider 应用
    Android学习:SeekBar实现音量调节
    android MenuInflater 用XML文件布局
    android 创建菜单的心得
    Android 文件操作
    Android ImageView 总结【转载】
  • 原文地址:https://www.cnblogs.com/990624lty-jhc/p/11580693.html
Copyright © 2011-2022 走看看