在web应用中,由于http的请求响应式,无状态。要记录用户相关的状态信息,比如电商网站的购物车,比如用户是否登录等,都需要使用session。我们知道session是由servlet容器创建和管理,存储在服务器端,并且与客户端浏览器相关(停止web应用,关闭浏览器session都会失效)。

  如果一个web应用,部署到一台服务器(一个tomcat),那么session使用起来相当的方便,没有额外的担心,直接由servlet容器创建和管理即可。然而今天,一个web应用面临大量用户,高并发的访问(我们有十多亿同胞,骄傲啊!)。那么无论如何一个tomcat是难以提供服务的,就需要集群方式部署大量的tomcat,共同提供服务。也就是我们耳熟能详 的:集群、分布式、负载均衡。架构大概是这个样子:

  

  应用场景描述:

  1.小明正在维护一个web应用:www.xx.com。该web应用是一个电商网站,起初用户量很少,业务量也不大。小明通过一台tomcat部署应用,并且把用户登录信息,购物车信息都保存在session中。应用服务良好,没有任何问题。

  2.一年以后,小明通过搜索引擎优化,购买流量的方式,推广该电商网站,再加上商品质量不错,性价比很高:物美价廉。很受用户欢迎。短时间内容增加了很多新的用户,并发量指数级提升,此时一台tomcat难以正常提供服务了

  3.于是小明通过横向扩展,增加tomcat服务器,集群方式部署:www.xx.com应用。通过三台tomcat搭建集群环境:tomcat1/tomcat2/tomcat3。

  4.在tomcat服务器集群之前,通过nginx服务器实现:负载均衡+反向代理

  5.集群环境部署好应用以后,小明遇到了一个问题:用户无法正常购物了,需要频繁登录???。这可是是个大问题!!!

  6.通过无数个夜晚的失眠(程序员遇到问题后都是这样的!问题不解决难以入睡),小明终于想清楚了问题所在,描述如下:

    6.1.由于是搭建了集群环境(三个tomcat),以及前端服务器nginx实现的负载均衡

    6.2.用户访问流程是这样的:

      a.用户访问www.xx.xom/login发起登录请求,首先是请求到达nginx服务器

      b.nginx服务器将用户的登录请求,反向代理到tomcat2服务器,实现登录,并且创建会话session

      c.当用户登录成功以后,发起访问商品列表的请求:www.xx.com/list,请求还是首先到达nginx服务器

      d.nginx服务器将用户访问商品列表请求,反向代理到tomcat服务器。此时由于用户是在tomcat2实现的登录(在tomcat2创建session),那么在tomcat3服务器并没有session,因此tomcat3服务器响应用户(还未登录,需要先登录)

      e.于是乎用户就很郁闷了:刚才不是登录过了吗???造成此问题的根本原因就是:在集群环境下,没有实现session的共享

      g.请思考:在集群环境下,如何实现session的共享呢?

  

