从单机到集群会话的管理之单机模式

单机时代对会话的管理主要有两种方式——非持久化方式和持久化方式。非持久化方式指会话直接由tomcat管理并保存在机器内存上,它是最简单的方式,如下图,所有的会话集合都保存在内存上,客户端访问时根据自己的会话id直接在服务器内存中寻找,查找简单且速度快,但同时也存在两个缺点:一是容量比较小,当数据量大时容易导致内存不足;一是机器意外停止会导致会话数据丢失缺点。

 

为了解决上面非持久化方式存在的缺陷,我们需要引入持久化机制,即持久化方式。可以将会话数据以文件形式持久化到硬盘中,也可以通过数据库持久化会话数据。首先看硬盘持久化,如下图,会话数据会以文件形式保存在硬盘中,由于硬盘比存储空间比内存大且机器意外关机都不会使数据丢失,所以硬盘存储解决了上面两个缺点,但是硬盘读取的速度比较慢,可能会影响整体的响应时间,硬盘持久化方式在实际中基本不会使用。

 

Tomcat提供的另外一种默认的持久化方式就是将会话数据持久化到数据库上,所有会话数据交由数据库存储,tomcat通过jdbc数据库驱动并使用连接池技术去数据库指定表读取会话信息,此种方式解决了非持久化方式的所有缺点同时也对以文件方式存储方式的IO进行了优化,用数据库存储会话其实是一种集中管理模式,现在实际中更多是使用一个分布式缓存替代数据库,例如memcached、redis集群等,因为缓存的查询读取速度快,且集群解决了高可用的问题,但Tomcat官方版本是不提供会话保存到memcached或redis的支持,如要使用可自己编写一个会话管理器及一个阀门valve,或使用第三方jar包。需要说明的是集中管理模式不管是tomcat单机还是集群模式都可以使用。

 

点击订购作者《Tomcat内核设计剖析》

时间: 2024-09-10 22:29:19

从单机到集群会话的管理之单机模式的相关文章

从单机到集群会话的管理之集群模式二(更大的集群)

<从单机到集群会话的管理之集群模式一>中讲到的全节点复制的网络流量随节点数量增加呈平方趋势增长,也正是因为这个因素导致无法构建较大规模的集群,为了使集群节点能更加大,首要解决的就是数据复制时流量增长的问题,下面将介绍另外一种会话管理方式,每个会话只会有一个备份,它使会话备份的网络流量随节点数量的增加呈线性趋势增长,大大减少了网络流量和逻辑操作,可构建较大的集群. 下面看看这种方式具体的工作机制,集群一般是通过负载均衡对外提供整体服务,所有节点被隐藏在后端组成一个整体.前面各种模式的实现都无需负

从单机到集群会话的管理之集群模式一

为什么要使用集群?主要有两方面原因:一是对于一些核心系统要求长期不能中断服务,为了提供高可用性我们需要由多台机器组成的集群:另外一方面,随着访问量越来越大且业务逻辑越来越复杂,单台机器的处理能力已经不足以处理如此多且复杂的逻辑,于是需要增加若干台机器使整个服务处理能力得到提升. 如果说一个web应用不涉及会话的话,那么做集群是相当简单的,因为节点都是无状态的,集群内各个节点无需互相通信,只需要将各个请求均匀分配到集群节点即可.但基本所有web应用都会使用会话机制,所以做web应用集群时整个难点在

webloigc 会话-weblogic10.0.3集群会话问题

问题描述 weblogic10.0.3集群会话问题 单机纵向集群,2个服务结点,1个代理结点,测试操作步骤如下: 1.启动控制结点: 2.启动代理结点: 3.启动服务结点1: 4.登录应用: 5.启动服务结点2: 6.关闭服务结点1: 7.操作应用,发现应用退出,需要重新登录. 如果在以上第6步,即关闭服务结点1之前,启动服务结点2之后对应用进行操作再关闭结点1,则在第7步不会发生退出现象,请问有哪位高人可以指点一下?谢谢!

集中式日志管理部署下的Log输出

集中式日志管理部署下的Log输出 Log是程序记录执行过程,辅助排查问题的必备良药.随着后台程序越来越复杂,集群规模越来越大,通常会引入集中式程序日志管理,比如使用splunk或者ELK统一管理日志.Log打的好,排错无烦恼,但是往往打不好.下面就聊聊怎么打Log,特别是在使用集中式日志管理架构时. 为什么Log输出变得越来越难 一句话描述Log查找的需求:根据查询条件,返回并且仅返回所关注的用例相关的所有上下文. 怎么变难的: 单线程同步:有时间戳和重要参数值就差不多了 多线程同步:你可能需要

windows 集群服务器管理 定时重启应用程序

问题描述 windows 集群服务器管理 定时重启应用程序 Web 应用程序部署在集群上,做主备双机使用,现在遇到了点麻烦,需要定时重启应用程序. 应用程序现在在集群管理器的活动资源里面, 所有者属于集群,组属于集群组,资源类型属于通用服务. 麻烦帮下忙,我想定时重启一下 通用服务

求Atlassian工具集在敏捷管理中的应用培训视频

问题描述 上次的JIRA培训内容是Atlassian工具集在敏捷管理中的应用,但视频一直没见邮件通知啊,谁能提供一下,版主知道什么情况不? 解决方案 解决方案二:http://bbs.csdn.net/topics/390760179http://i.youku.com/u/UMTQ5MzIxNzg5Mg==

基于cloudera的BigInsights集群如何管理和应用集成系统

本文首先简要介绍 BigInsights 与 Cloudera 集成的相关背景,在此基础上介绍基于 cloudera 的 BigInsights 集群的系统架构,之后详细介绍在 Cloudera 之上的两种集成方式,最后介绍如何管理和应用集成系统. Cloudera 和 IBM 都是业界领先的大数据平台软件与服务提供商,2012 年 4 月,两家公司宣布在该领域建立合作关系,强强联手.Cloudera 提供了完整的 hadoop 系统,并在此基础上增强了可扩展性.稳定性和平台性能.InfoSph

Zookeeper单机伪集群

Zookeeper单机伪集群 1.配置 zookeeper下载地址:http://apache.mirrors.lucidnetworks.net/zookeeper/ 可以选择需要的版本,我下载的是zookeeper-3.4.3.tar.gz,解压得到文件夹zookeeper-3.4.3 在主文件夹下建立一个zookeeper文件夹,在zookeeper文件夹里建立三个目录server1,server2,server3: mkdir -p server1 server2 server3 然后每

Redis从单机到集群,一步步教你环境部署以及使用

Redis作为缓存系统来说还是很有价值的,在大数据方向里,也是需要有缓存系统的.一般可以考虑tachyon或者redis,由于redis安装以及使用更简单,所以还是优先考虑了它.那么在一些场景下为了保证数据的可靠性,就需要采用集群的模式部署,因此本篇文章就基于Redis Cluster的背景讲解下部署以及后期的使用. 大致会包括下面的内容: Redis单机版的安装以及验证 Redis集群版的安装以及验证 使用图形化工具访问Redis 使用Jedis访问Redis 使用JedisCluster访问