集群环境下的Session管理

1. 集群环境下的管理HTTPSSession所遇到的问题

 一台服务器对应这个一个session对象,无法在另外一个服务器互通

解决方法:

       1. Session 的 Replication(复制)将当前服务器中使用的session全部复制到其他服务器上

           缺陷:Session数据冗余 浪费内存资源      

        

       2. Session的 stick  session的黏着  session只能单点发布到一个tomcat上

           缺陷:存在单节点故障,容易操作数据丢失

       

       3. Cookie的保存状态

           缺陷:也就时Cookie的缺点:存储数据量小,浏览器关闭cookie消失,数据暴露不安全,cookie存储中文数据必须要额外处理

     

       4. 通过redis 或者Memcahe等分布式缓存集中管理Session

         

具体的思路:

       Redis是一个基于内存的key-value的内存数据库

       Session存redis中因为要跨网络。session需要实现序列化 key = sessionId value=session

       Cookie = jsessionid

       Jedis.get(“jsessionid”) ===session

通过Redis 集中管理session的开发步骤:

   

1、在tomcat的lib目录中导入
        tomcat-redis-session-manager-1.2-tomcat-6.jar
        jedis-2.0.0.jar
        commons-pool-1.6
2、在tomcat的conf目录中修改context.xml配置文件
    <Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" />
       <Manager className="com.radiadesign.catalina.session.RedisSessionManager"
                                   host="192.168.1.105"
                                   port="6379"
                                   maxInactiveInterval="60"/>
配置

java中的实体类需要实现序列化接口

  注意:实现序列化的目的不仅仅是将对象写入到文件中更多的是可以进行对象的网络传输所谓的复制session就是通过一个流

将session传过来session中的对象也要传过来,所以session中存储的对象要实现序列化,而包装类型已经实现了系列化

网络中传输实体的方式

 优点:序列化,效率高,序列化后传输的是二进的内容  基于传输层 (内网, tcp ,局域网)

 JSON:传输的是字符串                                                  基于应用层 http 互联网

 与mybatis日志系统的集成

redis的分片

 1. 为什么要分片?

       例如:将1000万的数据量拆分成 10个100万的数据量 使用10个redis服务器进行处理 这个

        是分而治之的思想可以提高查询效率。

 2. 怎样实现分别片

     Redis2.x 通过程序员自己实现  (客户端的分片)

     Redis3.x redis支持分片的特性 (又叫服务器分片)

 3. 如何知道数据对应哪个redis进行存储

    Hash 取模的思想 余数是几就对应哪个redis  有几个redis就对几取模

Redis分片的开发步骤

redis3.x的特性

   特点:1.支持sharding 支持master-slaver

           2.支持auto failover(自动故障切换),    如果从节点发现主节点宕机 那么会自动称为主节点

  注意Redis2 与redis3 只在集群方面有区别其他没有区别

Redis充当web缓存的概念

         

Redis中key的设计

1、查询有几种情况?

       1. 通过主键查询   id

       2 .通过其他条件查询    sql

 2. key 的设计

       

 3. redis的副本集

        为什么需要副本集:放置单节点故障

        

 Redis副本集的架构

       

 

Redis 副本集的开发步骤:

    1. 复制redis.conf 的配置文件  一份为主一份为从  修改端口号port
     在从的配置文件中添加

slaveof  <masterip> <masterport>

 

  

原文地址:https://www.cnblogs.com/zhulina-917/p/11684308.html