web服务器集群(多台web服务器)后session如何同步和共享
2019独角兽企业重金招聘Python工程师标准>>>
在访问量上去以后,很多人会采用web集群的方式在满足逐渐增长的用户量。这时候就不得不面对一个问题,那就是在多个服务器下,每次请求都会因为负载均衡而分配到不同的服务器上。用户在登录服务器后,下一次请求被分配到另一个服务器上,这时候session不同步,用户就无法继续使用原先的session。下面我就聊聊如何解决这个问题。
一、利用Mysql数据库共享Session数据的方式
使用一个mysql服务器做共享服务器,把所有的session的数据保存mysql服务器上,所有的web服务器都来这台mysql服务器来获取session数据。这里有一个关键的地方,用来存放session的数据表不要跟其他数据库表放在一起,要独立开来,专门放在一个低端的服务器上面。不然,数据库本身压力就很大了,再加上session是需要频繁的读取的,这使得数据库很容易达到瓶颈,从而导致过高的响应延迟。
二、利用cookie共享Session数据
当用户请求后产生的session,我们把他的sessionId和值都存在cookie里面。这样,当你访问a服务器后,产生了session放在客户端的cookie里面,你在访问被分配到b服务器上。这时候,b服务器先判断本身服务器上有没有这个用户的session,如果没有,在去看看客户端的cookie里面有没有这个session,如果有,就获取客户端的这个cookie里面的session。这样就实现了session的同步。
三、使用内存来共享Session数据
这里建议可以选择采用开源的缓存系统来完成session的共享,比如memcache等。原理跟mysql一样,不管哪个服务器产生的session都放在一个"内存池"里面。要获取session数据的时候都统一到这里获取。我建议用这个方法。
//使用当前sessionId 标识作为key用来缓存当前用户的userId,openId,// 防止用户在使用过程中切换网络导致服务器切换跳404页面String redisCurrentUserIdAndOpenIdKey = RedisUtil.getRedisCurrentUserIdAndOpenIdKey(request.getSession().getId());Map<String,String> currentUserIdAndOpenIdMap = new HashMap<String,String>();currentUserIdAndOpenIdMap.put(WebappCommonConstant.OPEN_ID, openId);currentUserIdAndOpenIdMap.put(WebappCommonConstant.USER_ID, String.valueOf(userId));redisBiz.insertMapToRedis(redisCurrentUserIdAndOpenIdKey,currentUserIdAndOpenIdMap,WebappCommonConstant.FREE_LOGIN_TIME);
转载于:https://my.oschina.net/wuweixiang/blog/1557001
web服务器集群(多台web服务器)后session如何同步和共享相关推荐
- linux服务器集群管理面板,AppNode-Linux 服务器集群管理面板安装教程
有关 Linux 面板我们已经说过几个了,如果你手里有很多 Linux 服务器怎么去管理呢,目前这几款中文面板都不具备集中管理功能.今天介绍一款定位于服务器运维管理的AppNode,一款Linux 服 ...
- kafka服务器死机消息,当kafka集群其中一台宕机后,会怎么样?
一.介绍 我们搭建好kafka集群后,对其进行性能测试.遇到这种场景:我搭建好了三台kakfa集群,然后停掉其中一台kafka,然后集群是否能正常工作呢? kafka集群: 192.168.183.5 ...
- 集群搭建在一台计算机上,服务器集群
服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器.集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份,从而使得任何一个机器坏了整 ...
- 构建服务器集群感知的 Java 应用程序
Mukul Gupta, 高级技术架构师, DGI Paresh Paladiya, 高级技术架构师, CGI 简介: 服务器集群对于高度可扩展的 Java 企业级应用程序开发已司空见惯,但是应用程序 ...
- 【整理学习Hadoop】Hadoop学习基础之一:服务器集群技术
服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器.集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份,从而使得任 ...
- 什么是服务器集群?海外服务器集群的优势?
什么是服务器集群? 服务器集群是一种服务器基础架构,它使用多个物理服务器(一般指的是有2台或者2台以上的服务器同时工作),为用户提供各种服务和应用程序的访问.使用集群服务器的主要优点是它可以提供比单服 ...
- 什么是服务器集群技术,有哪些优缺点?
对于服务器朋友们了解多少呢?而服务器集群技术又是什么服务器?朋友们都了解吗?今天这篇文章华纳云小编就给大家介绍一下 什么叫服务器集群技术? 就是抱团取暖,服务器集群技术是将若干台服务器集中起来进行某一 ...
- 为什么要实现服务器集群
服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器,集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份,从而使得任何一个机器坏了整 ...
- 搭建服务器集群的方法介绍
搭建服务器集群的方法介绍 搭建本地服务器集群 软硬件要求 安装服务器 网络配置 搭建本地服务器集群 软硬件要求 一台电脑(系统不限,配置高一点更好) VirtualBox Centos7 Virtua ...
最新文章
- LeetCode 3 无重复字符的最长子串
- 代码注入之远程线程篇
- 通过idea将maven工程转为web项目
- Redis基础知识点总结
- 本文把 TCP/IP 讲绝了
- yuki翻译器钩子_git hooks钩子
- NFS方式挂载rootfs的设置方法
- python 读取地震道头数据_【Python】OGR库(1):读取矢量数据
- VB怎样屏蔽 Alt+F4键
- Android 升级到Android Studio2.2 后打不开以前版本的项目
- python爬虫问题:error: command 'gcc' failed with exit status 1
- Isight 软件集成AVLCruise软件方法探讨
- 论文重复率太高咋办?Python来帮你解决
- 《计算机网络(第7版)》-谢希仁
- ROS二维码识别以及OKR使用
- 通过 BT 种子 info_hash 值下载种子又一法
- MATLAB--数字图像处理 图像平移
- win11怎么开启休眠睡眠?
- python学了没有用_如何用Python进行无监督学习
- ThinkPHP5部署项目问题1
热门文章
- java 基本类型共享_Java基础数据类型
- SetInterval(循环计时器)
- 7-3 欢迎参加贵工程2021年C语言程序设计大赛! (5 分)
- 利用维纳滤波编码实现给定的运动模糊图像恢复
- 奇怪的象棋游戏及升级版
- /usr/include/stdio.h:27:10: fatal error: bits/libc-header-start.h: No such file or directory 报错解决
- c3074 无法使用带圆括号的_地埋警示带预防挖掘 石油管道警示带保护管道安全...
- sftp 设置仅能访问自己目录的用户
- mongodb----副本集搭建及故障自动切换
- 闭包造成的内存泄露怎么解决?