Kafka和RocketMQ的一点对比总结

1. 介绍

Kafka和RcoketMQ是市面上比较主流的分布式消息队列。本文对他们做一番对比。如果对MQ还不是很熟悉的,可以先看看他们的文档,再来看本文。

2. MQ系统的关键问题——如何处理消息有序、消息重复

2.1 消息有序

Kafka和RocketMQ都不支持严格的消息有序。他们都仅仅保证在一个topic分区(队列)中是有序的。当然如果只使用一个分区或者队列来提供消费,性能肯定是比较差的了。

十分钟入门RocketMQ里面说RocketMQ支持严格消息有序。我觉得可能是指的生产者把消息发往一个队列中。 如果是这样的话,不能算是MQ的严格有序,因为牺牲了太多性能。......

谈谈kafka的exactly once

1. 介绍

今天在复习kafka的一些知识。然后又对消息分发的语义进行了一番思考,还与小伙伴好好讨论了一番。这里小做总结。

2. mq如何做exactly once

要满足exactly once需要同时满足:

发送消息阶段,不允许发送重复的消息。

消费消息阶段,不允许消费重复的消息。

这个是文章十分钟入门RocketMQ里面写到的。

2.1 发送者如何保证不发送重复消息

在mq系统中,不采用重发策略(前提网络是完美的。。否则会丢消息,不符合整个系统是exactly once)

业务本身确保不发送重复的消息

2.2 消费者如何保证不重复消费

......

kafka压力测试

1. 介绍

最近kafka集群要换机房了。为了确保新环境正常,我们来做一些压力测试。这次压力测试重点会关注一些异常情况下,kafka收发消息的状况。

2. 基本信息

3台broker,使用kafka0.10.1版本,每台broker使用6T硬盘,内存100G。broker配置按照官方文档推荐的生产配置来配置。

3. broker挂掉的情况

3.1 整个broker集群挂掉

这个同事做过测试,所以这里直接放结论了:

即使设置了acks=all,但是如果整个集群都连接不上了,也是不能避免消息丢失的(重发次数到了设定的值,或者发送请求超时了都会导致生产者丢弃该条消息,发送......