zoukankan      html  css  js  c++  java
  • 集群环境下的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>

     

      

  • 相关阅读:
    Java实体类的属性类型与数据库表字段类型对应表
    MyBatis的settings设置描述
    Hibernate的属性配置
    eclipse快捷键
    2018年计划
    Django之Form组件归类
    Django之Form组件补充
    Django之Form组件
    Django之中间件
    Django之分页升级版本(组件)
  • 原文地址:https://www.cnblogs.com/zhulina-917/p/11684308.html
Copyright © 2011-2022 走看看