java总结 -- 8.kafka和rabbitmq可靠性保证及比对

一、.rabbitmq

图片源自网络

java总结 -- 8.kafka和rabbitmq可靠性保证及比对_第1张图片

java总结 -- 8.kafka和rabbitmq可靠性保证及比对_第2张图片

 生产者:confirm机制

exchange,queue,message:持久化

消费者:ack机制,推荐手动确认、幂等消费

二、kafka

生产者:ack机制 0 1 -1(all) ,isr集合(In-Sync Replicas),根据设置的副本落后leader副本的消息的时间间隔或者消息数量(0.9.0.0之后移除)两个维度,来动态调整isr集合中的数据。

broker:日志分区partition,副本数最少3个,写入最小副本数大于1.

图片源自网络

java总结 -- 8.kafka和rabbitmq可靠性保证及比对_第3张图片

消费者:commit提交位移,推荐手动提交,幂等消费

三、二者区别

架构模型方面:

1.rabbitmq是amqp协议的实现,erlang语言开发,支持分布式,有broker,exchange,binding,queue等组成,rabbitmq以broker为中心,有消息确认机制。

2.kafka遵从一般的mq结构,有生产者,broker,消费者,以消费者为中心,无消息确认机制。

吞吐量方面:

1.kafka具有高的吞吐量,内部采用消息的批量处理,数据的存储和获取是本地磁盘顺序批量操作,具有O(1)的时间复杂度,消息处理的效率高,秒杀操作、日志同步;

2.rabbitmq支持对消息的事物,订单+库存操作,注册+短信操作,可靠传递,不支持批量操作;基于存储的可靠性要求可以采用磁盘和内存

可用性方面:

1.kafka broker支持主备

2.rabbitmq集群,镜像模式

负载均衡方面:

1.kafka采用zookeeper对集群中的broker和consumer进行管理,可以注册topic到zookeeper上,通过zookpeer的协调机制,实现语义指定分片。

2.rabbitmq需要额外的loadbanlancer进行。

你可能感兴趣的:(java,rabbitmq,kafka)