关于“rabbitmq_ack_php”的问题,小编就整理了【1】个相关介绍“rabbitmq_ack_php”的解答:
mq面试必背知识点?解耦:我们看到,服务A强依赖服务B和C,当服务B或者C挂掉后,会直接导致服务A的不可用,这显然不是我们所期望的。比如服务的最后一步是记录日志,但是该服务挂了,虽然日志服务和主流服务没有必然的业务联系,但是因为代码的耦合性过高,直接导致整个服务响应失败。
异步:假如服务A本身执行只需要10ms,服务B需要5ms,服务C(日志服务)需要1s。同样的,一个和业务本身无关的服务过长的响应时间导致了整体服务的响应超时。
削峰:假如由于服务C只是记录日志的,服务器配置较低,1s只能处理2000条数据,但是高峰时段,每秒的请求高达10万笔,过高的请求会导致服务器崩溃。
主要有3点:解耦、异步、削峰(限流)。
其实就是在服务与服务之间增加了一个中间件,可以实现上面的三种用途。

解耦:我们看到,服务A强依赖服务B和C,当服务B或者C挂掉后,会直接导致服务A的不可用,这显然不是我们所期望的。比如服务的最后一步是记录日志,但是该服务挂了,虽然日志服务和主流服务没有必然的业务联系,但是因为代码的耦合性过高,直接导致整个服务响应失败。
异步:假如服务A本身执行只需要10ms,服务B需要5ms,服务C(日志服务)需要1s。同样的,一个和业务本身无关的服务过长的响应时间导致了整体服务的响应超时。
削峰:假如由于服务C只是记录日志的,服务器配置较低,1s只能处理2000条数据,但是高峰时段,每秒的请求高达10万笔,过高的请求会导致服务器崩溃。
可以看到,其实上面所讲的三种情况,都很类似,连起来可以这么理解。高峰时段导致服务C运行越来越慢,产生了“异步”所说的问题,如果长时间没解决,可能会导致“解耦”所说的情况,即服务挂掉。
在增加了MQ以后,我们可以在服务A执行完核心业务后,将后续处理的业务数据打入消息队列中,然后就可以返回成功。然后日志服务从消息队列中取到对应的消息进行处理即可。这样就实现了“解耦”和“异步”。在高峰时段,所有的数据都会打入消息队列中,而日志服务只需要按照自己的消费水平(2000条/s)取数据就好,保证了服务的平滑稳定。
到此,以上就是小编对于“rabbitmq_ack_php”的问题就介绍到这了,希望介绍关于“rabbitmq_ack_php”的【1】点解答对大家有用。