tomcat集群,几种session同步解决方案的比较

nginx+tomcat+redis集群实现负载均衡和session同步的步骤和问题处理方法 最近在研究nginx+tomcat的负载均衡功能, 因为需要实现failover时用户无感知的效果,所以我考虑使用tomcat的session同步方式来实现。网上能查到的东西我就直接贴链接了,我把搭建这套系统的过程写一下,遇到的坑的处理方式说明一下。我使用的系统环境 Centos6.4 和 Centos7.2 Tomat7.0.29 JDK1.8.0_111-b14 Red 阅读详情

在集群中session安全和同步是个最大的问题,下面是我收集到的几种session同步的方案,希望能通过分析其各自的优劣找出其适应的场景。

1. 客户端cookie加密

这是我以前采用的方式,简单,高效。比较好的方法是自己采用cookie机制来实现一个session,在应用中使用此session实现。

问题:session中数据不能太多,最好只有个用户id。

参考实现:http://rollerweblogger.org/

 

2. application server的session复制

可能大部分应用服务器都提供了session复制的功能来实现集群,tomcat,jboss,was都提供了这样的功能。

问题:

性能随着服务器增加急剧下降,而且容易引起广播风暴;

session数据需要序列化,影响性能。

如何序列化,可以参考 对象的序列化和反序列化.

 

3. 使用数据库保存session

使用数据库来保存session,就算服务器宕机了也没事,session照样在。

问题:

 

程序需要定制;

每次请求都进行数据库读写开销不小(使用内存数据库可以提高性能,宕机就会丢失数据。可供选择的内存数据库有BerkeleyDB,Mysql的内存表);

数据库是一个单点,当然可以做数据库的ha来解决这个问题。

 

4. 使用共享存储来保存session

和数据库类似,就算服务器宕机了也没事,session照样在。使用nfs或windows文件共享都可以,或者专用的共享存储设备。

问题:

程序需要定制;

频繁的进行数据的序列化和反序列化,性能是否有影响;

共享存储是一个单点,这个可以通过raid来解决。

 

5. 使用memcached来保存session

这种方式跟数据库类似,不过因为是内存存取的,性能自然要比数据库好多了。

问题:

程序需要定制,增加了工作量;

存入memcached中的数据都需要序列化,效率较低;

memcached服务器一死,所有session全丢。memchached能不能做HA? 我也不知道,网站上没提。

 

6. 使用terracotta来保存session

跟memcached类似,但是数据不需要序列化,并且是Find-Grained Changes,性能更好。配置对原来的应用完全透明,原有程序几乎不用做任何修改。而且terracotta本身支持HA。

问题:terracotta的HA本身进行数据复制性能如何?

 

 

tomcat7集群(session复制) tomcat集群的主要方法有三种: 1、采用粘性会话,即某个ip只会访问集群中的某一台机器,这样就可以简单的解决session共享的问题; 2、采用会话共享,目前网上较多的案例是使用memcahed作为共享容器,需要开发以memcahed作为容器的会话管理器,然后配置到tomcat中。 3、采用session复制技术,tomcat本身已支持该功能。 三种方案各有优缺点。第一种存在部分单点问 阅读详情

相关推荐

tomcat集群中的session共享问题解决方案

快速学会四种session共享问题解决方案

热爱生活の李 1053

集群中几种session同步解决方案的比较

集群中session安全和同步是个最大的问题,下面是我收集到的几种session同步的方案,希望能通过分析其各自的优劣找出其适应的场景。 1. 客户端cookie加密 这是我以前采用的方式,简单,高效。比较好的方法是自己采用cookie机制来实现一个session,在应用中使用此session实现。 问题:session中数据不能太多,最好只有个用户id。 参考实现:http://rollerw...

fedora 683

实现Tomcat集群的高效Session共享技术

本文还有配套的精品资源,点击获取 简介:在分布式Web应用中,Tomcat集群的session共享是确保高并发和高可用性的一个关键组成部分。本文将深入探讨如何使用Redis作为存储介质,通过特定的jar文件实现集群节点之间的session共享。文章首先介绍了Redis在session存储中的角色,接着阐述了Tomcat-Redis-Session-Manager插件如何在集...

weixin_42602241的博客 1295

登录信息(session)存储方式总结

