Session机制

JSESSIONID是Session的标识,当客户端请求服务器端的时候,服务器端会检查是否已经给这个客户端创建过Session,也就是看客户端的请求中的header是否有Cookie:JSESSIONID=…,如果客户端请求包含JSESSIONID,那么服务器端可以根据JSESSIONID找到对应的Session;如果没有,则服务端认为该客户端第一次访问,会在response中增加header,即Set-Cookie:JSESSIONID=…,当客户端收到该response后就会被设置Cookie,以后的请求都会携带该Cookie,保证Session的一致性;

1 Session机制测试

1.1 模拟第一次访问(无JSESSION)

1.2 模拟非第一次访问(有JSESSIONID)

2 分布式Session实现

2.1 伪分布式Session

2.1.1 nginx ip_hash

根据客户端的IP,将请求分配到不同的服务器上;

配置如下:

upstream my_upstream {

ip_hash;

server 10.20.35.11:8001;
                server 10.20.35.11:8002;
 }

2.1.2 nginx sticky

  1. https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/overview

下载之后通过--add-module重新编译nginx;

配置如下:

  1. upstream my_upstream{
  2.     sticky;
  3.     server 10.20.35.11:8001;
  4.     server 10.20.35.11:8002;
  5. }

实现原理:

Sticky是nginx的一个模块,它是基于cookie的一种nginx的负载均衡解决方案,通过分发和识别cookie,来使同一个客户端的请求落在同一台服务器上,默认标识名为route
1 客户端首次发起访问请求,nginx接收后,发现请求头没有cookie,则以轮询方式将请求分发给后端服务器。
2 后端服务器处理完请求,将响应数据返回给nginx。
3 此时nginx生成带route的cookie,返回给客户端。route的值与后端服务器对应,可能是明文,也可能是md5、sha1等Hash值
4 客户端接收请求,并保存带route的cookie。
5 当客户端下一次发送请求时,会带上route,nginx根据接收到的cookie中的route值,转发给对应的后端服务器。

2.2 真分布式Session

后端实现:

1 继承HttpSessionWrapper,比如DistributeHttpSessionWrapper,覆盖getAttributeNames、getAttribute、setAttribute等方法,改为到一个公共的地方读写session属性,比如DB、Memcached、Redis等;

javax.servlet.http.HttpSession

2 继承HttpServletRequestWrapper,比如DistributeHttpServletRequestWrapper,覆盖getSession方法,改为返回DistributeHttpSessionWrapper;

javax.servlet.http.HttpServletRequestWrapper

2 继承Filter,比如DistributeSessionFilter,覆盖doFilter方法,在调用链中将HttpServletRequest替换为DistributeHttpServletRequestWrapper;

javax.servlet.Filter

【原创】Java基础之Session机制的更多相关文章

  1. [ 原创 ] Java基础7--Java反射机制主要提供了以下哪些功能?

    AVA反射机制主要提供了以下哪些功能? 在运行时判断一个对象所属的类 在运行时构造一个类的对象 在运行时判断一个类所具有的成员变量和方法 在运行时调用一个对象的方法

  2. Java基础:类加载机制

    之前的<java基础:内存模型>当中,我们大体了解了在java当中,不同类型的信息,都存放于java当中哪个部位当中,那么有了对于堆.栈.方法区.的基本理解以后,今天我们来好好剖析一下,j ...

  3. java基础之反射机制

    一.概念 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为jav ...

  4. java基础篇---反射机制

    一.JAVA是动态语言吗? 一般而言,说到动态言,都是指在程序运行时允许改变程序结构或者变量类型,从这个观点看,JAVA和C++一样,都不是动态语言. 但JAVA它却有着一个非常突出的动态相关机制:反 ...

  5. Java基础:GC机制

    上一节,简单的介绍了java当中的内存模型,那么经常和内存模型一起提到的JAVA垃圾回收机制当然也需要在这里一并的总结一下. 所谓是垃圾回收机制,用通俗的话来说,就是将那些没有被任何变量引用的实例对象 ...

  6. Java基础:异常机制

    最近开始了找工作的面试,在面试过程中,面试官问了关于Java当中的异常处理机制,一直以来,无论写代码还是看书,自己对异常处理这一块就没有很好的重视过,对它的认知也仅仅停留在通过Try-catch去进行 ...

  7. Java基础介绍运行机制笔记

    1. 基础知识点图解 编程语言核心结构:变量.基本语法.分支.循环.数组.…… Java面向对象的核心逻辑:OOP.封装.继承.多态.接口…… 开发Java SE高级应用程序:异常.集合.I/O.多线 ...

  8. Java基础教程——反射机制

    Java反射机制 Java反射机制是Java语言的一个重要特性,使得Java语言具备"动态性": 在运行时获取任意一个对象所属的类的相关信息; 在运行时构造任意一个类的对象: 在运 ...

  9. Java基础-JVM类加载机制

    JVM的类加载是通过ClassLoader及其子类来完成的,类的层次关系和加载顺序可以由下图来描述: 1)Bootstrap ClassLoader /启动类加载器 $JAVA_HOME中jre/li ...

随机推荐

  1. [Oracle]Sqlplus 中使用 new_value

    通过再sqlplus 中使用 new_value,可以把从表中查询出来的值,放置到 变量中.然后使用变量时,类似与宏定义一样,就可以像使用表中字段一样方便. 这使得sqlplus 的脚本具备和pl/s ...

  2. jeecg字典表—普通表

    创建普通表 同步数据库(创建对应的表) 验证功能效果 添加用户表,并添加对应的级别属性 同步用户表 字典功能测试 然后生成最新代码,添加到菜单即可

  3. go语言-值类型与引用类型

    https://www.cnblogs.com/java-zhao/p/9942311.html https://blog.csdn.net/TDCQZD/article/details/826836 ...

  4. JS 设计模式三 -- 策略模式

    策略模式 概念 定义一系列算法,把它们一个个封装起来. 将算法的使用与算法的实现分离开来 实现 // 加权映射关系 var levelMap = { S: 10, A: 8, B: 6, C: 4 } ...

  5. SSM项目使用GoEasy 实现web消息推送服务

      一.背景 之前项目需要做一个推送功能,最开始我用websocket实现我的功能.使用websocket的好处是免费自主开发,但是有几个问题:1)浏览器的兼容问题,尤其是低版本的ie:2)因为是推送 ...

  6. Tomcat连接 ideal

    一.为了建立Servlet,我们需要先将Tomact连接到ideal! <%-- Created by IntelliJ IDEA. User: Administrator Date: 2019 ...

  7. 10.3 Vue 路由系统

     Vue 路由系统  简单示例 main.js  import Vue from 'vue' import App from './App.vue' //https://router.vuejs.or ...

  8. Excel将一列数据变为两列

    如下表可将第一列分散到第二列和第三列 A B C 1 =OFFSET($A$1,(ROW(A1)-1)*2+COLUMN(A1)-1,) &"" =OFFSET($A$2, ...

  9. 第七篇--ubuntu18.04下面特殊符号

    按住键盘win键,在搜索框输入“字符”,弹出来的工具点进去 需要什么符号就找什么符号,然后点击它复制就好.

  10. openstack项目【day24】:KVM部署

    本节内容 虚拟化支持 软件准备 检查CPU虚拟化支持 安装软件包 激活并启动libvirtd服务 网络模式 配置桥接网络 验证网络 尝试连接Hypervisor 创建虚拟机 虚拟机操作 一.虚拟化支持 ...