Re: [请益] message queue问题

楼主: GALINE (天真可爱CQD)   2014-09-17 00:03:41
※ 引述《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 机器->网页反应速度变快,这是错的,这是两件事情

Links booklink

Contact Us: admin [ a t ] ucptt.com