大型Web应用运行时 PHP负载均衡指南

  • 如今,“大型服务器”模式的时代已经过去,我们在运行一些大的Web应用时候,可以使用各种各样的负载均衡技术,这是一种更可行的方法,将使硬件成本降至最低。

 

过去当运行一个大的web应用时候意味着需要运行一个大型的web服务器。因为你的应用吸引了大量的用户,你将不得不在你的服务器里增加更多的内存和处理器。今天,“大型服务器”模式已经过去,取而代之的是大量的小服务器,使用各种各样的负载均衡技术。

“更多小服务器”的优势超过过去的“大型服务器”模式体现在两个方面:

1. 如果服务器宕机,那么负载均衡系统将停止请求到宕机的服务器,转而分发负载到其他正常运行的服务器上。

2. 扩展你的服务器更加容易。你要做的仅仅是加入新的服务器到负载均衡系统。不需要中断你的应用运行。

所以,把握住这个机会。当然,代价就是这要求你的应用开发时增加一点复杂度。这就是本文要覆盖的内容。

这时你可能对自己说:“但是我怎么知道我正在使用负载均衡呢?”。最诚实的回答是,如果你正在问这个问题,那么答案是你多半没有在使用负载均衡系统并且你的系统不需要考虑这个问题。大多数情况,当应用成长足够大的规模时,负载均衡就需要明确提出和设置了。然而,我也偶尔看见虚拟主机公司为客户的应用做这个负载均衡,或者像下面描述的那样要自己来做。

注意,我一直提“web应用”而不是website,这是想区分“web应用”是那些复杂的站点往往涉及服务器端编程和数据库,而不是website那样只显示简单的静态内容。

1. PHP文件

第一个问题是,如果你有大量的小型服务器,你怎么把你的php文件上传到所有的服务器上?有如下的方法供你参考:

◆分别上传所有的文件到每一个服务器 , 这种方法带来的问题是:想像一下你有20个服务器,那么上传过程中这将很容易导致错误,并且更新时极有可能导致不同服务器上有不同版本的文件。

◆使用 ‘rsync ‘ (或类似的软件) . 这样的工具能同步本地目录和多个远程主机目录上的文件。

◆使用版本控制软件(如subversion ) . 这是我最喜欢的方法。用它可以很好地维护我得代码,当发布我的应用时,可以在每一个服务器上运行svn update命令同步。这种方法也使切换服务器得代码到过去的某一个版本更加容易。

◆使用一个文件服务器(你可能发现NFS 非常适合做这件事情). 这种方式是使用一个文件服务器来存放你的web应用. 当然,如果你的文件服务器宕机,那么多所有你的站点将不能使用。这时,你就需要花费更多的开支来恢复它。

选择哪种方式依赖于你的需求和你掌握的技能。如果你使用版本控制系统,那么你可能得计划一个方法如果同时执行一个更新命令更新所有服务器上的代码。然而,如果使用文件服务器,你就要实现一些失败恢复机制,防止万一服务器宕机导致请求失败。

2. 文件上传

当只有一台服务器时,文件上传不是一个问题。但是当我们有多台服务器时,那么上传的文件应该怎么存放呢?上传文件的问题和跨服务器php文件存储是类似的。下面是几种可能的方案:

◆把文件存储到数据库中。大多数数据允许存储二进制数据。当你请求文件下载时,访问数据把二进制数据和相应的文件名和类型输出给用户。在使用这种方案前应该考虑数据库怎样存储你的文件。该方法的问题在于如果数据库服务器宕机将使文件不可用。

◆在一个文件服务器上存储上传的文件 . 与前面的介绍一样,你要安装一个文件服务器让所有web服务器共享,把所有上传的文件上传到这里,上传后所有的web服务器就都可以使用它。但是,如果文件服务器宕机,那么可能发生图像文件下载中断。

◆设计你自己的上传机制传输文件到服务器到每一个服务器 . 这个方法没有单个文件服务器或者数据库方案的缺陷,但是将增加你代码的复杂度。例如,如果上传到多个服务器过程中,服务器宕机,你要怎么处理?

用数据库存储上传文件但是设计一个文件缓存机制是一个不错的方案。当服务器接收一个文件下载请求时,首先检查缓存系统中是否有该文件,如果发现那么从缓存系统下载,否则从数据库读取并把它缓存到文件系统中。

3. 会话(Sessions)

如果你熟悉php的session 处理,你将可能知道默认情况下,它存储session数据在服务器的临时文件里。而且,这个文件仅仅在你请求处理的那个服务器上,但是接下来的请求可能被另外一个服务器处理,这将在另一个服务器上生成新的session。这导致session频繁地不被识别,如登录用户总是要求重新登录。

