作者GALINE (天真可爱CQD)
看板PHP
标题Re: [请益] message queue问题
时间Wed Sep 17 00:03:41 2014
※ 引述《tas72732002 (葱头)》之铭言:
: 最近看到有人使用讯息伫列(message queue)的方式来提升效能, 如gearman
: 而我目前的做法是利用php exec()透过linux背景执行,降低response的时间,
: 我想请问一下两者的差异是差在gearman可以建立分散式系统环境,
: queue伺服器可以水平扩充, 提升更好的效能,
: 而exec则是在本机, 还是会影响本机伺服器效能,
: 是差在这两个地方吗? 目的都是降低php response时间,
: 不知道这样见解有错误吗?
exec() 不会在「背景」执行,php 会等 exec() 里面的指令跑完才继续下去
message queue 会增加网页反应速度的原因不是因为可以扩充很多机器
而是因为我现在不去做那些工作,晚点再做,不论是丢给别人做还是自己做
例如使用者在社群网站上按下备份按钮,网页可以不用等到整份备份做完才显示结果
而是先把「备份」这个工作丢进 queue 里面,然後画面立刻显示「请先稍候」
等到备份工作跑个二十分钟完成之後再寄信给 user
不过相对的,扔进 message queue 里面的东西还是需要被执行
如果执行工作的 worker 机器很慢,那麽备份工作可能要等一小时才能完成
如果工作进来的速度太快,例如五秒就有一个人按备份,那工作会永远做不完
所以你会考虑是否需要增加做备份工作的机器,message queue 能简化这件事情的处理
故工作丢进 message->网页反应速度变快,这是对的
而增加 worker 机器->执行工作的效能增加,这也是对的
但增加 worker 机器->网页反应速度变快,这是错的,这是两件事情
--
将各种精密的仪器,装置在他的体内,然後再注射特殊的动物激素,跟着经过电光的感应
这个人便产生了一股火不能融、水不能淹、电不能击、雷不能毁的巨大力量
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.27.92.61
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/PHP/M.1410883426.A.002.html
※ 编辑: GALINE (114.27.92.61), 09/17/2014 00:04:24