借Gearman简要说明系统可用性问题

上篇提到PHP通过Gearman扩展调用worker时造成的PHP进程死锁问题(同步模式),今天简单总结下与该问题以及Gearman原理相关的一些东西。

正好最近在学车,就用生活中驾考的实际例子来说明吧。


考试的基本流程是:学员先申请,看当前是否有考试名额,报名成功则到驾考中心参加考试,上车前先在驾考中心的候考厅排队,当轮到自己的时候上车进行考试。

与Gearman的原理相对应的如下图所示:

借Gearman简要说明系统可用性问题_第1张图片

假设有6个考试名额(php-cgi进程)、3辆考试车辆(worker进程);

有2个学员前来报名参加考试(向PHP服务器发起了两个HTTP请求);

此时为理想的正常情况,资源充足,啥都别说了,直接上车吧,妥妥的~


————————————————— 休息一哈 —————————————————————


话说那俩人正在车上不慌不忙倒桩呢,突然又有3个学员以迅雷不及掩耳到铃儿响叮当之势前来报名参加考试:

借Gearman简要说明系统可用性问题_第2张图片

厄……不错,名额还有,走着!

ABC三人来到驾考中心一看,还有一个车空闲,甲当即冲到了前面;

木办法啊,BC二人只好乖乖在侯考大厅排队等着

此时对于请求者来说相当于挂起状态,系统开始出现延迟等现象,需要及时考虑解决方案:

如果worker的逻辑耗时太离谱,那就得赶紧查找原因,减少耗时;

如果worker耗时正常,那说明处理能力不足,赶紧增加worker吧。


————————————————— 休息一哈 —————————————————————


都说中国人干嘛都爱扎堆,这不,见大家都去考试了,DEF也坐不住了:

借Gearman简要说明系统可用性问题_第3张图片

可是名额就还剩1个,被D抢先了一步,D也到侯考大厅排队等上车了;

喏,EF只能一人吃了个502 Bad Gateway的闭门羹(注:图中504为笔误,下同);

此时如果还不解决worker瓶颈的问题,那么一段时间后请求会将前端client占用完,这时系统就不仅仅是访问缓慢了,一些用户已经开始出现502错误的页面。


————————————————— 另外的情况 —————————————————————


一般来说都是client数量多于worker,但如果worker富裕client紧张呢?

借Gearman简要说明系统可用性问题_第4张图片

很明显,瓶颈直接卡在源头,worker再多也木有用。

果断增加client吧~


你可能感兴趣的:(PHP,生活,服务器,扩展)