timzaak / blog

8 stars 1 forks source link

Kafka 注意事项 #38

Closed timzaak closed 5 years ago

timzaak commented 5 years ago

最近买了一本《Kafka技术内幕》,跳着看了看,发现有许多的细节需要考量,如果只是简单用的话,无法保证数据不丢失不重复。

KafkaProducer

生产者里除了外放的同步异步发送消息接口,底层还有个待发送消息队列(RecordAccumulator)和Kafka Server 分区信息,另外还包含发送失败重试机制。

KafkaConsumer

消费者上面挂载着一个协调者,主要是监控消费者消费信息和分区分配。而且有两个偏移量需要注意,一个是拉取消息的偏移量,一个是消费消息的偏移量。

KafkaServer

有分区、主从一说,如果从服务过长时间跟不上主服务会被驱逐。

Sum

以上如果处理不好,都会造成消息重复消费或者丢失的情况。所以如果不是对 Kafka 各项配置特别特熟悉的话,还是认为它数据会丢失,消息会重复消费为好。

timzaak commented 5 years ago

Kafka 还有一个问题是 Topic 不能巨量。也就是说,如果订阅类型比较多的时候,要切换其它的框架。