仓酷云

标题: PHP编程:大型Web使用运转时 PHP负载平衡指南 [打印本页]

作者: 小妖女    时间: 2015-2-3 23:32
标题: PHP编程:大型Web使用运转时 PHP负载平衡指南
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语言开发实际的程序。以结合实际的项目开发来进行学习,效果真的很好,在学习完之后就开始练习,能比较容易掌握所学的知识,这是学校的学习所没法比的。
作者: 再现理想    时间: 2015-2-4 02:03
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年  具体的记不清啦,囧。
作者: 若相依    时间: 2015-2-9 09:46
学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql
作者: 蒙在股里    时间: 2015-2-9 23:17
如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,
作者: 愤怒的大鸟    时间: 2015-2-10 23:49
再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。
作者: 谁可相欹    时间: 2015-3-1 17:59
,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。
作者: 透明    时间: 2015-3-10 21:37
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年  具体的记不清啦,囧。
作者: 活着的死人    时间: 2015-3-13 00:08
你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。
作者: 深爱那片海    时间: 2015-3-17 09:37
这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己
作者: 海妖    时间: 2015-3-17 22:08
首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。
作者: 山那边是海    时间: 2015-3-22 17:08
首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。
作者: 若天明    时间: 2015-4-1 02:10
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
作者: 只想知道    时间: 2015-4-14 19:33
爱上php,他也会爱上你。
作者: 变相怪杰    时间: 2015-4-20 12:31
首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。
作者: 飘飘悠悠    时间: 2015-5-1 07:23
找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。
作者: 冷月葬花魂    时间: 2015-5-4 08:33
基础有没有对学习php没有太大区别,关键是兴趣。
作者: 飘灵儿    时间: 2015-5-6 02:09
本文当是我的笔记啦,遇到的问题随时填充
作者: 因胸联盟    时间: 2015-5-6 05:12
要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
作者: 兰色精灵    时间: 2015-5-6 23:11
最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。
作者: 爱飞    时间: 2015-5-10 07:19
作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。
作者: 乐观    时间: 2015-6-4 02:22
我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2