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

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

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

一、将本该保存在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发布网络。效果还不错。

相关文章

做网站用php还是html5?能在手机和p?

做网站用php还是html5?能在手机和p?

php和html5是不同的语言好吧。一个负责后台的逻辑处理,一个负责前台的UI呈现。他们是不冲突的。现在还有很多浏览器不支持html5。所以建议用html4来做网站。智能手机一般都会支持的。服务一般会...

org域名的域名级别分类?

org域名的域名级别分类?

国家域名可分为不同级别,包括顶级域名、二级域名,三级域名等。 顶级域名又分为两类: 一是国家顶级域名(national top-level domain names,简称nTLDs),200多个国家都...

商业性机构或公司的域名中一般有什么(域名中什么表示商业组织网站)

商业性机构或公司的域名中一般有什么(域名中什么表示商业组织网站)

根据你的问题:域名由两个或两个以上的词构成,中间由点号分隔开。最右边的那个词称为顶级域名。下面是几个常见的顶级域名及其用法: *.COM--用于商业机构。它是最常见的顶级域名。任何人都可以注册.COM...

网站设计武汉(专业家装建材网站设计)

网站设计武汉(专业家装建材网站设计)

新公司官网制作: 首先要对自己公司有一个清晰的定位; 标题和关键词要准确,新颖; 网站内容要足够丰富; 网站导航栏和布局要设计精妙,突出重点内容; 网站中有时常更新内容维持活跃度。 最好要有一些...

java网站开发优缺点(web开发框架的优势)

java网站开发优缺点(web开发框架的优势)

网站开发的选择很多。 java和php开发首先,java和php都不能实现网站的全栈开发。 1、java给人一种重的感觉,优势是框架、组件、中间件丰富,除了web,还有云计算、大数据、人工智能的框架,...

域名如何跳转?

域名如何跳转?

1 如果是新网代理,登陆agent.xinnet.com进入代理后台,找到这个域名,点击后面的mydns管理,进入mydns控制面板。如果有管理密码:登陆dcp.xinnet.com,进入后点击myd...

有没有令人赏心悦目的网址导航网站?

有没有令人赏心悦目的网址导航网站?

你好。我是小何。 我来推荐一下我自己制作并运维的网址导航。 地址: 小何导航,做一个简洁但方便的导航 为什么要制作它作为一个运维师,闲来没事逛github是个良好习惯,而又是正好又一次,我刷到一个导...

数据库有哪些?

数据库有哪些?

主(zhǔ)流數(shù)据库主(zhǔ)要有MySql、Oracle、db2、SqlServer、mongodb、PostgreSql 国内主(zhǔ)要有:南大(dà)通用(yòng)、武汉达梦、...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。