当从单机程序部署到多台分布式服务式,经常会遇过这些问题:
1、session不能保持;由于是多台服务器再加上有负载均衡,所以页面里的每个请求,没准会分配到哪个服务器上。
解决方案:
1、最简单的办法:利用nginx的ip_hash分配方式,使用同一IP请分配到固定的服务器。
但是这种办法有多种限制,类如nginx必须是最前端的,前面不能有lvs之类的,否则获取来的IP只能是同一个达不到负载均衡的目的。再则公司网段的内网机器也是不可以的,因为这些机器的出口有可能是一个外网IP,或者固定几个IP。这样也达不到目的。
2、采用nginx的扩展;nginx_upstream_jvm_route 是一个nginx的扩展模块,用来实现基于 Cookie 的 Session Sticky 的功能。
简单来说,它是基于cookie中的JSESSIONID来决定将请求发送给后端的哪个server,nginx_upstream_jvm_route会在用户第一次请求后端server时,将响应的server标识绑定到cookie中的JSESSIONID中,从而当用户发起下一次请求时,nginx会根据JSESSIONID来决定由哪个后端server来处理。
1/ nginx_upstream_jvm_route安装
下载地址(svn):http://nginx-upstream-jvm-route.googlecode.com/svn/trunk/
假设nginx_upstream_jvm_route下载后的路径为/usr/local/nginx_upstream_jvm_route,
(1)进入nginx源码路径
patch -p0 < /usr/local/nginx_upstream_jvm_route/jvm_route.patch
(2)./configure --with-http_stub_status_module --with-http_ssl_module --prefix=/usr/local/nginx --with-pcre=/usr/local/pcre-8.33 --add-module=/usr/local/nginx_upstream_jvm_route
(3)make & make install
参考
http://yangzb.iteye.com/blog/560421
http://stevenfeng.iteye.com/blog/1922118
http://www.douban.com/note/325861884/?type=like
相关推荐
在session管理中,Redis通常用作分布式session存储,解决了单机session无法满足高并发场景的问题。 3. **session**:在Web开发中,session是用于跟踪用户状态的一种机制。当用户在网站上进行操作时,服务器会为每个...
2. **Session管理**:通过会话复制、集中存储或Cookie等方式解决跨服务器的会话保持问题。 3. **数据复制**:主从复制解决数据同步,日志复制保证数据一致。 4. **数据缓存**:使用Key-value存储如Redis缓存热数据,...
Java分布式session存储解决方案是指在分布式系统中,如何存储和管理Session数据的问题。Session数据是指Web应用程序中用户的会话信息,包括用户的身份信息、操作记录等。分布式系统中,Session数据的存储和管理变得...
ZooKeeper本身可以以单机模式安装运行,不过它的长处在于通过分布式ZooKeeper集群(一个Leader,多个Follower),基于一定的策略来保证ZooKeeper集群的稳定性和可用性,从而实现分布式应用的可靠性。 1、Zookeeper...
在分布式系统中,session共享是一个重要的需求,因为用户在访问系统时,希望其登录状态和购物车等信息能在不同的服务器之间保持一致。 首先,我们要理解Session的工作原理。Session是Web应用中用于跟踪用户状态的一...
标题中的"tomcat7 jedis session 同步"指的是一项技术实践,即在Tomcat 7版本的服务器集群中,通过集成Redis(一种高性能的键值数据存储系统)的客户端Jedis,来解决分布式环境下的Session共享问题。这使得当用户在...
CORBA(Common Object Request Broker Architecture),即通用对象请求代理体系结构,是一种由OMG(对象管理组织)制定的分布式对象技术标准。CORBA的核心概念是对象请求代理(Object Request Broker,ORB),它允许...
- **Session 数据集存储**:使用分布式存储系统,但会引入网络延迟和稳定性问题。 - **Cookie Based**:减轻服务器压力,但受限于Cookie长度,存在安全风险,并增加网络带宽消耗。 4. **读写分离**:为缓解数据库...
ZooKeeper是一个高度可用且分布式的协调服务,主要用于解决分布式环境中复杂的应用程序一致性问题。作为一款开源工具,ZooKeeper提供了简单易用的API,使开发人员能够专注于业务逻辑而无需担心底层的分布式系统细节...
SpringMVC+Nutz框架是一种基于Java的企业级分布式基础开发平台,它结合了Spring MVC和Nutz框架的优势,以及一系列其他成熟的技术,如Apache Shiro、Bootstrap UI等,以实现高效、安全、可扩展的Web应用开发。...
【描述】"用于tomcat-session-cluster连接插件"表明此压缩包提供的功能是让Tomcat能够处理session的集群共享。在传统的单台Tomcat服务器中,session数据通常存储在服务器本地内存中,但当需要搭建多台Tomcat服务器...
单机架构是指在一个服务器上运行整个应用程序的架构设计。这种架构简单易懂,但是在高并发和大流量的情况下,单机架构无法满足性能和可扩展性的需求。 多机部署 多机部署是指将应用程序部署在多个服务器上,以提高...
Apache Flink是一个开源流处理和批处理框架,用于构建数据密集型实时应用程序。它提供了低延迟、高吞吐量的数据处理能力,支持事件驱动和状态管理,是大数据领域中的重要工具。本文将详细介绍如何安装和配置Flink,...
<artifactId>spring-session-data-redis <groupId>redis.clients <artifactId>jedis <version>2.9.0 ``` 2. 配置 application.properties 文件 在 application.properties 文件中添加以下配置: ```...
TensorFlow 是一个强大的开源库,用于数值计算和大规模机器学习任务。它的分布式原理是其能够高效处理大数据和复杂模型的关键所在。以下是对TensorFlow分布式原理的深入解释。 **1. 客户端(Client)** 客户端是...
Zookeeper是Apache Hadoop项目下的一个子项目,它是一个分布式的,开放源码的分布式应用程序协调服务,是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终将简单易用的接口和...
在Shiro中,Redis可以作为Session的分布式存储,解决了单机环境下Session共享的问题,实现跨服务器的会话保持。 4. **Shiro与SpringBoot集成**: - 将Shiro与SpringBoot结合,可以通过Spring的Bean管理机制来管理...
- 单机环境或多个应用实例共享同一个Session Factory的场景。 #### 4. Identity(自增) **简介:** Identity策略利用数据库的自增特性(如MySQL的AUTO_INCREMENT)生成主键。 **特点:** - 支持MySQL、SQL ...
当我们将网站程序分部到多台服务器上后,由于Session受实现原理的局限,无法跨服务器同步更新Session,使得登录状态难以通过Session共享。 我们使用MemCache+Cookie方案来解决分布式系统共享登录状态的问题。 ...