在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. js调试笔记

    js调试方法很多,今天总结一下最实用的的断点方法: debugger断点 这个很常见,但许多人不知道其实可以添加条件判断 if(something){debugger;} source断点 这个最为常 ...

  2. 20145239杜文超 《Java程序设计》第10周学习总结

    20145239 <Java程序设计>第10周学习总结 教材学习内容总结 Java的网络编程 网络编程 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据. 网络概述 1.计算机 ...

  3. HDU2457 DNA repair —— AC自动机 + DP

    题目链接:https://vjudge.net/problem/HDU-2457 DNA repair Time Limit: 5000/2000 MS (Java/Others)    Memory ...

  4. make和rest用法

    位置(position):下一个要读取或写入的数据的索引.缓冲区的位置不能为负,并且不能大于其限制(limit). 标记(mark)与重置(reset):标记是一个索引,通过Buffer中的mark( ...

  5. FastJson 输出值 首字母大小写问题

    解决方案: 1. 如果你的项目由多个模块且为分布式部署, 则可考虑使用设置System.property 2. 一般只是极少数的代码出现此情况, 那么建议直接在你的单例Service初始化时, 在静态 ...

  6. html5+CSS3实现的炫酷超链接特效

    今天为大家介绍一个非常炫酷的超链接特效.在你做一些前端的网页时可以在里面去用上这些前卫时尚的效果. 这些超链接特性,大都是借助伪元素.svg.HTML5动画来实现的.效果都很漂亮,不信看下面. 用你的 ...

  7. densenet tensorflow 中文汉字手写识别

    densenet 中文汉字手写识别,代码如下: import tensorflow as tf import os import random import math import tensorflo ...

  8. 【Codeforces】Gym 101608G WiFi Password 二分+线段树

    题意 给定$n$个数,求有最长的区间长度使得区间内数的按位或小于等于给定$v$ 二分区间长度,线段树处理出区间或,对每一位区间判断 时间复杂度$O(n\log n \log n)$ 代码 #inclu ...

  9. T58

    他们投产的新轿车广获传媒报道.The launch of their new saloon received much media coverage.法律规定禁止近亲结婚.Marriages in p ...

  10. 「NOIP2017」「LuoguP3959」 宝藏(爆搜

    题目描述 参与考古挖掘的小明得到了一份藏宝图,藏宝图上标出了 nn 个深埋在地下的宝藏屋, 也给出了这 nn 个宝藏屋之间可供开发的mm 条道路和它们的长度. 小明决心亲自前往挖掘所有宝藏屋中的宝藏. ...