技术选型-消息队列kafka和rabbitmq的比较

消息队列的目的:解决消息的分布式消费,完成项目与服务的解耦。采取异步模式完成消息队列提供者和消费者的通信,提高了系统的响应能力和信息吞吐量。提高系统的可伸缩性

rabbitmq适合对可靠性要求比较高的消息传递上,适合企业级的消息发送订阅。

kafka用于处理活跃的流式数据,适合高吞吐量。常用在日志采集,数据采集上。

Kafka针对rabbitmq的改进:把一个队列的单一master变成多个master,把一个队列的流量均匀分散在多台机器上。

1、架构

rabbitmq

  • Producer:消息生产者
  • Consumer:消息消费者
  • Exchange:消息交换机,指定消息按什么规则传递到具体哪个队列中
    • 点对点转发:根据routingkey采取点对点的信息转发,每个队列根据routingkey获取不同类的数据。
    • 广播:不论RoutingKey是什么,这条消息都会被投递到所有与此Exchange绑定的队列中。
    • 主题交换器(topic exchange):根据Binding指定的RoutingKey,Exchange对key进行模式匹配(正则表达式)后投递到相应的队列。消息可能被投入一个或多个队列。
  • Queue:消息队列,消息的载体
  • Routingkey:路由关键字,Exchange根据Routingkey来投递消息给队列
  • Binding:绑定。作用就是将Exchange和Queue按照某种路由规则绑定起来。
  • Channel:消息通道,也称信道。在客户端的每个连接里可以建立多个Channel,每个Channel代表一个会话任务
                          消费                            生产

        集群中有两个节点,每个节点上有一个broker,每个broker负责本机上队列的维护,并且borker之间可以互相通信。集群中有两个队列A和B,每个队列都分为master queue和mirror queue。在master queue所在节点挂掉之后,系统把mirror queue提升为master queue,负责处理客户端队列操作请求。注意,mirror queue只做镜像,设计目的不是为了承担客户端读写压力

         RabbitMQ集群中的任何一个节点都拥有集群上所有队列的元信息。consumer连在master queue所在节点或mirror queue所在节点没有影响,因为所有的读写操作都必须都操作在master queue上,然后由master节点同步操作到mirror queue所在的节点。因此即使consumer连接到mirror queue所在节点,该consumer的操作也会被路由到master queue所在的节点上。

        生产者同理,连接到mirror queue所在节点的生产者的操作也会被路由到master queue。

kafka

和rmq相比,kafka相当于把一个队列的单一master queue变成多个master,分布在不同节点上,不同master间数据没有交集,即 一条消息要么发送到这个master queue,要么发送到另外一个master queue。 这里面的每个master queue 在Kafka中叫

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值