百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>网页制作> 用PHP做负载平衡指南
分享文章到:

用PHP做负载平衡指南

发布时间:09/01 来源:未知 浏览: 关键词:
过去当运转一个大的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做负载平衡指南的具体内容,更多请关注百分百源码网其它相关文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有150人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板