在分布式中,用户的session如何处理呢?

服务器中的原生session是无法满足需求的,因为用户的请求有可能随机落入到不同的服务器中,这样的结果将会导致用户的session丢失,传统做法中有解决方案,是进行session同步,将一个服务器上的session进行同步到另一个服务器上,在一个集群中无论你访问哪个服务器都可以共享,但是这种方法有个明显缺陷,就是性能问题,传输有时延问题,其次这样每台服务器的session重复拥有,这样其内存必然受到影响,如果只有几台服务器还好,如果是十台,二十台服务器呢?这种恐怖的场景会是什么样的体验呢,我就无法得知了。

那么我们应该如何有效的解决这样的问题呢,我们可以使用传说中的token来解决,简单明了的说就是用户每次登陆的时候生成一个类似sessionId的东西(也就是所谓的token,这将是全局的唯一标识,如UUID,作用类似于(jsessionid)),将其写到cookie当中传送给客户端,客户端对数据库访问过程中不断上传这个token,而我们服务端拿到这个token就可以获取用户的在线信息,这个道理其实在很多地方是相通的,比如我们容器中实现原生session,也是将生成的id写入coolie当中。

接下来我会来详细介绍如何在登陆后实现分布式session

1,利用jdk中自带的uuid生成器生成uuid用token来标记名称,并写入cookie通过response传到客户端里,

2。给token设置有效时间,这里我给它设置了两天

3,在登陆的方法里加入cookie

4,通过@cookieValue来注解就可以获取到对应的token,但是需要注意一个问题,一些手机客户端是没用用到cookie来传的,而是直接用参数来传,那也不需要担心,@RequestParam注解一样可以获取,需要给他们一个优先级,先判断是否有参数后判断是否cookie有值

5,创建方法通过token获取user信息,当用户持续在线时,我们可以给他延迟时效。

分布式session个人理解浅谈的更多相关文章

  1. 搞懂分布式技术21:浅谈分布式消息技术 Kafka

    搞懂分布式技术21:浅谈分布式消息技术 Kafka 浅谈分布式消息技术 Kafka 本文主要介绍了这几部分内容: 1基本介绍和架构概览 2kafka事务传输的特点 3kafka的消息存储格式:topi ...

  2. ASP.NET中Session的个人浅谈

    看到博客园的一个哥们写的面试经历,想到了面试中常问到的Session,一时手痒就谈下自己对Session的理解,这东西最开始在用户登录登出的时候用到过,后来一直没怎么用过,里面还是有很多知识点值得注意 ...

  3. 针对JS经典题型对全局变量及局部变量的理解浅谈

    第一次写博,还蛮激动... 看到了三题经典题型,就我目前的认识对此题进行总结.如有错误,敬请指正 首先,我们先明确一下JS引擎的工作步骤: js引擎工作分为两步: 1.将这个js中的变量和函数声明保存 ...

  4. cookie,,session,cache,static 浅谈笔记

    cookie:存在于客户端,每次请求伴随httpRequest 到达服务器端,Cookie内保存sessionId,服务器端就是根据Cookie中的SessionId找到用户的专有session , ...

  5. Session&Cookie&localStorage浅谈

    Session&Cookie&localStorage 领导让我开发一个有两张信息表单需要提交页面的网站,我作为一名开发人员,这个需求太简单了,和领导说直接存session sessi ...

  6. 【转】浅谈分布式服务协调技术 Zookeeper

    非常好介绍Zookeeper的文章, Google的三篇论文影响了很多很多人,也影响了很多很多系统.这三篇论文一直是分布式领域传阅的经典.根据MapReduce,于是我们有了Hadoop:根据GFS, ...

  7. 浅谈分布式消息技术 Kafka(转)

    一只神秘的程序猿. Kafka的基本介绍 Kafka是最初由Linkedin公司开发,是一个分布式.分区的.多副本的.多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可 ...

  8. 浅谈分布式消息技术 Kafka

    Kafka的基本介绍Kafka是最初由Linkedin公司开发,是一个分布式.分区的.多副本的.多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/ngin ...

  9. 【转】.NET(C#):浅谈程序集清单资源和RESX资源 关于单元测试的思考--Asp.Net Core单元测试最佳实践 封装自己的dapper lambda扩展-设计篇 编写自己的dapper lambda扩展-使用篇 正确理解CAP定理 Quartz.NET的使用(附源码) 整理自己的.net工具库 GC的前世与今生 Visual Studio Package 插件开发之自动生

    [转].NET(C#):浅谈程序集清单资源和RESX资源   目录 程序集清单资源 RESX资源文件 使用ResourceReader和ResourceSet解析二进制资源文件 使用ResourceM ...

随机推荐

  1. OO随笔

    第一次作业——多项式计算 1.自我程序分析 第一次作业是多项式计算,只使用了一个多项式类.第一次接触面向对象的程序,还比较生疏,不是很能理解面向对象的思想.将读入,处理,计算,都放到了main函数中, ...

  2. Java问题解决:"错误:编码GBK 的不可映射字符"

    参考资料:http://blog.csdn.net/l1028386804/article/details/46583279 场景: 在使用javac编译java文件时出现以下错误: 解决方法: 使用 ...

  3. Hibernate实例——Customer表的展示

    Hibernate.cfg.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibe ...

  4. Kotlin 对象表达式和对象声明

    Kotlin 用对象表达式和对象声明来实现创建一个对某个类做了轻微改动的类的对象,且不需要去声明一个新的子类. 对象表达式 通过对象表达式实现一个匿名内部类的对象用于方法的参数中: window.ad ...

  5. CF Manthan, Codefest 16 B. A Trivial Problem

    数学技巧真有趣,看出规律就很简单了 wa 题意:给出数k  输出所有阶乘尾数有k个0的数 这题来来回回看了两三遍, 想的方法总觉得会T 后来想想  阶乘 emmm  1*2*3*4*5*6*7*8*9 ...

  6. 删除链表的倒数第N个节点(java实现)

    题目: 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链 ...

  7. Redis(三)-数据类型

    1.五种数据类型:字符串类型.字符串列表.有序字符串集合.哈希.字符串集合 2.字符串类型常用操作 (1)赋值 $ set key value (2)取值 $ get key (3)删除 $ del ...

  8. php正则匹配

    在PHP中,有两套正则表达式函数库,两者功能相似,只是执行效率上有所不同, 一套是有"preg_"为前缀命名的函数,一套有"ereg_"命名的函数的函数, 一个 ...

  9. hdoj3247

    注意fail时怎么走. #include <iostream> #include <cstdio> #include <cmath> #include <al ...

  10. form表单js提交

    form表单js提交      $('#form1').submit(); 延迟form表单提交 function submitcheck() { $('#light').css('display', ...