仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1184|回复: 20
打印 上一主题 下一主题

[学习教程] PHP编程:大型Web使用运转时 PHP负载平衡指南

[复制链接]
小妖女 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:32:57 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
PHP成功的插入,删除,更新数据的时候,显然,你已经距离成功指日可待了。      曩昔当运转一个大的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 来把一切的日记写到一个中心办事器。虽然这个办法请求更多的设置装备摆设,然而他也供应了最强健的计划。
培训的第四阶段,就是应用PHP语言开发实际的程序。以结合实际的项目开发来进行学习,效果真的很好,在学习完之后就开始练习,能比较容易掌握所学的知识,这是学校的学习所没法比的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-6-12 15:51

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表