我推荐的方案是,要么重新php内建的session处理机制存储session数据到数据库,或者实现你自己的机制保证发送一个用户的请求到同一台服务器。

4. 配置(Configuration)

尽管这个话题不是和php特别相关,我感觉还是有必要提及。当运行集群服务器时,用某种方法保持服务器之间的配置文件同步是一个好主意。如果配置文件不一致,可能导致一些非常奇怪的断断续续的行为导致很难排查这些问题。

我推荐使用版本控制系统单独管理他们。这样你可以为不同的项目安装存储不同的php配置文件,也可以保持所有服务器配置文件同步。

5. 日志(Logging)

像配置问题一样,logging不是仅仅和php相关。但是对于保持服务器健康运行它仍然是非常重要的。没有正确的logging系统,你怎么知道如果PHP代码开始产生错误(在系统正式运行时,你总是关闭display_errors 设置,不是吗?)

有几种方法你可以实现logging:

1. 在每一个服务器上记录日志。 这是最简单的方法。每一个机器仅仅记录一个文件。好处是简单,可能只要很少的配置。但是,随着服务器数量的增多,监控每台服务器上的日志文件将变得非常困难。

2. 记录日志到一个共享 这种方法每一个服务器仍然有这个日志文件,但是他们通过共享机制被存储在一个中央文件服务器上,这将使监控日志变得更简单。该方案的问题在于,如果文件服务器不可用将导致一个简单的日志不能写入问题最终导致整个应用崩溃。

3. 记录日志到logging服务器 你可以使用一个logging软件,如syslog 来把所有的日志写到一个中央服务器。尽管这个方法要求更多的配置,但是他也提供了最健壮的方案。

转载于:https://www.cnblogs.com/kakaflex/archive/2010/11/05/1869515.html

K230+canMV开发中常见的数据类型转换参考示例 【代码】K230+canMV开发中常见的数据类型转换参考示例。 阅读详情

相关推荐

终于搞定!Cloudflare Tunnel 报错 Error 1033,一次完整修复记录

最近遇到了 Cloudflare Tunnel Error 1033 报错的问题,本文记录了完整的排查和解决方案💡

XiaoqiangClub的博客 1063

Web应用-网络连接】关于 Azure Web 应用 4 分钟空闲连接的限制

Azure Web 应用后台在处理耗较长的请求,并且在此期间,客户端和 Azure Web 应用没有数据交互,即 TCP 连接一直处于空闲状态,此种情况超过 4 分钟后,Azure Web 应用会强制断开于客户端的 TCP 连接,并且客户端如浏览器会收到请求错误。 Azure Web 应用的工作流如下: 根据上图所示,一个 Web 请求首先到 Azure 前端的负载均衡器,负载均衡器将请求转...

weixin_34279184的博客 149

2005-2023年各省恩格尔系数数据(含原始数据+计算过程+计算结果)

2005-2023年各省恩格尔系数数据(含原始数据+计算过程+计算结果)1、间:2005-2023年2、来源:统计NJ、住户调查NJ、国家统计J3、范围:31省4、指标:食品消费支出(2013-2023)、居民人均消费支出(2013-2023)、城镇居民人均消费支出(2005-2012)、城镇居民食品消费支出(2005-2012)、农村居民人均消费支出(2005-2012)、农村居民食品消费支出(2005-2012)、总人口(2005-2012)、城镇常住人口数(2005-2012)、农村常住人口数(2005-2012)、城镇恩格尔系数(2005-2012)、农村恩格尔系数(2005-2012)、恩格尔系数(2005-2023)5、计算说明:恩格尔系数=居民人均食品性消费支出/居民人均消费支出*100%其中2005-2012年的恩格尔系数=(农村恩格尔系数*乡村人口占比+城镇恩格尔系数*城镇人口占比)6、缺失情况:无缺失

php负载均衡原理_大型Web应用运行 PHP负载均衡指南

过去当运行一个大的web应用候意味着需要运行一个大型web服务器。因为你的应用吸引了大量的用户,你将不得不在你的服务器里增加更多的内存和处理器。今天,“大型服务器”模式已经过去,取而代之的是大量的小服务器,使用各种各样的负载均衡技术。“更多小服务器”的优势超过过去的“大型服务器”模式体现在两个方面:1. 如果服务器宕机,那么负载均衡系统将停止请求到宕机的服务器,转而分发负载到其他正常运行的服务...

weixin_39873356的博客 107

