PHP 分布式开发.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PHP 分布式开发

PHP 分布式开发 一、伸缩性扩展性问题 ? ?? ???根据不同系统层次,实现横向扩展设计,可简单地通过增加主机数或处理进程数来扩展; ? ?? ???在前端浏览器层面,可以通过动态调用不同资源实现一定程度分流,如JavaScript、Flash(ActionScript)中加载应用服务器列表,并根据均衡策略选择其中一台服务器进行请求; ? ?? ???在域名解析层面,可以考虑动态DNS解析服务,为跨机房跨区域服务系统部署提供IP地址的映射达到分流目的; ? ?? ???在可使用负载均衡器(本着开源精神只谈软件)提供扩展支持,常见的是网络层的lvs、HAProxy(也可以工作在应用层)等开源产品; ? ?? ???而在应用层上也可以使用nginx负载均衡扩展机制和upstream策略访问多个php应用服务; ? ?? ???而在php应用服务层面,由php-fpm来管理进程,我们可以随时根据需要,通过php-fpm配置来增减php进程数实现伸缩性。 ? ?? ???另外,基于任务层面的调度分发机制下还可以使用消息队列、分布式调度中间件(如:gearman)等实现的消息缓冲,由work端运行的php程序主动pull消息做处理, ? ?? ???通过增减work数量来实现任务的处理能力。 二、高性能问题 ? ?? ???缓存思路:WEB系统中高性能的一个重要原则是将资源推送到离用户最近的地方,这就是缓存原则, ? ?? ???主要的缓存方式有如下几个层次:浏览器端的资源和数据缓存、CDN缓存、服务端反向代理、应用层内容及数据缓存、存储服务内部缓存、系统及IO缓存、硬件缓存, ? ?? ???充分利用好每一层缓存机制,可以大幅降低服务器并发读请求流量,极高地提升了请求性能以及响应能力。 ? ?? ???批处理:PHP中可以运用共享内存,例如大量插入数据库的操作,我们可以先将SQL语句存于共享内存中(可持久), ? ?? ???等若干时间或一定数据量后整合一次性写入数据库,以此来提升处理性能。 ? ?? ???高并发:高并发几乎是所有大型系统的问题起因,特别是并发写请求,很多写请求都会从用户端起走完系统的每个环节直到磁盘。而写请求的过程通常还会伴随每个系统环节的一致性、事务、锁等问题,这意味着有些时候的写请求无法并行完成,并在同一时间只能处理一个相同类型写请求,现实中例子如抢购火车票时的余量、线上秒杀的商品库存,这种情况下一定都会在读写两方面的请求上有着很高的数据一致性要求,在实现业务上,由于PHP没有语言级的共享内存支持,所以我们可以使用类似Redis(集群)这样的高性能NoSQL做数据境像,将数据更新的过程大大简化,以直接读写Redis方式,并异步更新数据到数据库,以支持实时的高并发读写。 ? ?? ???另外写请求过后通常还会伴随着每个缓存环节的失效更新等额外负担问题,而且写操作对于整个系统的可用性要求也是非常高的,所以写请求的成本很昂贵。 ? ?? ???响应性能和连接数: ? ?? ???响应能力和用户体验息息相关,WEB应用在一定条件下连接数和响应能力上却是存在冲突的, ? ?? ???如:为了提高前端整体响应,可以考虑facebook等使用的BigPipe这样的技术; ? ?? ???常见的可以考虑异步加载页面、拆分资源等,如把一张大的图片切分成若干小图片(小图片多少合适也是有讲究的,通常是一个页的整数倍,根据不同环境假设4.5K的图片,那么在网络传输以及磁盘IO性能上可能就和4K完全不一样了),由于是分发且并行请求,理论情况下显示多个小图片要比一张大图片来得快,但是对于服务端而言,并发请求数也增加了, 对于一个繁忙的服务器,处理瞬间大量网络连接请求的成本有时会很高,容易造成WEB Server响应缓慢,甚至超时,反而降低请求响应。 ? ?? ???所以很多时候要根据业务类型权衡响应能力和连接数,对响应有高要求的就需要拆分资源,而对服务端处理并发连接要优化的,就需要整合资源(将JS、CSS等多个文件合成一个)。 ? ?? ???一些浏览器对于单个域名请求设置了最大连接数,使用多域名可以增加并发请求数; ? ?? ???配置keepalive timeout,根据连续请求数情况,以及用户持续提交请求的间隔,设置合理数值,设置不当的长连接反而会额外增加服务器负载,影响性能; ? ?? ???将静态资源分离到不同域名,避免动态请求上的cookie加到静态资源上; ? ?? ???数据压缩:数据压缩更像一个时间换空间的作法,通过消耗cpu运算性能降低数据发送流量,额外的好处是还能减少系统数据在内存中拷贝的字节数,对于cpu不是瓶颈的场合建议使用。 ? ?? ???异步:异步处理是提高耗时服务处理的一个重要思路,

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档