雨夜的博客 / 技术文章 / 四种入门级消息中间件

分享

   

四种入门级消息中间件

2021-09-17  雨夜的博客

四种入门级消息中间件

ActiveMQ(性能一般)

ActiveMQ是Apache出品,最流行的,能力强劲的开源消息总线,并且它一个完全支持JMS规范的消息中间件。 其丰富的API、多种集群构建模式使得他成为业界老牌消息中间件,在中小型企业中应用广泛! MQ衡量指标:服务性能(一般,如果对并发要求不是特别大,可以考虑使用)、数据存储、集群架构 特点:

  • 1、支持多种语言编写客户端

  • 2、对spring的支持,很容易和spring整合

  • 3、支持多种传输协议:TCP,SSL,NIO,UDP等

  • 4、支持AJAX 消息形式:

  • 1、点对点(queue)

  • 2、一对多(topic) file

Kafka(高性能)

Kafka是Linkedln开源的分布式发布-订阅消息系统,目前归属于Apache顶级项目。Kafka主要特点是基于Pull的模式来> 处理消息消费,追求高吞吐量,一开始的目的就是用于日志收集和传输。0.8版本开始支持复制,不支持事务,对消息> 的重复、丢失、错误没有严格要求,适合产生大量数据的互联网服务的数据收集业务。 kafka使用page cache进行文件存储,进而实现高性能读写。关注性能,可靠性关注不高

file

RockerMQ(收费)

RocketMQ是阿里开源的消息中间件,目前也已经孵化为Apache顶级项目,它是纯Java开发,具有高吞吐量、高可用性、适合大规模分布式系统应用的特点。RocketMQ思路起源于Kafka,它对消息的可靠传输及事务性做了优化,目前在阿里集团被广泛应用于交易、充值、流计算、消息推送、日志流式处理、binglog分发等场景

  • 维护是一个痛点,需要专门的团队

  • 特点

  • 可以保证消息顺序性

  • 提供丰富的消息拉取和推送的模式

  • 高效的水平扩展

  • 多种架构模式可供选择:双Master,Msater-Slave,2m2s,多主多从

  • 同步双写,异步复制,存储方式,零拷贝

  • 分布式事务,主从自动切换 file

RabbitMQ

RabbitMQ是使用Erlang语言开发的开源消息队列系统,基于AMQP协议来实现。AMQP的主要特征是面向消息、队 列、路由(包括点对点和发布/订阅)、可靠性、安全。AMQP协议更多用在企业系统内,对数据一致性、稳定性和可> 靠性要求很高的场景,对性能和吞吐量的要求还在其次。

file

RabbitMQ与AMQP协议(Advanced Message Queuing Protocol高级消息队列协议)

RabbitMQ是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据,RabbitMQ是使> > 用Erlang语言来编写的,并且RabbitMQ是基于AMQP协议的。 Erlang语言最初在于交换机领域的架构模式,这样使得RabbitMQ在Broker之间进行数据交互的性能是非常优秀的 Erlang的优点:Erlang有着和原生Socket一样的延迟

  • 可靠性消息投递模式(confirm),返回模式(return)

  • 与SpringAMQP完美的整合、API丰富

  • 集群模式丰富,表达式配置,HA模式,镜像队列模型

  • 保证数据不丢失的前提做到高可靠性、可用性

Erlang语言最初在于交换机领域的架构模式,这样使得RabbitMQ在Broker之间进行数据交互的性能是非常优秀的 Erlang的优点:Erlang有着和原生Socket一样的延迟

AMQP定义:是具有现代特征的二进制协议。是一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协 议的一个开放标准,为面向消息的中间件设计。 file

核心概念

Server:又称Broker,接受客户端的连接,实现AMQP实体服务 Connection:连接,应用程序与Broker的网络连接 Channel:网络信道,几乎所有的操作都在Channel中进行,Channel是进行消息读写的通道。客户端可建立多个Channel,每个Channel代表一个会话任务。 Message:消息,服务器和应用程序之间传送的数据,由Properties和Body组成。Properties可以对消息进行修饰,比如消息的优先级、延迟等高级特性;Body则就是消息体内容。 Virtual host:虚拟地址,用于进行逻辑隔离,最上层的消息路由。一个Virtual Host里面可以有若干个Exchange和Queue,同一个VirtualHost 里面不能有相同名称的Exchange或Queue Exchange:交换机,接收消息,根据路由键转发消息到绑定的队列

Binding:Exchange和Queue之间的虚拟连接,binding中可以包含routing key

Routing key:一个路由规则,虚拟机可用它来确定如何路由一个特定消息

Queue:也称为Message Queue,消息队列,保存消息并将它们转发给消费者

file

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多
    喜欢该文的人也喜欢 更多

    ×
    ×

    ¥.00

    微信或支付宝扫码支付:

    开通即同意《个图VIP服务协议》

    全部>>