前端存储cookie 用户登录时判断完用户名密码等,将登录对象加密返回到前端,前端用ajax将登录对象存入cookie,此后鉴权等操作都利用cookie解密登录对象进行用户验证。 封装一个cookieUtil从request对象中获取cookie信息进行解密使用。 参考项目:antifatigueManufacturing 后端存储session User user = userMapper.selectById(mobile); if (null == user) { ..

Mr-Bean的博客 2232

【完整实战】基于Redis的Tomcat集群Session共享解决方案

实际上继承自,这是一种设计模式上的代理封装。其核心思想是:“保留标准Manager的功能逻辑,仅替换持久化层。

weixin_35266799的博客 1382

was集群session共享设置

在was集群中,通常需要设置session共享,按照文档步骤可以完成session共享设置,解决你应用中的问题

session的存储方式和配置

Session又称为会话状态,是Web系统中最常用的状态,用于维护和当前浏览器实例相关的一些信息。我们控制用户去权限中经常用到Session来存储用户状态,这篇文章会讲下Session的存储方式、在web.config中如何配置Session、Session的生命周期等内容。  1、Session的存储方式。   session其实分为客户端Session和服务器端Session。   当用户首次与Web服务器建立连接的时候,服务器会给用户分发一个 SessionID作为标识。Sess...

ba_wang_mao的专栏 6996

详解Tomcat集群如何同步会话

本篇文章主要介绍了Tomcat集群如何同步会话,Tocmat集群中最重要的交换信息就是会话消息,有兴趣的同学可以了解一下。

Tomcat集群和session会话同步管理

这两天搭建了一个tomcat集群的小demo,过程中的一些的小坑,在这里给大家说一下。1.前言当我们的项目并发量特别大,单一服务器无法满足的时候,或者一个服务器宕机,系统就无法运行的时候这里我们就可以搭建一个集群服务了,因为集群有一定的扩充性和容错能力.1.1 集群(Cluster):是一组独立的计算机系统构成一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信。应用程序可以通过网络共享内存...

全村最靓的仔 3989

HID报告描述符实战解析:从Usage到Item的完整设计流程

本文深入解析了HID报告描述符的设计流程,从核心概念Usage(用途定义)入手,详细阐述了如何通过Item(条目)的三种角色——全局、局部与主干,构建出能被系统正确识别的设备“说明书”。文章以标准USB鼠标和键盘为例进行实战拆解,并介绍了使用Report ID与自定义设备等进阶设计方法,帮助开发者掌握这一实现USB设备即插即用的关键技术。

weixin_29230865的博客 282

Java写项目前的准备工作指南(技术栈选择 环境搭建和工具配置 项目结构设计与模块划分)

在开始编写一个 Java 项目之前,做好充分的准备工作是至关重要的。很多初学者可能在没有清晰规划的情况下就开始编写代码,导致项目开发进度缓慢、结构混乱,甚至最终无法按预期完成。而事实上,项目的成功不仅仅取决于编码能力,还包括项目初期的规划和准备。准备工作是确保项目顺利进行的基础,它包括技术选型、环境搭建、需求分析、团队协作及项目管理等多个方面。通过这些准备,我们可以确保项目的开发不仅高效而且有可维护性,最终能交付出高质量的代码。在项目开发过程中,异常处理是非常关键的一部分。

eternal__day的博客 1188

Session的存储方式

Session存储方式在系统开发中经常会用到Session,但是却不是很懂Session是怎么存储的! Session的存储方式有4中;分别如下1.保存在IIS进程中:   保存在IIS进程中是指把Session数据保存在ISS的运行的进程中,也就是inetinfo.exe这个进程中,这也是默认的Session的存方式,也是最常用的,   特点是:由于不需要额外的跨进程交互,会话数

ccbb20的专栏 2358

基于STM32与ESP8266的MQTT协议实现阿里云物联网平台远程LED控制

本文详细介绍了如何利用STM32单片机与ESP8266 Wi-Fi模块,通过MQTT协议连接阿里云物联网平台,实现远程控制LED灯的完整物联网项目。内容涵盖硬件连接、阿里云平台配置、MQTT协议与AT指令解析、STM32代码实战以及数据解析与调试技巧,为嵌入式开发者提供了一个清晰、实用的物联网入门实践指南。

svm4gardener的博客 791

nginx集群tomcat,session共享问题

简介 上一篇中,nginx实现了tomcat集群,但是其实集群还有很多问题,比如session共享问题。简单来说就是通过负载均衡之后,用户第一次请求的tomcat和第二次请求的tomcat基本不是同一个,但是你在第一次请求放在session中的值只有一个tomcat才,第二个请求的那个tomcat里面是没有的。这样就出现了用户不停登入的情况。。。 方法一:复制session信息 原理...

一只仰望天空的菜鸟 2万+

[深入研究4G/5G/6G专题-31]: 5G NR开机流程5.2 - UE Attach流程(Registeration Request/Accept/Complete)

目录前言:前置条件:第1章 5G NR UE attach流程(从UE log的视角看)1.0 NAS消息解析器1.1 消息交互流程1.2 UE Registeration Request消息(AMF->基站->UE)1.3 AMF Registeration Accept消息(AMF->基站->UE)1.4 UE Register complete消息(UE->基站->AMF)第2章 UE Register...............

文火冰糖(王文兵)的博客 7万+

CUDA编程 - Nsight system & Nsight compute 的安装和使用 - 学习记录

在 cuda 编程中,经常会用到 Nsight system 和 Nsight compute 进行性能分析等,下面做个学习总结。本篇包括安装和常用分析思路总结,具体实践操作总结会放在下一篇博客。

点云算法工程师 1万+

tomcat集群基于redis共享session解决方案

一、使用版本:apache-tomcat-7.0.56+nginx-1.8.0+redis-3.0.6 1、先给出正确的配置和jar包 所需jar包如下 tomcat-redis-session-manager1.2.jar jedis-2.6.2.jar tomcat-juli.jar tomcat-juli-adapters.jar commons-pool-1.5.4.

习惯的力量 2万+

OpenClaw进阶实战(二十五):抖音企业号——私信回复与视频评论分析

摘要:本文介绍抖音企业号自动化运营方案,突破抖音强风控体系的技术挑战。针对内容生产、私信互动和账号矩阵三大场景,提出混合架构解决方案: 私信自动化:结合关键词触发与随机延迟(45秒±15),实现拟人化回复,支持价格咨询/商务合作等高优先级消息识别 混合技术栈:官方API(合规)+真机RPA(覆盖长尾需求)+AI辅助生成(脚本→剪辑→发布闭环) 安全策略:通过设备指纹模拟、行为间隔随机化和内容差异化处理规避风控,提供每日200条的安全操作阈值。配套OpenClaw技能实现一键部署,包含cookie配置、回复规

PeterPan的博客 142

Tomcat集群应用同步 —— 源码分析

相信大家对Tomcat的集群部署都不陌生,以往,我们手动搭建一个Tomcat的集群环境,然后手动部署每个Tomcat上面的应用,保证他们都是相同的应用程序包,以便负载均衡的时候不会出现问题但是问题来了,如果我们项目源码修改了,重新打包,这时候就要给每个Tomcat单独替换里面的war包,相当麻烦!Tomcat给我们提供了一种十分简单的解决方案:应用同步欢迎指出我的错误!

weixin_42132143的博客 1495

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Tomcat集群Session共享的几个方案

Tomcat集群Session共享的几个解决方案 问题由来 当我们的业务使用单个Tomcat不足以支持访问请求的时候,需要引入Tomcat集群。而每个Tomcat的Session是不互通的,如果用户的请求落入到不同的Tomcat中,用户需要频繁的登录,给用户造成困扰。所以,在一个应用服务器产生Session之后,应该让其他应用服务器也能够获取到,也就是Session共享。 解决方法 以下几种方案有...

我思故我在 coding很澎湃 4637

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

基于Redis集群的tomcat集群Session共享

        Tomcat使用Redis缓存Session,集中把Session缓存到Redis服务器中,而不是缓存到服务器的内存中,可以实现集群服务器共享Session。         应用场景:             1.当网站接收大量请求时,单一服务器终究无法满足需要处理的负荷量             2.服务器不稳定(莫名其妙的宕机等),搭建tomcat集群救急。     ...

橙子博客 2614

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Tomcat集群及Session共享

Tomcat集群 由于单台Tomcat的承载能力是有限的,当我们的业务系统用户量比较大,请求压力比较大时,单台Tomcat是扛不住的,这个时候,就需要搭建Tomcat的集群,而目前比较流行的做法就是通过Nginx 来实现Tomcat集群的负载均衡 1、准备工作 1、准备Tomcat 在服务器上,安装两台tomcat(这里记得要改tomcat服务器端口号) 2、安装配置Nginx 在当前服务器上,安装Nginx 安装完Nginx后,配置Nginx,修改配置文件conf/nginx.conf 加入代码: ups

The_Strong的博客 822

Nginx+Tomcat集群Redis共享session方案

客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上,这就是 Session。客户端浏览器再次访问时只需要从该 Session 中查找该客户的状态就可以了。在实际工作中我们建议使用外部的缓存设备来共享 Session,避免单个服务器节点挂掉而影响服务,共享数据都会放到外部缓存容器中。使用Redis实现共享session,所有服务器的session信息都存储到了同一个Redis集群中,即所有的服务都将 Session 的信息存储到 Redis 集群中,无论是对 Session 的注销、更新

毛毛的博客 1023
上一篇: nginx、memcached、tomcat 负载均衡和集群配置,session共享
下一篇: nginx+tomcat+session复制(linux)
dabao_java
博客等级 码龄19年 35粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值