一、下载下列几个 Jar包
http://memcached-session-manager.googlecode.com/files/memcached-session-manager-1.3.0.jar
http://memcached-session-manager.googlecode.com/files/msm-javolution-serializer-jodatime-1.3.0.jar
http://memcached-session-manager.googlecode.com/files/msm-javolution-serializer-cglib-1.3.0.jar
http://spymemcached.googlecode.com/files/memcached-2.4.2.jar
http://memcached-session-manager.googlecode.com/files/javolution-5.4.3.1.jar
将以下几个Jar包Copy到 $TOMCAT_HOME/lib目下,每个Tomcat节点都需要有。
二、配置Tomcat的Server.xml配置文件,样本可以点击这里下载,主要内容如下:
http://www.javabloger.com/images/2010-05/webcluster/server.xml.txt
<Context docBase="D:\webapp" path="" reloadable="true" >
<Manager
className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:localhost:11211"
requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"
sessionBackupAsync="false"
sessionBackupTimeout="100"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
copyCollectionsForSerialization="false"
/>
</Context>
每个Tomcat的节点都需要修改。
三、前端分发的Ngixn的配置文件也需要修改,样本可以点击这里下载,主要内容如下:
http://www.javabloger.com/images/2010-05/webcluster/nginx.conf.txt
#gzip on;
upstream www.docyeah.com {
server 192.168.1.103:81;
server 192.168.1.103:82;
}
最后访问测试的JSP页面,进行刷新:
http://www.javabloger.com/images/2010-05/webcluster/msem.jsp.txt
页面上出现:SessionID:292621C48C4D6B27F40290039081492A-n1 一直不变,说明你经过前端 Ngixn
进行分发,跳转到任何一台服务器都是从Memcached中读取session,这样web容器中的
session就集中在一个地方了。并且每台机器都可以进行计算客户端发出的请求,实现了session共享和压力分载,下图中显示了每台Tomcat容
器中打印了各打印了2次 Hello World,说明分散的计算了客户端发出的请求。
采用这种方案的优势在于,如果最前端换成IP策略的负载均衡,例如:LVS、Iptables,或者HA-Proxy
都可以,并且可以提高前端负载均衡器的工作效率。通过这样的思路,还可以进行对这个工具进行改写成向数据库写入的方案。
如图所示:
转载http://www.javabloger.com/article/ngixn-j2ee-tomcat-memcache-session-share.html
分享到:
相关推荐
当我们在Tomcat中使用Memcache来管理session时,可能会遇到一些技术问题,如在本例中的`NoSuchFieldError: attributes`错误。 `NoSuchFieldError`通常在运行时出现,当尝试访问一个不存在于类或接口中的字段时抛出...
本篇将深入探讨如何在Tomcat8的集群环境中使用memcache来解决session共享的问题。 首先,让我们理解什么是session。Session是Web应用程序用来跟踪用户状态的一种机制,它存储在服务器端,通常包含了用户的登录信息...
2. **配置Session管理器**:在Web应用的配置文件(如web.xml)中,设置session管理器,指定使用Memcache作为session存储的后端。 3. **初始化Memcache连接**:在应用启动时,建立与Memcache服务器的连接,并设置好...
标题中的“tomcat7 通过memcache 实现 session共享依赖包”指的是在Tomcat7服务器中,使用Memcache作为缓存系统来实现跨应用或跨服务器的session共享。这是一个技术解决方案,通常在分布式环境中,当有多个Tomcat...
描述中提到,“用于tomcat6 使用memcache 实现session共享的jar包”,这表明这些jar文件是为Tomcat6设计的插件或库,目的是通过Memcache这个内存缓存系统来存储和管理Session数据。Memcache是一个高性能、分布式的...
-- memcache 管理 session --> <groupId>de.javakaffee.msm <artifactId>msm-kryo-serializer <version>1.6.2 <groupId>de.javakaffee <artifactId>kryo-serializers <version>0.9 </dependency>
总的来说,"PHP实现多服务器session共享之memcache共享"这个主题涵盖的知识点包括:session管理、分布式存储、memcache的使用、PHP配置、并发控制以及系统扩展性设计。掌握这些知识对于构建高可用、可扩展的Web应用...
- **Session管理**:Tomcat默认的Session管理机制在集群环境中可能导致Session丢失,因此需要结合Memcache实现Session共享。 3. **Memcache**: - **Session共享**:Memcache是一个高性能的分布式内存对象缓存...
"memcache_session"指的是使用Memcached作为会话存储机制。Memcached是一种高性能的分布式内存对象缓存系统,用于在分布式计算环境中存储临时数据,如Web应用的会话数据。通过将会话数据存储在Memcached中,所有集群...
标题中的“session共享之memcache Redis”指的是在Web开发中如何使用memcache和Redis来实现会话(session)数据的跨服务器共享。会话管理是Web应用中的关键部分,它允许用户在不同页面间保持状态,例如登录信息、...
标题中的“Memcache Session Manager + Tomcat8.5.6”指的是在Tomcat 8.5.6版本中,利用Memcache作为会话管理器来实现跨服务器的session共享。Memcache是一个高性能、分布式内存对象缓存系统,常用于缓解数据库压力...
标题 "Memcache Session Manager Tomcat8.5.6" 指的是在Tomcat 8.5.6版本中使用Memcache作为会话管理器的一种配置。这种配置旨在提高Web应用在集群环境下的性能和可扩展性,通过将用户的会话数据存储在分布式缓存...
这里的`session.save_handler`设置为`memcache`表示我们将使用memcache作为session的处理器。`memcache.hash_strategy`用于选择Memcache的哈希策略,`consistent`是一种哈希算法,能够保持同一个key在同一个服务器上...
2. **Tomcat配置session复制**:在Tomcat的`server.xml`文件中,配置`Manager`元素来使用一个支持memcache的session管理器,例如`MemcachedSessionManager`。你需要指定memcache服务器的地址和端口,以及相关配置...
在构建分布式系统时,Session共享是一个关键问题,特别是在使用多台服务器(如Tomcat)和负载均衡器(如Nginx)的环境中。本压缩包提供的资源是为了解决这个问题,通过集成Memcached来实现Session的集中式管理,从而...
这个组件提供了对Memcached的支持,并且可以替换Tomcat原有的Session管理器。安装和配置步骤如下: 1. 下载并解压提供的压缩包"tomcat7ClusterMemcacheSession共享1.8.3"。 2. 将解压后的jar文件(如:memcached-...
1. **配置Memcache服务器集群**:设置多个Memcache服务器节点,使用一致性哈希策略分配session数据,确保sessionid对应的数据始终存储在同一台服务器上。 2. **自定义session_id**:允许在启动session之前通过`...
- **session.save_handler** 和 **session.save_path**: 分别用于指定会话处理方式和会话存储路径,将save_handler设为memcache,即可利用memcache进行会话管理,同时,通过定义save_path中的服务器链接,可以实现跨...
3. **session共享**:在分布式环境中,可以使用Memcache共享用户session,避免session复制导致的性能下降。 4. **API调用缓存**:对于慢速的外部API调用,可以先将其结果缓存,减少网络延迟。 ### 五、操作示例 ...