大型Web应用运行 PHP负载均衡指南 可观可观啊

  过去当运行一个大的web应用候意味着需要运行一个大型web服务器。因为你的应用吸引了大量的用户,你将不得不在你的服务器里增加更多的内存和处理器。今天,“大型服务器”模式已经过去,取而代之的是大量的小服务器,使用各种各样的...

160

PHP大型Web系统架构探讨

PHP大型Web系统架构的设计和实现是一个复杂而重要的任务。我们需要综合考虑性能、可扩展性、稳定性和安全性等因素,选择合适的架构方案和技术手段来实现系统的目标。通过合理的架构设计和优化手段,我们可以打造出高性能、高可扩展性、高稳定性和高安全性的PHP大型Web系统。随着互联网技术的飞速发展,Web系统规模的不断扩大,对于大型Web系统的架构设计和实现提出了更高的要求。PHP作为一种广泛使用的服务器端脚本语言,在大型Web系统架构中也扮演着重要的角色。二、PHP大型Web系统架构的考虑因素。

2401_86114424的博客 743

大型web系统架构详解

动态应用,是相对于网站静态内容而言,是指以c/c++、php、Java、perl、.net等服务器端语言开发的网络应用软件,比如论坛、网络相册、交友、BLOG等常见应用。动态应用系统通常与数据库系统、缓存系统、分布式存储系统等密不可分。   大型动态应用系统平台主要是针对于大流量、高并发网站建立的底层系统架构。大型网站的运行需要一个可靠、安全、可扩展、易维护的应用系统平台做为支撑,以保证网站应用...

青崖梦 613

PHP负载均衡

过去当运行一个大的web应用候意味着需要运行一个大型web服务器。因为你的应用吸引了大量的用户,你将不得不在你的服务器里增加更多的内存和处理器。今天,“大型服务器”模式已经过去,取而代之的是大量的小服务器,使用各种各样的负载均衡技术。   “更多小服务器”的优势超过过去的“大型服务器”模式体现在两个方面:   1. 如果服务器宕机,那么负载均衡系统将停止请求到宕机的服务器,转而分发负载到其他正...

u011006757的博客 984

PHP负载均衡指南

  PHP负载均衡指南过去当运行一个大的web应用候意味着运行一个大型web服务器。因为你的应用吸引了大量的用户,你将不得不在你的服务器里增加更多的内存和处理器。今天,大型服务器模式已经过去,取而代之的是大量的小服务器,使用各种各样的负载均衡技术。这是一种更可行的方法,将使硬件成本降至最低。更多小服务器的优势超过过去的大型服务器模式体现在两个方面: 

张世敏(PHP) 327

php负载均衡原理_用PHP负载均衡指南

过去当运行一个大的web应用候意味着需要运行一个大型web服务器。因为你的应用吸引了大量的用户,你将不得不在你的服务器里增加更多的内存和处理器。今天,“大型服务器”模式已经过去,取而代之的是大量的小服务器,使用各种各样的负载均衡技术。“更多小服务器”的优势超过过去的“大型服务器”模式体现在两个方面:1. 如果服务器宕机,那么负载均衡系统将停止请求到宕机的服务器,转而分发负载到其他正常运行的服务...

weixin_39714565的博客 195

大型网站动态应用系统架构

动态应用,是相对于网站静态内容而言,是指以c/c++、php、Java、perl、.net等服务器端语言开发的网络应用软件,比如论坛、网络相册、交友、BLOG等常见应用。动态应用系统通常与数据库系统、缓存系统、分布式存储系统等密不可分。  大型动态应用系统平台主要是针对于大流量、

首席技术执行官CTO(Chief Technology Officer)|技术总监--邓斌博客 1648

为什么建站要用 WordPress?配合谷歌 SEO 优化更具独立站营销优势

WordPress建站凭借开源架构、海量插件生态与完全数据所有权,在谷歌SEO优化上具备源码可控、插件丰富、内容管理强大、数据自主等优势,是独立站长期营销的更优选择。SaaS建站虽便捷,但底层控制、内容与数据权限受限,难以支撑深度SEO战略。若重视自然流量与长期资产积累,应选WordPress。

2601_96764108的博客 203

LB/网关故障应急处置实战:后端全挂、会话失效、证书过期的现场排查复盘

没分层定位就动网关:客户端网络问题,你在那狂改网关配置,改一天也修不好。误把后端故障当网关问题修:后端OOM了,你以为是网关转发有问题,去调网关参数,结果网关连接池被慢请求拖死。直接重启网关导致存量连接全断:网关有点卡顿,你直接,结果引发大面积客诉。正确做法是先摘流。限流误触发当成攻击在解:正常业务高峰触发了限流,你以为是CC攻击,拼命加白名单,结果把真攻击放进了。改完TTL不生效是缓存背锅:改了DNS的TTL,发现没生效,其实是中间递归DNS或者客户端本地缓存没清,别急着骂权威DNS。