分布式集群环境下,如何实现session共享一(应用场景)的更多相关文章

  1. 分布式集群环境下,如何实现session共享五(spring-session+redis 实现session共享)

    这是分布式集群环境下,如何实现session共享系列的第五篇.在上一篇:分布式集群环境下,如何实现session共享四(部署项目测试)中,针对nginx不同的负载均衡策略:轮询.ip_hash方式,测 ...

  2. 分布式集群环境下,如何实现session共享四(部署项目测试)

    这是分布式集群环境下,如何实现session共享系列的第四篇.在上一篇:分布式集群环境下,如何实现session共享三(环境搭建)中,已经准备好了相关的环境:tomcat.nginx.redis.本篇 ...

  3. 分布式集群环境下,如何实现session共享三(环境搭建)

    这是分布式集群环境下,如何实现session共享系列的第三篇.在上一篇:分布式集群环境下,如何实现session共享二(项目开发)中,准备好了一个通过原生态的servlet操作session的案例.本 ...

  4. 分布式集群环境下,如何实现session共享二(项目开发)

    在上一篇分布式集群环境下,如何实现session共享一(应用场景)中,介绍了在分布式集群下,需要实现session共享的应用场景.并且最后留下了一个问题:在集群环境下,如何实现session的共享呢? ...

  5. 在Hadoop1.2.1分布式集群环境下安装hive0.12

    在Hadoop1.2.1分布式集群环境下安装hive0.12 ● 前言: 1. 大家最好通读一遍过后,在理解的基础上再按照步骤搭建. 2. 之前写过两篇<<在VMware下安装Ubuntu ...

  6. 基于HBase Hadoop 分布式集群环境下的MapReduce程序开发

    HBase分布式集群环境搭建成功后,连续4.5天实验客户端Map/Reduce程序开发,这方面的代码网上多得是,写个测试代码非常容易,可是真正运行起来可说是历经挫折.下面就是我最终调通并让程序在集群上 ...

  7. elasticsearch与mongodb分布式集群环境下数据同步

    1.ElasticSearch是什么 ElasticSearch 是一个基于Lucene构建的开源.分布式,RESTful搜索引擎.它的服务是为具有数据库和Web前端的应用程序提供附加的组件(即可搜索 ...

  8. 分布式集群环境下运行Wordcount程序

    1.分布式环境的Hadoop提交作业方式与本地安装的Hadoop作业提交方式相似,但有两点不同: 1)作业输入输出都存储在HDFS 2)本地Hadoop提交作业时将作业放在本地JVM执行,而分布式集群 ...

  9. Linux安装ElasticSearch与MongoDB分布式集群环境下数据同步

    ElasticSearch有一个叫做river的插件式模块,可以将外部数据源中的数据导入elasticsearch并在上面建立索引.River在集群上是单例模式的,它被自动分配到一个节点上,当这个节点 ...

随机推荐

  1. TCP服务器端和客户端程序设计【转】

    本文转载自:http://blog.csdn.net/yueguanghaidao/article/details/7035248# 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.实验目的 ...

  2. Java截取最后一个 _ 后面的所有字符

    String file = http://localhost:8888/upload/20190310/115111_58_592_HDFS读取文件的流程.png //截取文件名 String ori ...

  3. longtable 跨越多个页面时,如何在跨页时自动断行并加上横线及去掉页眉

    参考: http://users.sdsc.edu/~ssmallen/latex/longtable.html 一般的,在首行后面加上 \endfirsthead\hline\endhead\hli ...

  4. 疑难杂症:SQLServerAgent 当前未运行,因此无法将此操作通知它。

    日志信息:SQLServerAgent 当前未运行,因此无法将此操作通知它. (Microsoft SQL Server,错误: 22022) 确认问题之后,远程到服务器.按照以下步骤  1.打开计算 ...

  5. listen 70

    Better Sidewalks Could Bring Improved Public Health Most of our serious illnesses and deaths in the ...

  6. PS 滤镜— —扇形warp

    clc; clear all; close all; addpath('E:\PhotoShop Algortihm\Image Processing\PS Algorithm'); I=imread ...

  7. Sysctl命令及linux内核参数调整

        一.Sysctl命令用来配置与显示在/proc/sys目录中的内核参数.如果想使参数长期保存,可以通过编辑/etc/sysctl.conf文件来实现.    命令格式:  sysctl [-n ...

  8. CodeForces - 1005E2:Median on Segments (General Case Edition) (函数的思想)

    You are given an integer sequence a1,a2,…,ana1,a2,…,an. Find the number of pairs of indices (l,r)(l, ...

  9. MySQL_产品昨日库存与历史入库历史出库成本_20161124

    产品昨日库存与历史入库历史出库成本 SELECT d.ID,a.*,e.昨日订单额 ,b.昨天入库额,b.历史2天,b.历史3天,b.历史4天,b.历史5天,b.历史6天,b.历史7天,b.历史8天, ...

  10. BZOJ_1025_[SCOI2009]游戏_DP+置换+数学

    BZOJ_1025_[SCOI2009]游戏_DP+置换 Description windy学会了一种游戏.对于1到N这N个数字,都有唯一且不同的1到N的数字与之对应.最开始windy把数字按 顺序1 ...