push 和 pull 的优缺点

push

优点

  1. 生产者主动推送给消费者,及时性很高

缺点

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

  2. 生产者需要维护和每个消费者之间的会话。

优化方案

不采用 http 长连接的方法保持会话,采用 socket 监听。

适用场景

对于数据实时性要求高的场景

pull

优点

  1. 消费者可以依据自己的消费能力进行消费

  2. 生产者不需要维护和消费者之间的会话。

缺点

  1. 拉取消息的间隔不太好设置。间隔太短,对服务器请求压力过大。间隔时间过长,那么必然会造成一部分数据的延迟。
  2. 实时性相对较低。

优化方案

长轮询:消费者如果尝试拉取失败,不是直接 return,而是保持连接 wait,服务端如果有新的消息到来,返回最新消息。

适用场景

对于生产者生产消息数据比较大时,而消费端处理比较复杂,消费能力相对较低

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值