美文网首页
(4)RabbitMQ和Kafka显著差异(2)

(4)RabbitMQ和Kafka显著差异(2)

作者: hedgehog1112 | 来源:发表于2020-11-16 23:01 被阅读0次

1、RabbitMQ是消息代理,难保流式中消息顺序。 Kafka是分布式流式系统。

2、RabbitMQ内置重试逻辑死信交换器,Kafka把这些交给用户处理

1、消息顺序

(1)RabbitMQ:1)单个消费者,有序。2)多个消费者从同队列难保顺序:比如读后可能放回(或重传)到队列中(如失败),另一个消费者可继续处理它。3)解决:可限制消费者并发数=1,保证有序性

(2)Kafka:用循环分区器(round-robin partitioner)消息放到相应分区上。生产者给每个消息设置分区键创建数据逻辑流(如来自同一设备,或同一租户消息)

来自相同流消息放到相同分区中,消费者组就可顺序处理

2、消息路由(Rabbit好)

RabbitMQ:主题交换器通过routing_key的特定头来路由消息。或头部(headers)交换器基于任意消息头来路由消息。

Kafka:不允许消费者过滤主题中消息。接受分区所有消息

3、消息时序(Rabbit好)

RabbitMQ提供多种能力,Kafka没有:

    1)消息存活时间(TTL)

    发布者设置TTL  或  根据队列策略来设置。

    预期时间没处理,自动从队列移除(移到死信交换器上,之后消息都这样处理)

    2)延迟/预定消息

    通过插件延迟/预定消息,当插件在消息交换器启用时,生产者发消息到RabbitMQ,生产者延迟RabbitMQ路由,来延迟消息时间

4、消息留存

RabbitMQ:消费后,删除

Kafka:1)只要没超时都保留。把消息当日志看待,不关心消费状态

             2)不限次数消费,操作分区偏移“及时”往返处理

             3)Kafka存储消息不影响性能(只节点足够)

5、容错处理(Rabbit好)

“重试,直到成功”  表面看没错,妥善处理:

    1)瞬时故障—如网络连接,CPU负载,或者服务崩溃。重试ok

    2)持久故障——bug或无效消息格式。重试不行

RabbitMQ提供交付重试死信交换器(DLX)处理,开箱即用,重试计数及发到“人为干预”队列。

不阻塞,不影响整个系统:消费者处理或重试时,其他消费者可并发处理之后其他消息。

ps:提供了额外的可能模式视角:https://engineering.nanit.com/rabbitmq-retries-the-full-story-ca4cc6c5b493

总结:如何选择?

RabbitMQ:1)灵活路由规则;更简单    2)消息时序控制(控制消息过期或者消息延迟);3)容错高,消费者可能不成功场景。

选Kafka:1)严格消息顺序2)延长消息留存时间,包括过去消息重放可能;    3)提供高伸缩能力

https://zhuanlan.zhihu.com/p/161224418

相关文章

  • (4)RabbitMQ和Kafka显著差异(2)

    1、RabbitMQ是消息代理,难保流式中消息顺序。Kafka是分布式流式系统。 2、RabbitMQ内置重试逻辑...

  • 后端技能

    1、JAVA2、Spring3、mysql4、redis5、消息队列,rabbitmq,kafka6、nginx7...

  • 消息中间件之JMS

    常见消息中间件比较 kafka和RabbitMQ的比较 RabbitMq比kafka成熟,在可用性上,稳定性上,可...

  • RabbitMQ和Kafka思维图总结

    消息队列【RabbitMQ和Kafka】基础概念用思维图整理:

  • Kafka

    Kafka基本概念 Kafka的应用场景 1.Messaging类似传统消息中间件(RabbitMQ)2.Webs...

  • MQ深入讲解

    问题导读1.为什么使用消息队列?2.消息队列有什么优点和缺点?3.Kafka、ActiveMQ、RabbitMQ、...

  • kafka常见面试题目详解

    一:kafka 和 rabbitmq区别 1、吞吐量: kafka吞吐量更高:1)Zero Copy机制,内核co...

  • 90 kafka

    1,kafka在大数据的应用场景;2,kafka为什么性能非常高2,kafka常见名词和概念4,Partition...

  • 消息队列

    消息队列Kafka,RocketMQ,ActiveMQ,RabbitMQ,ZeroMQ

  • RNA-Seq分析中(一)——用R画带基因名标签的火山图

    火山图(volcano plot)常用于显著差异基因表达的展示,包含显著和差异两个重要信息。显著性指P值小于0.0...

网友评论

      本文标题:(4)RabbitMQ和Kafka显著差异(2)

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