##server独立Session

例如以下图所看到的:

server独立Session要求用户的每次请求都必须在同一台应用server上面操作,这就要求负载均衡server每次都能把用户的请求发送到同一个地址的server上面。

第一个用户第一次訪问的1号server。那个在用户的整个会话中都必须由负载均衡server导流到1号server上面。

其它server不会保存1号用户的Session信息。

如今的负载均衡server一般都有这个功能(nginx)

可是假设出现以下的情况

这个时候1号server宕机的情况下,负载均衡server会把1号用户导流到2号或者3号server上面,可是用户在2和3号server上面没有安全的上下文环境。server会通知用户又一次登录。这样用户体验肯定会受到影响。并且非常可能用造成用户的数据丢失。

每台server保留所有Session

每台server保留所实用户的Session这就关系到应用server之间的Session同步问题。实时性要求比較高。

这样的方式能够避免上面server独立Session所遇到的问题,例如以下图所看到的:

长处

这样的方式即使出现第一种情况那么2和3号server上面也保存的1号的Session信息,当出现故障负载均衡server把1号用户导流到2和3号server上面时。server也会发现有1号用户的安全上下文,能够继续訪问并且不须要又一次登录。

缺点

可是这样的方式也有缺点,那就是相应用server的Session同步实时性要求比較高,并且会带来额外的跨带开销。并且当Session之遥有变化时,就须要同步。假设Session里面的信息量比較大。那个会占用相当大的内存消耗。

server共享Session

server共享Session信息:

长处

每一个用户的Session信息都会被存储到应用之外的另外一台server(可能是数据库,也可能是KV存储服务),这样应用server就不用存储每一个用户的Session信息了,节约了非常大的内存开销。

当不同应用server须要用到Session信息的时候就去找共享Sessionserver来获取信息。

这样负载均衡server也就不用把用户固定的分配到一台server上面了,并且也不用server之间来复制Session信息,当Session信息发生改变时,应用server都去共享server改动信息就可以。

缺点

比較依赖于共享server,一旦共享server或者共享server集群出现故障。用户会收到非常大影响

在Cookie中传递Session数据

在Cookie中存放用户信息倒是能排除一个不稳定的因素,可是Cookie在安全方面还是存在隐患。并且Cookie也有长度的限制。

在站点中用到最多的可能就是 应用独享Session 和 集中管理Session的方式。

当中集中管理Session中能够用memcached 做为sessionserver。效率也非常高。当然其它的NoSQL数据库也能够。

大家假设有什么好的建议能够一起学习。

Session 在分布式系统中实现方式的更多相关文章

  1. 分布式系统中session一致性问题

    业务场景 在单机系统中,用户登陆之后,服务端会保存用户的会话信息,只要用户不退出重新登陆,在一段时间内用户可以一直访问该网站,无需重复登陆.用户的信息存在服务端的 session 中,session中 ...

  2. 【分布式】Zookeeper在大型分布式系统中的应用

    一.前言 上一篇博文讲解了Zookeeper的典型应用场景,在大数据时代,各种分布式系统层出不穷,其中,有很多系统都直接或间接使用了Zookeeper,用来解决诸如配置管理.分布式通知/协调.集群管理 ...

  3. zookeeper系列(五)zookeeper在大型分布式系统中的应用

    作者:leesf    掌控之中,才会成功:掌控之外,注定失败. 出处:http://www.cnblogs.com/leesf456/p/6063694.html 尊重原创感谢博主公开这么好的博文, ...

  4. 如何在高并发分布式系统中生成全局唯一Id

    月整理出来,有兴趣的园友可以关注下我的博客. 分享原由,最近公司用到,并且在找最合适的方案,希望大家多参与讨论和提出新方案.我和我的小伙伴们也讨论了这个主题,我受益匪浅啊…… 博文示例: 1.     ...

  5. 分布式系统中一些主要的副本更新策略——Dynamo/Cassandra/Riak同时采取了主从式更新的同步+异步类型,以及任意节点更新的策略。

    分布式系统中一些主要的副本更新策略. 1.同时更新 类型A:没有任何协议,可能出现多个节点执行顺序交叉导致数据不一致情况. 类型B:通过一致性协议唯一确定不同更新操作的执行顺序,从而保证数据一致性 2 ...

  6. 如何在高并发分布式系统中生成全局唯一Id(转)

    http://www.cnblogs.com/heyuquan/p/global-guid-identity-maxId.html 又一个多月没冒泡了,其实最近学了些东西,但是没有安排时间整理成博文, ...

  7. (转)如何在高并发分布式系统中生成全局唯一Id

    又一个多月没冒泡了,其实最近学了些东西,但是没有安排时间整理成博文,后续再奉上.最近还写了一个发邮件的组件以及性能测试请看 <NET开发邮件发送功能的全面教程(含邮件组件源码)> ,还弄了 ...

  8. [ios-必看] WWDC 2013 Session笔记 - iOS7中的多任务【转】

    感谢:http://onevcat.com/2013/08/ios7-background-multitask/ http://www.objc.io/issue-5/multitasking.htm ...

  9. 分布式系统中生成全局ID的总结与思考

    世间万物,都有自己唯一的标识,比如人,每个人都有自己的指纹(白夜追凶给我科普的,同卵双胞胎DNA一样,但指纹不一样).又如中国人,每个中国人有自己的身份证.对于计算机,很多时候,也需要为每一份数据生成 ...