Neighbor_OldY的博客 220

科来流量分析/结合MCP自动化

通过两份 Weevely 抓包,可以还原攻击者与 WebShell 之间的通信过程。案例一中,攻击者已经开始使用wShell.php,并执行了echowhoamils和pwd等命令。案例二中,不仅捕获到了的上传过程,还还原出了获取主机名、用户名、当前目录以及尝试查询网络配置等操作。在此基础上,将科来的cmdl.exe封装成 MCP Server,使 Codex 可以直接查询本地抓包;再配合目录监控程序,实现新抓包保存后自动生成 HTML 报告。

2403_88102829的博客 218

vulnhub系列靶机-Photographer

<think>我们只需要根据内容生成摘要,≤150字。内容是关于靶机渗透过程:扫描端口,发现80/139/445/8000。从SMB共享获取邮件和备份,得到用户和密码,登录8000端口Koken CMS后台,利用文件上传漏洞getshell,再通过SUID php7.2提权获取root flag。需简洁概括。</think>本靶机通过SMB共享获取邮件与备份文件,得到账号密码;登录8000端口Koken CMS后台,利用文件上传漏洞获得Shell

Latticy的博客 243

用 Ace Data Cloud 自动发布 WordPress 文章:把 AI 写作变成可积累的 SEO 内容资产

# 用 Ace Data Cloud 自动发布 WordPress 文章:把 AI 写作变成可积累的 SEO 内容资产 做内容营销,很多团队都会遇到同一个问题:文章写了不少,平台流量也偶尔不错,但内容、账号、分发规则都不完全掌握在自己手里。一旦平台改规则、限流,甚至账号出现异常,之前的积累就可能被打断。 如果你希望把内容长期沉淀为自己的资产,**WordPress 仍然是一个非常值得投入的选

静觅 199

FTP替代怎么做?医院文件安全传输选型与迁移指南

医院开展改造,不应只换服务端软件,而应把传输、安全、审计和运维纳入统一治理。医院信息科常要处理多类文件任务:医保与公卫材料报送、设备日志回传、补丁与配置文件导入、科研数据交换,以及DICOM导出文件传递。3、Ftrans SFT支持传输保护、文件防病毒、目录权限、IP策略及配额,并集中记录操作。1. 监管与业务报送:医保结算、公卫统计和运营报表有固定限,所以需要自动传输、失败重试和结果告警,避免漏报后才被发现。1. 盘点资产:梳理服务器、账号、目录、协议、脚本、文件规模、任务频率、责任部门和业务限。

2501_93735104的博客 323

MySQL 运维实战:从 DQL 查询到 MHA 高可用架构全解析

> **摘要**:本文是 MySQL 运维实战的全面总结,涵盖从基础查询到高可用架构的完整知识体系。内容首先深入讲解 DQL 语句,包括单表操作(条件查询、模糊匹配、分组统计、排序、分页等)与多表查询(内连接、外连接、自连接、联合查询等),并结合员工部门表与王者荣耀实战案例进行演示。随后介绍 MySQL 用户管理与权限控制(DCL 语句),以及 Navicat、SQLyog 等图形化管理工具。在架构层面,文章详细讲解了基于 LAMP 架构的开源网站部署、MySQL 5.x 源码安装、冷备/逻辑备份与增量备份

2403_88632628的博客 143

WokrBuddy专家创建并发布到开放平台

本文介绍了在WorkBuddy开放平台发布专家的全流程:先在客户端通过提示词创建PHP资深专家并导出zip包,再登录开放平台上传压缩包,系统自动生成专家ID,确认信息提交审核,通过后即可在客户端使用。

李木 193

Parker Balston SF130972PHP 三气体氮气发生器

Parker Balston SF130972PHP(对应NitroFlow TG2NA)三气体氮气发生器,专为LC/MS系统提供高纯氮气、零级空气和干燥空气,三气一体化输出。氮气纯度99.999%,不含邻苯二甲酸酯,静音且可24/7运行,替代高压气瓶。适用于LC/MS/MS供气及痕量分析,多作为二手设备流通。

rcms15270269218的博客 66
上一篇: 让PHP开发者事半功倍的十大技巧
下一篇: 一名优秀的Flex开发者需要知道的10样东西
andy000107
博客等级 码龄12年 0粉丝 0原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值