目录
Kafka的核心组件
Kafka的分区有序
Kafka的多副本机制
Kafka的安装部署
Kafka的基本操作
Apache Kafka 是一个高吞吐量的分布式流数据平台,通常用于构建实时数据流处理应用程序。
Kafka的核心组件
-
主题(Topic):主题是 Kafka 中消息的类别或分类。生产者将消息发布到主题,而消费者订阅主题以接收消息。主题可以看作是一个消息通道,多个生产者可以将消息发布到同一个主题,而多个消费者可以从同一个主题订阅消息。
-
生产者(Producer):生产者是负责将消息发布到 Kafka 主题的组件。它们可以将消息批量发送到主题,允许实时或批处理应用程序将数据写入 Kafka 集群。
-
消费者(Consumer):消费者是订阅 Kafka 主题并接收消息的组件。它们可以订阅一个或多个主题,然后从这些主题接收消息,并将消息处理为应用程序的输出。消费者可以以不同的方式处理消息,例如实时流处理或离线批处理。
-
代理节点(Broker):代理节点是 Kafka 集群中的服务器节点,负责存储消息并处理生产者和消费者之间的消息传递。Kafka 集群由多个代理节点组成,每个节点都包含完整的主题数据副本。代理节点协调主题的分区分布,负责领导者选举,以及处理消息的存储和传递。
-
分区(Partition):主题可以被分为多个分区,每个分区是消息的逻辑容器。分区可以水平扩展和分布到不同的代理节点上。分区使得 Kafka 可以支持大规模数据,同时提供了并行性和容错性。
-
ZooKeeper:Kafka 依赖于 ZooKeeper 作为协调服务,用于管理代理节点的状态、领导者选举和集群的元数据。
Kafka的分区有序
Kafka中的消息以主题为单位进行归类,生产者将消息发送到特定的主题(发送到Kafka集群中的每一条消息都要指定一个主题),而消费者负责订阅主题并进行消费。
主题可以分为很多个区,一个分区只属于单个主题。同一主题下的不同分区包含的信息是不同的,把分区类比为可追加的日志文件,消息在追加时会分配一个特定的偏移量(offset)。offset是消息在分区中的唯一标识,Kafka通过它保证消息在分区内的顺序性,但offset并不跨区,所以kafaka是分区有序的,不是主题有序。
Kafka的多副本机制
Kafka为分区引入了多副本机制,目的是通过副本的数量增加容灾能力。同一分区不同副本相同信息:副本之间一主多从,Leader副本负责读写,Follower副本只负责与Leader消息同步。Leader故障的情况下会重新选举:副本处在不同的broker中,这样也实现了故障自动转移。当某个broker失效时仍能保证服务可用。
以下是 Kafka 多副本机制的主要特点和工作原理:
-
数据冗余:每个分区可以配置多个副本,通常是 2 或更多。这些副本包含相同的消息数据,以提供冗余备份。如果一个代理节点出现故障,数据仍然可以从其他副本中获得。
-
领导者和跟随者:对于每个分区,其中一个副本被选为领导者(leader),其余的副本被称为跟随者(follower)。领导者负责处理生产者和消费者的请求,而跟随者只负责复制领导者的数据。这种模型提供了高可用性和数据一致性。
-
数据同步:领导者定期将消息发送给跟随者,以确保它们的数据保持同步。这意味着即使领导者节点出现故障,数据也不会丢失,因为跟随者拥有相同的数据。
-
故障恢复:如果领导者节点出现故障,Kafka 会自动从跟随者中选举出新的领导者。这确保了数据的可用性和系统的可靠性。
-
读取负载均衡:客户端可以从任何副本读取数据,不仅仅是从领导者。这允许 Kafka 在多个节点上分布读取请求,以提高读取性能。
-
数据保留策略:Kafka 允许配置数据的保存时间和大小限制,一旦数据达到保留策略的限制,它将被删除。
Kafka的安装部署
1.下载kafka https://kafka.apache.org/downloads
2.安装
把下载包进行解压就可以了
tar -zxvf kafka_2.12-3.6.0.tgz
3.配置zookeeper
kafka依赖Zookeeper做master选举和集群控制,先启动kafka内置的Zookeeper服务
zookeeper-server-start.sh zookeeper-server-stop.sh
4.通过config配置启动Zookeeper服务
sh zookeeper-server-start.sh -daemon ../config/zookeeper.properties
5.启动和停止Kafka
-
修改server.properties, 增加zookeeper的配置
zookeeper.connect=localhost:2181
-
启动Kafka
sh kafka-server-start.sh -damoen config/server.properties
-
停止Kafka
sh kafka-server-stop.sh -daemon config/server.properties
Kafka的基本操作
1.创建topic
sh kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 -- partitions 1 --topic test
2.查看topic
sh kafka-topics.sh --list --zookeeper localhost:2181
3.查看topic属性
sh kafka-topics.sh --describe --zookeeper localhost:2181 --topic first_topic
4.消费消息(192.168.13.106是Zookeeper节点)
sh kafka-console-consumer.sh --bootstrap-server 192.168.13.106:9092 --topic test --from-beginning
5.发送消息(192.168.244.128是Zookeeper节点)
sh kafka-console-producer.sh --broker-list 192.168.244.128:9092 --topic first_topic