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,但是如果整个集群都连接不上了,也是不能避免消息丢失的(重发次数到了设定的值,或者发送请求超时了都会导致生产者丢弃该条消息,发送......

kafka问题收集

1. 介绍

本文记录一些kafka生产使用的一些问题。

org.apache.kafka.clients.consumer.CommitFailedException: Commit cannot be completed due to group rebalance

原因分析: consumer进行poll的时候耗时太久,导致发送hearbeat间隔太长,coordinator认为consumer死了,就发生了rebalance

解决方案:Kafka CommitFailedException consumer exception

Marking th......

kafka producer性能调优

1. 介绍

原文来自linkedin的一篇PPTproducer-performance-tuning-for-apache-kafka。

2. 本文的一些前提

讨论的kafka版本为0.10.0

没有broker端的再压缩

消息都有8字节的时间戳介绍信息

3. 优化目标

给定一个要发送的数据集,在满足持久性、有序性的前提下优化以下两点:

吞吐量

延迟

优化专注于优化平均性能,这样对所有的producer都有效。

4. kafka producer原理回顾

4.1 生产者的关键配置

batch.size: 基于大小的batching策略......