当前位置:首页 > 建站优化 > 正文内容

如何在多台web服务器上共享session?

zhuangbi888.com2021-05-19 05:30建站优化155

一、将本该保存在web服务器磁盘上的session数据保存到cookie中

即用cookie会话机制替代session会话机制,将session数据保存到客户端浏览器的cookie中,这样同一个用户访问同一网站时,无论负载均衡到哪台web服务器,都不用再去服务器请求session数据,而直接获取客户端cookie中的session数据。如此,同一个用户的登录状态就不会丢失了。

但这样做,有三大弊端:

把session数据放到客户端的cookie中,一般都是重要数据(如用户id、昵称等),会存在安全问题,但可以将session数据加密后,再存放到cookie中,来降低安全风险。

如何在多台web服务器上共享session?

浏览器对单个cookie的数据量大小限制为4K左右,因此会存在数据量的限制问题。

影响带宽性能,降低了页面的访问速度。在高访问量的情况下,用户每次请求时,都要将客户端cookie中的session数据发送到服务器,要占用较多的带宽,进而影响访问速度,服务器带宽成本增高。

二、将本该保存在web服务器磁盘上的session数据保存到MySQL数据库中

sessionid还是利用cookie机制存储到客户端,但session数据却存放在MySQL服务器上。(需要建立sessionid和session数据行的对应关系)

但这样做,只适合访问量比较小的网站。如果网站的访问量比较大,对MySQL服务器会造成很大压力。因为每次用户请求页面(即使是刷新页面)都要查询MySQL数据库中的session数据表,进而判断用户的登录状态和读取用户相关信息,势必会对数据库服务器造成很大压力,这样就会降低服务器的响应速度,影响用户体验。

三、将本该保存在web服务器磁盘上的session数据保存到内存数据库(memcache或redis)中

memcache或redis是基于内存存储数据的,性能很高,尤其是高并发的情况下尤为合适。主要是因为从内存中读取数据要比从磁盘读取数据快很多。

内存数据库还支持数据过期失效的机制,正好与session的过期机制对应,推荐使用redis内存数据库,因为它比memcache支持更多的

数据类型,且支持内存数据备份到磁盘。

这里简单说一下,后面两种方法的注意要点:

如果多台web服务器对应的是不同的域名,为了保证cookie的唯一(同一个cookie在各个域名有效),需要修改php.ini文件中的session.cookie_domain

由于后面两种方法,属于用户自定义的方式管理session,而非默认的文件处理方式,故需修改php.ini中的session.save_handler=user

在开启session之前(即调用session_start()之前),需要先调用session_set_save_handler,关于session_set_save_handler的具体用法,请参考php手册

多个域名共用一个IP地址是如何实现的?

一个域名可以解析出几个IP地址,例如在访问,如下图所示。

虽然DNS解析得到了多个IP,但是大多数软件只会使用第一个IP地址,这是什么原因?

TCP/IP网络通信是基于IP地址的,当要访问的服务器地址是域名时,就需要先把域名解析成IP地址。在TCP/IP API中有一个叫gethostbyname的函数,负责把域名解析成IP地址。 函数的原型定义如下,参数name就是要解析的域名。

函数的返回值为一个结构体指针,这个结构体的定义为:

结构体中的h_addr_list是一个数组,用于存放解析出的多个IP地址,但很少有程序员会去考虑多个IP地址的问题,通常直接使用宏h_addr来获取IP地址,也就是第一个IP地址。

一些大型网站或CDN服务商为了实现负载均衡,他们的DNS服务器会动态改变多个IP地址的顺序,使得每个IP地址都有机会成为解析结果中的第一个IP地址。

如何在多台web服务器上共享session?

下面的小程序可以打印出解析地址是交替的。

怎么让多台服务器共用一个ip?

按照我说的做--公网--[路由器映射80端口到服务器一]---[交换机]交换机-[80端口,服务器一]+------[80端口,服务器二]+------[80端口,服务器三]在服务器一上安装squid(linux/windows)都可以,配置反向代理但不能通过IP访问,必须绑定域名访问。这是唯一方法。我在用,服务器在山东临沂和上海,主机分布在其他地方,通过VPN连接起来,大家通过2个服务器IP发布网络。效果还不错。

相关文章

一台主机可以有多少个域名(每一台主机必须有一个域名)

一台主机可以有多少个域名(每一台主机必须有一个域名)

看了楼上的回答,我做一下补充吧。目前主流的DIY主板上都会带有一个100M自适应的NIC,即网络接口卡( )。较好的零售市场上的主板或OEM用户的主板上更可能会集成千兆网卡。因此,一台主机一般会有一个...

龙游网站制作-龙游县政府领导名单

首先需要购买域名和服务器 域名可以注册也可以购买,一般选择简短易记的,常见的结尾有com和cn; 服务器是网站的一个基础,也是必备的,网站所有的数据都会储存在服务器里。服务器可以租用也可以购买,租用一...

建一个论坛网站要多少钱,免费建论坛有哪些

首先你得清楚网站要建到什么效果,不同的要求所花费的经费也不一样。可以几千元、也可以几百万、上亿。比如处于风口浪尖的12306网站,至此花费将近5个亿。 总体来说建立网站需要以下中步骤: 注册域名1)...

http://和www.前缀网站有什么具体区别?

http://和www.前缀网站有什么具体区别?

对於(yú)网站和域名、网址(zhǐ)来说,相信(xìn)大家都很常见了,只要会上(shàng)网肯定都知道几个常用的(de)网址(zhǐ)。关於(yú)网址(zhǐ),相信(xìn)有不(bù)少人...

腾讯云服务器连接教程(华为云空间无法连接到服务器)

腾讯云服务器连接教程(华为云空间无法连接到服务器)

现在的建站公司都是开发一套软件卖几百家,几千家,别以为花了一两万他会给你重新开发,完全没必要重新开发,都是现成的软件。还有很多开源软件,免费用,小站和不重要的简单展示站完全可以用这些,但一定要将域名自...

如果自己的公司有域名了,如何建立自己的企业邮箱?

如果自己的公司有域名了,如何建立自己的企业邮箱?

推荐QQ的域名邮箱,现在是免费的,只需要添加两条解析域名到QQ邮箱指定域名就可以开通了,使用方面超级简单后台设定公司域名后缀的邮箱地址绑定到公司员工的QQ号即可,这样即使员工离职也可以保留这个公司域名...

公司网站怎么注册(中国工商注册网入口)

公司网站怎么注册(中国工商注册网入口)

给你一个最简单的办法。 第一步,你要有一个企业域名。可以去阿里云的万网购买。 第二步,有了域名在阿里云邮箱申请一个免费的企业邮箱空间,我记得是5G空间。(或者在腾讯QQ邮箱里申请企业邮箱,免费好用稳定...

学会编程可以自己在家赚钱吗?

作为一个小程序员,也接过几个私活,我就简单的说一说吧。 首先,如果你没有编程基础,然后又工作多年了,十分的不建议再来学编程赚钱。 网上的确有很多平台来接单赚钱。一方面僧多粥少,玩的都是饥饿营销。容易的...