kafka

2023-08-13  本文已影响0人  shark没有辣椒

Apache Kafka 是一个分布式的流数据平台,最初由LinkedIn公司开发,后成为 Apache 基金会的开源项目。Kafka 主要用于解决高吞吐量、低延迟的实时数据传输和处理问题,特别适用于日志收集、流式处理、事件驱动等场景。

特点

kafka有如下特点:

Partition

在 Kafka 中,分区(Partition)是一种逻辑上的数据划分方式,它将一个主题(Topic)的数据分成多个部分,每个分区都是一个有序、持久化的日志队列。每个分区都可以独立地存储和管理数据,Kafka 使用分区来实现高吞吐量和水平扩展。

分区的特点

副本因子

副本因子(Replication Factor)是指 Kafka 中每个分区的副本数。副本因子是 Kafka 实现高可用性和数据冗余的关键机制之一。通过为每个分区设置多个副本,可以确保分区数据的冗余存储,即使某个 Broker发生故障,也能够从其他拥有该分区副本的 Broker上继续提供服务,保证数据的可用性。
副本因子的设置在创建主题(Topic)时进行,可以根据需要设置不同的副本因子。一般来说,副本因子的设置涉及到可用性、性能、资源开销等方面的权衡。常见的副本因子设置有以下几种情况:

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 2 --partitions 3 --topic mytopic

上述命令会创建一个名为 "mytopic" 的主题,设置分区数为 3,副本因子为 2,表示每个分区都有两个副本。
需要注意的是,分区数的设置一旦确定后,就不能直接修改。如果需要修改分区数,可以考虑创建一个新的主题,并将数据从旧主题迁移到新主题。
分区数的合理设置需要根据实际的业务需求和数据规模来进行调优,合适的分区数能够充分利用 Kafka 集群的资源,提高消息的并行处理能力。

消息保留策略

在kafka中消费者消费消息后,消息仍然可以在 Kafka中存在一段时间,以便满足后续需求,如重新消费或审计等。Kafka 提供了两种常见的消息保留策略:

二次消费

根据kafka的消息保留策略可以看出来,kafka支持重新消费,我们可以通过重置/修改消费者组的偏移量进行重新消费,或者创建新的消费者来重新消费。

消息的有序性

在kafka中,同一个分区内的消息是有序的,但是不同分区的消息之间无法保证顺序,而且消费者组通常不会配置单线程,这就导致topic中的消息不是完全有序消费的。
如果想要实现消息的有序性,可以考虑以下几点:

什么是分区键

Kafka 的分区键是一个用于指定消息被分配到哪个分区的值。分区键是由生产者在发送消息时指定的,它决定了消息被分配到哪个主题的哪个分区中。一些常见的选择分区键的策略:

ack机制

Kafka 使用了一种 ack(Acknowledgment)机制来确保消息的可靠性传递。有以下几种设置:

上一篇下一篇

猜你喜欢

热点阅读