美文网首页
消息中间件push和pull模式

消息中间件push和pull模式

作者: 归来依旧少女 | 来源:发表于2019-06-13 10:14 被阅读0次

一、概念

MQ的消费模式分两种:push和pull。

所谓push就是服务端主动推送消息给客户端,而pull则是客户端需要主动到服务端取数据。

二、两种模式的优缺点

2.1 push模式的优缺点

push优点:

服务端主动推送给客户端,及时性很高

push缺点:

1.当客户端消费能力远低于服务端生产能力,那么一旦服务端推送大量消息到客户端时,就会导致客户端消息堆积,处理缓慢,甚至服务崩溃。(那么如何解决这个问题呢?需要mq提供流控制,也就是依据客户端消费能力做流控。比如rabbitmq设置Qos,限制消费数量。)

2.服务端需要维护每次传输状态,以防消息传递失败进行重试。

2.2 pull模式的优缺点

pull模式优点:

1.客户端可以依据自己的消费能力进行消费

2.传输失败时不需要重试,反正数据还在服务端。

pull模式缺点:

1.主动到服务端拉取消息。这个拉取消息的间隔需要设置好,不太好设置。间隔太短,对服务器请求压力过大。间隔时间过长,那么必然会造成一部分数据的延迟。(也有一些解决方案,间隔时间指数级增长,5ms,10ms,20ms,40ms,80ms。。。然后再回到5ms,一定程度上解决,但是如果在41ms时来了数据,那么到80ms就有40ms左右的时间延迟。另外在腾讯的CMQ里有一套长轮询的解决方案,就是取数据时要是没有数据可消费,不是直接返回而是连接等待,一直有数据来了再返回)

三、push和pull模式不同适用场景

对于服务端生产消息数据比较大时,而消费端处理比较复杂,消费能力相对较低时,这种情况就适用pull模式。

对于数据实时性要求高的场景,就比较适用与push模式。

四、不同消息中间件支持的模式

不同消息中间支持模式

另外springboot集成的rabbitmq封装的就是push模式。

相关文章

  • 消息中间件push和pull模式

    一、概念 MQ的消费模式分两种:push和pull。 所谓push就是服务端主动推送消息给客户端,而pull则是客...

  • RocketMQ源码之长轮询实现

    Push or Pull MQ中消息传递的模式有Push和Pull两种。Pull: 消费者主动从Broker拉取P...

  • 中间件-MetaQ

    MetaQ是一款分布式、队列模型的消息中间件。基于发布订阅模式,有Push和Pull两种消费方式,支持严格的消息顺...

  • NSQ学习:流控的实现

    消息中间件的pull与push 消息中间件的实现无非两种套路,一种让客户端pull,典型的比如kafka便是如此,...

  • RabbitMQ

    RabbitMQ消息的消费模式了解吗?你们是如何使用的? RabbitMQ消息的消费模式包含Push模式和Pull...

  • RocketMQ消费者

    官方文档 概要 MQ中Pull和Push的两种消费方式 Push方式:由消息中间件主动地将消息推送给消费者;采用P...

  • kafka和flume的区别与

    (1)kafka和flume都是日志系统。kafka是分布式消息中间件,自带存储,提供push和pull存取数据功...

  • RocketMQ的push模式机制

    RocketMQ的push模式 我们都知道RocketMQ在消费端有push和pull两种模式,pull模式需要我...

  • RocketMQ源码解析(十一)-Broker#消息消费

    终于讲到Broker消息处理流程的最后一步了。讲Consumer的时候说到消费消息分为Pull和Push两种模式,...

  • Push or Pull?

    采用Pull模型还是Push模型是很多中间件都会面临的一个问题。消息中间件、配置管理中心等都会需要考虑Client...

网友评论

      本文标题:消息中间件push和pull模式

      本文链接:https://www.haomeiwen.com/subject/ndugvqtx.html