消息队列RocketMq与kafka
rocketMqNameServer负责存储多个Broker的topic queue路由信息client请求NameServer获取全局分配关系一般会有多个NameServerBroker同一个Broker的所有消息在同一个文件不同queue的消息维护其偏移量。每个Broker节点需要有对应的从机Broker, 创建topic时broker直接自行分配。路由信息同步给nameserverClient:生产者/消费者 先请求NameServer获取全局分配信息自行决定请求哪个Broker。与Kafka不同Kafka是请求任意Broker就能获取全局分配关系****kafka**RocketMq与Kafka区别备份机制RocketMq每个Broker节点需要有对应的从机Broker。与kafka不同Kafka是Broker互为主备Broker消息存储机制RocketMq的Broker所有消息在同一个文件queue只维护偏移量。Kafka的每个Partition各自存储自己的消息数据管理者节点RocketMq的管理者NameServer分配后Client都需要请求NameServer获取路由。Kafka的Controller分配好后会同步给所有BrokerClient请求任意Broker即可拿到路由死信队列RocketMq有死信队列kafka没有死信队列适用场景Kafka适合数据流海量持续性写入。RocketMq适合处理业务消息提供了半消息事务消息局部有序全局有序消费有序消息过滤等功能以及死信队列延时消息等。kafka相比比较原生哪个更快kafka每个partition都是顺序写顺序读。rocketMq是每个Broker所有queue同一文件顺序写但是不同queue会大量随机IO读取推拉消息kafka只能消费者pull主动拉取可以自行批量拉取rocketMq默认为push推送pull是非阻塞没有消息会返回空。push是阻塞直到有消息才会返回数据长轮询实现push。延迟消息rocketMq会把延迟消息放入延迟队列使用时间轮算法到时间后再放入业务自己的消息队列生产端ack机制acks0 没有ack机制。acks1 主partition收到写入缓存即返回ack。acksall 所有副本也都写入缓存才返回ack。安全性kafka 存储消息broker只支持异步刷盘异步刷盘频率再高也有可能丢数据。rocketMq可以每次写消息强制刷盘,flushDiskType可以改同步/异步刷盘。强刷之后才返回ack
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2432484.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!