用PHP做负载均衡指南-php教程

资源魔 30 0
过来当运转一个年夜的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做负载平衡指南的具体内容,更多请存眷资源魔其它相干文章!

标签: php php开发教程 php开发资料 php开发自学

抱歉,评论功能暂时关闭!