用Memcached 实现简单Session Cache Server
前面写了“Session Cache Server 及Tomcat集群架构概念”,这次简单实现了单个Session Cache Server,发布出来供大家参考学习,希望能抛砖引玉。
这个实现参考了javaeye 网友codeutil的文章和代码:http://www.javaeye.com/topic/81641
我的实现是重写了StandardManager和StandardSession。
StandardManager实现session的查找和更新。
StandardSession中实现将所有的session数据全部储存在memcached上,tomcat不储存session数据,基本储存结构如下:
数据类型 |
Key |
Value |
Session |
SESSION_IDS |
Set,储存所有的Session ID |
Session ID |
Session id |
Set,储存所有该session相关的数据项Key |
Session Data |
Data key+@+session id |
Key 对应的自定义数据,必须实现Serializable接口 |
注意:本代码只是用来测试学习,并非完整可靠的实现,切勿用于正式生产系统。
附件测试的使用
下载附件,解压后,如下图:
其所有配置都已经配置好,运行批处理即可测试。
Start.bat 为所有的启动批处理
Stop.bat 为所有的关闭批处理
Scs.jar包括了实现的源代码和配置文件。
启动后用http://localhost:81/scs/jsp3.jsp访问
注意:为防止端口冲突,Nginx服务端口修改成了81,Tomcat 1和2的端口分别是:8480/8580,8405/8505,8409/8509。
Tomcat的配置是在conf/context.xml中添加Manager节点,配置自己实现的Manager类:
下面是运行中的一些截图,供参考:
刷新后:
相关推荐
本文将深入探讨如何使用Memcached来实现一个简单的Session Cache Server,以此解决在Tomcat集群中的Session共享问题。 首先,我们来了解Session Cache Server的作用。Session Cache Server是一种集中式的缓存服务,...
【Nginx+Tomcat+Memcached实现Tomcat集群和session共享】 在现代Web应用程序的部署中,为了提高系统的可用性和可扩展性,通常会采用集群技术。将多个Tomcat服务器组成一个集群,通过负载均衡策略分发用户请求,以...
**Session共享**是实现Web应用集群的关键技术之一。为了保证用户会话数据的一致性和可用性,在多台Tomcat服务器之间共享Session是非常必要的。利用Memcached作为集中式的缓存存储,可以有效地解决这一问题。 - **...
(3) session server:redis(store), memcached(cache) 共享存储 分析:新建立一个存放各个tomcat session记录的server,每台tomcat服务器都将自己的session记录在这个服务器中,用户再次访问,每台tomcat 都从这个...
<Resource name="sessionCache" auth="Container" type="net.spy.memcached.MemcachedClient" factory="net.spy.memcached.compat.log.Log4JLoggerFactory" url="127.0.0.1:11211" maxElementsInMemory="10000...
标题中的“tomcat7+session共享(mencache)”指的是在Tomcat 7版本中实现基于Memcached的Session共享。在分布式系统中,由于用户在不同服务器之间切换时需要保持会话状态,所以Session共享成为了一个重要的问题。...
1,tomcat8的配置: 1.1修改tomcat8.x/conf/context.xml的配置如下: <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file ...
本文将详细探讨如何在Windows操作系统上配置一个基于Nginx、Memcached和Tomcat的负载均衡架构,以实现高性能、高可用性以及资源优化。 **Nginx** Nginx是一款流行的开源Web服务器,以其高性能、低内存占用和反向...
- 配置session复制:在Tomcat集群中配置session复制,可以在server.xml文件中启用这项功能,从而使得集群中的Tomcat服务器能够在必要时共享session信息。 - 配置缓存数据库:如果选择基于缓存的session共享方案,则...
使用Nginx做的负载均衡,memcache做高速cache,tomcat7.0.22做web容器环境下的session共享及缓存。 能够做到重启tomcatsession不失效或多个tomcat应用下session共享。 该RAR包包含了配置所需要的全部jar文件。
3. **集中式Session存储**:使用如Memcached或Redis等分布式缓存,存储和共享Session数据,减轻单个服务器压力。 ### 五、总结 Nginx凭借其高效的反向代理和负载均衡能力,成为构建高性能网站和微服务架构的关键...
为了让Tomcat能够与Memcached通信并处理session序列化,需要在Tomcat的`lib`目录下添加相应的jar包,如:`javolution-5.4.3.1.jar`, `memcached-2.4.2.jar`, `memcached-session-manager-1.3.0.jar`, `msm-...
即使用cacheDB存取session信息,应用服务器接受新请求将session信息保存在cache DB中,当应用服务器发生故障时,调度器会遍历寻找可用节点,分发请求,当应用服务器发现session不在本机内存时,则去cacheDB中查找,...
24. **Cache技术**:Ehcache和Memcached的原理及使用。 25. **SQL优化**:涉及查询优化、索引的原理和使用。 26. **Oracle数据库**:理解rownum和rowid的区别,以及分页查询的方法。 27. **执行计划分析**:学习...
在Java应用服务器中,如Tomcat,Session数据通过`org.apache.catalina.session.ManagerBase`类进行管理,该类使用`HashMap`来存储Session,其中键为Session ID,值为`org.apache.catalina.Session`接口的实现,通常...
21. **Tomcat Session管理**:session通过cookie或URL重写维持,自定义session实现需考虑复制、过期、同步等问题。 22. **Cache**:Ehcache和Memcached为分布式缓存系统,用于提升系统性能。 23. **SQL优化**:...
1. **配置Memcache服务器集群**:设置多个Memcache服务器节点,使用一致性哈希策略分配session数据,确保sessionid对应的数据始终存储在同一台服务器上。 2. **自定义session_id**:允许在启动session之前通过`...
21. **Tomcat Session管理**:了解Session的生命周期和在服务器间的复制,以及如何自定义Session管理。 22. **Cache(Ehcache, Memcached)**:缓存系统用于提高数据访问速度,理解它们的工作原理和配置。 23. **...
对于高并发,可以选择使用集群,通过Session复制或共享存储来实现会话一致性。 再者,分布式服务框架如Dubbo或Spring Cloud,可以将大型应用拆分为微服务,每个服务独立部署和扩展,提高系统的灵活性和可维护性。...
jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...