热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

Session在分布式系统中的处理

:本篇文章主要介绍了Session在分布式系统中的处理,对于PHP教程有兴趣的同学可以参考一下。
服务器独立Session

如下图所示:
服务器独立Session要求用户的每次请求都必须在同一台应用服务器上面操作,这就要求负载均衡服务器每次都能把用户的请求发送到同一个地址的服务器上面。
第一个用户第一次访问的1号服务器,那个在用户的整个会话中都必须由负载均衡服务器导流到1号服务器上面。其他服务器不会保存1号用户的Session信息。

现在的负载均衡服务器一般都有这个功能(nginx)
Session 在分布式系统中的处理

但是如果出现下面的情况
Session 在分布式系统中的处理

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

每台服务器保留全部Session

每台服务器保留全部用户的Session这就关系到应用服务器之间的Session同步问题,实时性要求比较高。这种方式能够避免上面服务器独立Session所遇到的问题,如下图所示:

Session 在分布式系统中的处理

优点

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

缺点

但是这种方式也有缺点,那就是对应用服务器的Session同步实时性要求比较高,而且会带来额外的跨带开销,而且当Session之遥有变化时,就需要同步。如果Session里面的信息量比较大,那个会占用相当大的内存消耗。

服务器共享Session

服务器共享Session信息:

Session 在分布式系统中的处理

优点

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

当不同应用服务器需要用到Session信息的时候就去找共享Session服务器来获取信息。

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

缺点

比较依赖于共享服务器,一旦共享服务器或者共享服务器集群出现问题,用户会收到很大影响

在COOKIE中传递Session数据

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

').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('
  • ').text(i)); }; $numbering.fadeIn(1700); }); });

    以上就介绍了Session 在分布式系统中的处理,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

  • 推荐阅读
    • 小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限
      小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限 ... [详细]
    • 服务器部署中的安全策略实践与优化
      服务器部署中的安全策略实践与优化 ... [详细]
    • 本文总结了一次针对大厂Java研发岗位的面试经历,探讨了面试中常见的问题及其背后的原因,并分享了一些实用的面试准备资料。 ... [详细]
    • 深入解析:存储技术的演变与发展
      本文探讨了从单机文件系统到分布式文件系统的存储技术发展过程,详细解释了各种存储模型及其特点。 ... [详细]
    • 直播带货系统中的推流技术详解
      本文介绍了RTMP(实时消息传输协议)及其在直播带货系统中的应用,并详细探讨了带货直播系统的连麦方案,包括服务端合流和客户端合流的优势与劣势。 ... [详细]
    • 用阿里云的免费 SSL 证书让网站从 HTTP 换成 HTTPS
      HTTP协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的HTTP的网站是不 ... [详细]
    • 网站访问全流程解析
      本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
    • 在优化Nginx与PHP的高效配置过程中,许多教程提供的配置方法存在诸多问题或不良实践。本文将深入探讨这些常见错误,并详细介绍如何正确配置Nginx和PHP,以实现更高的性能和稳定性。我们将从Nginx配置文件的基本指令入手,逐步解析每个关键参数的最优设置,帮助读者理解其背后的原理和实际应用效果。 ... [详细]
    • 2021年Java开发实战:当前时间戳转换方法详解与实用网址推荐
      在当前的就业市场中,金九银十过后,金三银四也即将到来。本文将分享一些实用的面试技巧和题目,特别是针对正在寻找新工作机会的Java开发者。作者在准备字节跳动的面试过程中积累了丰富的经验,并成功获得了Offer。文中详细介绍了如何将当前时间戳进行转换的方法,并推荐了一些实用的在线资源,帮助读者更好地应对技术面试。 ... [详细]
    • 提升 Kubernetes 集群管理效率的七大专业工具
      Kubernetes 在云原生环境中的应用日益广泛,然而集群管理的复杂性也随之增加。为了提高管理效率,本文推荐了七款专业工具,这些工具不仅能够简化日常操作,还能提升系统的稳定性和安全性。从自动化部署到监控和故障排查,这些工具覆盖了集群管理的各个方面,帮助管理员更好地应对挑战。 ... [详细]
    • 在JavaWeb项目架构中,NFS(网络文件系统)的实现与优化是关键环节。NFS允许不同主机系统通过局域网共享文件和目录,提高资源利用率和数据访问效率。本文详细探讨了NFS在JavaWeb项目中的应用,包括配置、性能优化及常见问题的解决方案,旨在为开发者提供实用的技术参考。 ... [详细]
    • centos 7.0 lnmp成功安装过程(很乱)
      下载nginx[rootlocalhostsrc]#wgethttp:nginx.orgdownloadnginx-1.7.9.tar.gz--2015-01-2412:55:2 ... [详细]
    • Amoeba 通过优化 MySQL 的读写分离功能显著提升了数据库性能。作为一款基于 MySQL 协议的代理工具,Amoeba 能够高效地处理应用程序的请求,并根据预设的规则将 SQL 请求智能地分配到不同的数据库实例,从而实现负载均衡和高可用性。该方案不仅提高了系统的并发处理能力,还有效减少了主数据库的负担,确保了数据的一致性和可靠性。 ... [详细]
    • 在Java分层设计模式中,典型的三层架构(3-tier application)将业务应用细分为表现层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。这种分层结构不仅有助于提高代码的可维护性和可扩展性,还能有效分离关注点,使各层职责更加明确。通过合理的设计和实现,三层架构能够显著提升系统的整体性能和稳定性。 ... [详细]
    • (1)前期知识:1. 单机架构:单一服务器计算机——其处理能力和存储容量有限。2. 集群架构(负载均衡器与多节点服务器)——通过增加节点数量来提升系统性能和可靠性,实现高效的任务分配和资源利用。 ... [详细]
    author-avatar
    Carol卍_932
    这个家伙很懒,什么也没留下!
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有