美文网首页
Rocket核心原理理解系列【一】之长轮询--20190512

Rocket核心原理理解系列【一】之长轮询--20190512

作者: longxingxiu | 来源:发表于2019-05-13 00:01 被阅读0次

    Rocket核心原理理解系列【一】之长轮询

    1、推模型

    概念

    Push推送方式(即Server端推送消息给client):当Server收到消息发送者发送过来的消息后,Server端主动把消息推送给client

    优点

    1、消息实时性高,延迟小(因为收到消息立刻推给消费者)【明显优点】

    2、消费者处理简单(只需要收消息,不需要处理复杂的消息处理逻辑)

    缺点

    1、增加了Server的工作负担,对Server的性能造成影响;【影响较小】

    2、另外Client如果不能够及时处理Server推送的消息,也是很大的问题。【影响较大】


    2、 拉模型

    概念

    Client循环的从Server拉取消息,由client控制着主动权。

    优点

    1、Client掌控主动权,比如根据消费能力拉取指定数量消息

    缺点

    1、拉取消息的时间间隔不好设定,间隔太短循环空拉取造成资源浪费,间隔时间太长,就会增加消息消费的延迟,影响业务使用。【实时性稍差】

    2、需要消费端Client拉取消息时维护offset,代码比较麻烦。【为了更灵活处理,需要消费者客户端个性化处理】


    3、 推拉结合-长轮询

    概念

    兼具了上述列举Push和Pull的优点(Push的实时性和Pull的可控制性),需要Rocket的Server端和RocketMQ的Client互相配合才能够实现。

    实现原理

    Client发送消息请求,Server端接收请求,如果发现Server队列里没有新消息,Server端不立即返回,而是持有这个请求一段时间(通过设置超时时间来实现),在这段时间内轮询Server队列内是否有新的消息:

    1. 如果有新消息,就利用现有的连接返回消息给消费者;
    2. 如果这段时间内没有新消息进入队列,则返回空。

    优点-兼具推拉模型优势一

    1、消费消息的主动权既保留在Client端,也不会出现Server积压大量消息后,短时间内推送给Client大量消息使client因为性能问题出现消费不及时的情况。

    缺点

    1、 MQ Server端在持有MQ消费者客户端拉取消息请求的这段时间,占用了MQ Server端系统资源,因此长轮询适合客户端连接数可控的业务场景中(因为如果消费者客户端众多,MQ Server端需要为每个客户端消耗线程等资源)。


    4、长轮询源码解读请查询文章


    参考文章

    • 《RocketMQ实战与原理解析》

    相关文章

      网友评论

          本文标题:Rocket核心原理理解系列【一】之长轮询--20190512

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