随机推荐

  1. C# 使用 Proxy 代理请求资源

    C# 使用 Proxy 请求资源,基于 HttpWebRequest 类 前言 这是上周在开发 C# 中使用 Proxy 代理时开发的一些思考和实践.主要需求是这样的,用户可以配置每次请求是否需要代理 ...

  2. BZOJ.1095.[ZJOI2007]捉迷藏(线段树 括号序列)

    BZOJ 洛谷 对树DFS得到括号序列.比如这样一个括号序列:[A[B[E][F[H][I]]][C][D[G]]]. 那比如\(D,E\)间的最短距离,就是将\(D,E\)间的括号序列取出:][[] ...

  3. luffy项目的接口开发

    处理跨域请求 主要的思路: 设置一个基于CORS的中间件来处理,关于跨域的产生与处理手段 settings.py: MIDDLEWARE = [ 'django.middleware.security ...

  4. vue插槽,也就是子页面、父页面相互传值的另一写法

    父页面: <template> <div class="parent"> <p>父组件</p> <child> < ...

  5. 冲刺NOIP复习,算法知识点总结

    前言        离NOIP还有一个星期,匆忙的把整理的算法补充完善,看着当时的整理觉得那时还年少.第二页贴了几张从贴吧里找来的图片,看着就很热血的.当年来学这个竞赛就是为了兴趣,感受计算机之美的. ...

  6. 华容道 [NOIP 2013]

    Describltion 小 B 最近迷上了华容道,可是他总是要花很长的时间才能完成一次.于是,他想到用编程来完成华容道:给定一种局面, 华容道是否根本就无法完成,如果能完成, 最少需要多少时间. 小 ...

  7. [jzoj]3777.最短路(shortest)

    Link https://jzoj.net/senior/#main/show/3777 Description 小Y最近学得了最短路算法,一直想找个机会好好练习一下.话虽这么说,OJ上最短路的题目都 ...

  8. 3ds max学习笔记-- 灯光调节

    8,软件内默认有两盏灯,在渲染时不产生投影和高光点.手动添加灯光时,系统灯光自动关闭: 1,标准灯光:聚光灯,平行光,泛光 ,天光: a,聚光灯:目标聚光灯和自由聚光灯,当目标聚光灯的[目标]取消勾选 ...

  9. 也谈谈我对Docker的简单理解

    Docker能解决什么问题呢?一个工具的出现必然需要解决一些问题,Docker也不例外,简单说说我们常见的2种情况Docker是如何解决的吧.1.程序在我这跑得好好的,在你那怎么就不行呢?!这是一个典 ...

  10. 使用linux kernel代码编译perf工具

    环境:Qemu + ARMv8 perf是一款综合性分析工具,大到系统全局性性能,再小到进程线程级别,甚至到函数及汇编级别. 在内核源码目录下执行编译脚本: #!/bin/bash cross_com ...