关于Kafka

一、kafka简介

     Kafka是一种高吞吐量的分布式发布订阅消息系统,可分区、可复制,它可以处理消费者规模的网站中的所有动作流数据,是Apache下的一个开源项目。

二、相关术语

  • 1.Broker
    Kafka集群包含一个或多个服务器,这种服务器被称为broker
  • 2.Topic
    每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。(物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽 然保存于一个或多个broker上但用户只需指定消息的Topic即可生产或消费数据而不必关心数据存于何处)
  • 3.Partition
    Partition是物理上的概念,每个Topic包含一个或多个Partition.
  • 4.Producer
    负责发布消息到Kafka broker
  • 5.Consumer
    消息消费者,向Kafka broker读取消息的客户端。
  • 6.Consumer Group
    每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name则属于默认的group)。

三、特性

1.通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能;
2.高吞吐量:即使是非常普通的硬件kafka也可以支持每秒数十万的消息;
3.支持通过Kafka服务器和消费机集群来分区消息;
4.支持hadoop并行数据加载。

四、设计目标

1.高吞吐是核心设计之一;
2.数据磁盘持久化:消息不在内存中cache,直接写入到磁盘,充分利用磁盘的顺序读写性能;
3.减少IO操作步骤;
4.支持数据批量发送和拉取;
5.支持数据压缩;
6.Topic划分为多个partition,提高并行处理能力。



### Kafka 架构相关的选择题及练习题 #### 1. 下列关于 Kafka 的描述正确的是? A. Kafka 是一个分布式流处理框架,主要用于实时数据处理。 B. Kafka 使用 ZooKeeper 来存储元数据信息,但新版本逐渐减少了对 ZooKeeper 的依赖[^3]。 C. Kafka 的消息顺序性只能在单个分区内保证,无法跨分区保证。 D. Kafka 消费者通过拉取机制从 Broker 中获取消息。 **正确答案:B, C, D** --- #### 2. 关于 Kafka 的 Producer,下列说法正确的是? A. Producer 可以指定消息发送到特定的分区。 B. Kafka Producer 支持同步和异步两种消息发送模式。 C. Kafka Producer 在发送消息时无需考虑分区的概念。 D. Kafka Producer 可以通过配置实现消息的可靠传输。 **正确答案:A, B, D** --- #### 3. 下列哪些是 Kafka 架构中的核心组件? A. Broker B. Topic C. Partition D. ZooKeeper **正确答案:A, B, C, D** --- #### 4. 关于 Kafka 的 Consumer,下列描述正确的是? A. Consumer 可以通过 Group ID 来区分不同的消费者组。 B. 同一 Consumer Group 内的多个 Consumer 可以消费同一个分区的消息。 C. 新版本的 Kafka Consumer 使用了内部的 Group Coordination 协议来管理消费者的订阅状态。 D. Consumer 在消费消息后可以选择手动提交或自动提交偏移量。 **正确答案:A, C, D** --- #### 5. 下列关于 Kafka 的分区策略描述正确的是? A. Kafka 默认使用轮询(Round Robin)策略将消息分布到不同分区。 B. 开发者可以通过自定义分区器来控制消息的分区分配。 C. 分区的数量决定了 Kafka 的并行处理能力。 D. 分区越多,Kafka 的性能一定越好。 **正确答案:A, B, C** --- #### 6. 关于 Kafka 的 Offset 管理,下列说法正确的是? A. 偏移量(Offset)用于标记消费者在某个分区中消费的位置。 B. 在旧版本中,Offset 被存储在 ZooKeeper 中,而在新版本中被存储在 Kafka 的特殊 Topic 中。 C. 如果消费者没有及时提交 Offset,可能会导致重复消费或丢失消息。 D. 自动提交 Offset 的时间间隔可以由开发者配置。 **正确答案:A, B, C, D** --- #### 7. 下列关于 Kafka 的高可用性和容错机制描述正确的是? A. Kafka 通过副本机制(Replication)来保证数据的高可用性。 B. Leader Partition 负责处理读写请求,Follower Partition 只负责数据同步。 C. 如果 Leader Partition 发生故障,Kafka 会从 ISR(In-Sync Replicas)列表中选举新的 Leader。 D. Kafka 的副本机制可以完全避免数据丢失。 **正确答案:A, B, C** --- ### 示例代码:Kafka Producer 示例 以下是一个简单的 Kafka Producer 实现示例,展示如何向 Kafka 集群发送消息: ```java import org.apache.kafka.clients.producer.KafkaProducer; import org.apache.kafka.clients.producer.ProducerRecord; import java.util.Properties; public class KafkaProducerExample { public static void main(String[] args) { // 设置 Kafka Producer 的配置 Properties props = new Properties(); props.put("bootstrap.servers", "localhost:9092"); props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer"); props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); // 创建 Kafka Producer KafkaProducer<String, String> producer = new KafkaProducer<>(props); // 发送消息 producer.send(new ProducerRecord<>("my-topic", "key1", "value1")); producer.send(new ProducerRecord<>("my-topic", "key2", "value2")); // 关闭 Producer producer.close(); } } ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值