美文网首页程序员消息中间件
消息系统分类(快速带你认识消息系统)

消息系统分类(快速带你认识消息系统)

作者: 一不了留心长帅了 | 来源:发表于2019-03-25 20:01 被阅读4次

    消息系统分类

    * Peer-to-Peer

        * 一般基于Pull或者Polling接收消息

        * 发送到队列中的消息被一个而且仅仅一个接收者所接收,即使有多个接收者在同一个队列中侦听同一消息

        * 即支持异步“即发即弃”的消息传送方式,也支持同步请求/应答传送方式

    * 发布/订阅(不一定是多播,支持多播)

        * 发布一个主题的消息,可被多个订阅者所接收

        * 发布/订阅即可基于Push消费数据,也可基于Pull或者Polling消费数据

        * 解耦能力比P2P模式更强

    消息系统适用场景:

    1. 解耦:各个系统之间通过消息系统统一接口交换数据

    2. 冗余:部分消息系统具有消息持久化能力,可规避消息处理前丢失的风险

    3. 扩展:消息系统是统一的数据接口,各系统可独立扩展

    4. 峰值处理能力:消息系统可顶住峰值流量,业务系统可根据处理能力从消息系统中获取并处理对应量的请求

    5. 可恢复性:系统中部分组件失效并不会影响整个系统,它恢复后仍然可从消息系统中获取并处理数据

    6. 异步通信:在不需要立即处理请求的场景下,可以将请求放入消息系统,合适的时候再处理

    * * *

    常用消息系统对比:

    * RabbitMQ:Erlang编写,支持多协议AMQP、XMPP、SMTP、STOMP。支持负载均衡、数据持久化。同时支持Peer-toPeer和发布/订阅模式。

    * Redis:key-value的nosql数据库,同时支持MQ功能,可做轻量级队列服务使用。就入队操作而言,Redis对短消息(<=10kb)的性能比RabbitMQ好,长消息的性能比RabbitMQ差

    * ZeroMQ:一个开发库,n to m 通信方式。Peer to Peer. 使用成本,门槛高。

    * ActiveMQ:JMS实现,Peer to Peer,支持持久化、XA事务。(支持本地事务)

    * Kafka/Jafka: 分布式发布/订阅消息系统,数据持久化,全分布式,同时支持在线和离线处理

    * MetaQ/RocketMQ: 纯java实现,发布/订阅消息系统,支持本地事务和XA分布式事务

    * * *

    Kafka设计目标

    * 高吞吐率

    * 消息持久化

    * 完全分布式

    * 同时满足适应在线处理和离线批处理

    * * *

    相关文章

      网友评论

        本文标题:消息系统分类(快速带你认识消息系统)

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