Kafka (一) 核心概念

1. 关键名词

1.1 Producer

1.消息的生产者,向Kafka Broker发送消息的客户端

1.2. Consumer

1.消息的消费者,向Kafka Broker接受消息的客户端

2.Consumer Group: 单个或多个consumer可以组成一个consumer group;这是Kafka用来实现消息的广播(发送给所有的consumer)的单播(发给任意一个consumer)。一个topic可以有多个Consumer Group.

1.3. Topic

topic
1.数据的逻辑分类。可以理解为数据库中“表”的概念。

partition
1.topic中数据的具体管理单元;一个topic可以划分为多个partition,分布到多个broker上管理。
2.每个partition由一个kafka broker服务器管理
3.partition中的每条消息被分配一个递增的ID(offset)
4.每个partition都是一个有序的队列,kafka只能保证一个partition中的消息的顺序,不能保证一个topic(多个partition间)的整体顺序
5.每个partition可以有多个副本

broker
1.一台kafka服务器就是一个broker。一个kafka集群由多个broker组成
2.一个broker服务器可以容纳多个topic的多个partition
3.分区对于kafka集群的好处是:实现topic数据的负载均衡。分区对于消费者来说,可以提高并发度,提高效率。

offset
1.消息在底层存储中的索引位置,kafka的底层存储文件就是以文件中第一条消息的offset来命名的,通过offset可以快速定位到消息的具体存储位置。

1.4. Leader

1.partition replica中的一种角色。procucer和consumer只跟leader交互。(负责读写) 

1.5. Replica

1.partition中的副本。保证partition的高可用。replica的副本数量不能大于kafka broker的节点数量,否则报错。
2.每个partition所在的副本中,必须包括一个leader副本,其他就是follower副本。

1.6. Follower

1.partition replica中一个角色,从leader中拉取复制数据(只负责备份数据)
2.如果leader所在节点宕机,follower会选举出新的leader

1.7. Offset

1.每条数据都有一个offset,是数据在该partition中的唯一标识(消息的索引号)。
2.各个consumer会保存其消费到的offset位置,这样下次可以从该offset位置继续消费;consumer消费的offset保存在一个专门的topic中(—consumer_offsets)

1.8. Message

1.在客户端编程代码中,消息的类叫做: ProducerReord, ConsumerRecord. 简单来说kafka每一个message由一对key-value组成。

关于Kafka消息格式的演变,可以查看:一文看懂Kafka消息格式的演变

 一个Topic可以有多个Partation,每个分区内的消息可以保证顺序性(如果要保证消息被顺序消费可以一个topic只配置一个partation),每个分区可以有多个Replica,每个副本在不同的Broker上(Broker对应一台服务器),每个log就是对应一个文件夹

2. Kafka命令行工具

Kafka提供了许多命令行工具(默认位于/opt/${kafka}/bin目录下)用于管理集群

kafka-console-producer.sh              kafka-console-producer.sh 脚本是一个简易的生产者控制台。(https://blog.csdn.net/qq_29116427/article/details/105912397)
kafka-consumer-groups.sh               kafka查看消费组 
kafka-consumer-perf-test.sh            kafka消费者性能测试脚本
kafka-delegation-tokens.sh             kafka-delegation-tokens.sh 用于管理Delegation Token。基于Delegation Token的认证是一种轻量级的认证机制,是对SASL认证机制的补充。
kafka-delete-records.sh                kafka-delete-records.sh用于删除Kafka的分区消息,由于Kafka有自己的自动消息删除策略,使用率不高。
kafka-dump-log.sh                      kafka-dump-log.sh用于查看Kafka消息文件的内容,包括消息的各种元数据信息、消息体数据。
kafka-features.sh                      kafka-features.sh用于特性版本控制 (2.7 新增:https://github.com/apache/kafka/pull/9409)
kafka-leader-election.sh               kafka-leader-election.sh命令行工具进行分区领导选举
kafka-log-dirs.sh                      kafka-log-dirs.sh用于查询各个Broker上的各个日志路径的磁盘占用情况
kafka-mirror-maker.sh                  kafka-mirror-maker.sh用于在Kafka集群间实现数据镜像。
kafka-preferred-replica-election.sh    kafka-preferred-replica-election.sh用于执行Preferred Leader选举,可以为指定的主题执行更换Leader的操作。
kafka-producer-perf-test.sh            kafka-producer-perf-test.sh用于生产者性能测试。
kafka-reassign-partitions.sh           kafka-reassign-partitions.sh用于执行分区副本迁移以及副本文件路径迁移。
kafka-replica-verification.sh          kafka-replica-verification.sh用来验证所指定的一个或多个Topic下每个Partition对应的所有Replica是否都同步。可通过topic-white-list这一参数指定所需要验证的所有Topic,支持正则表达式。
kafka-run-class.sh                     kafka-run-class.sh用于执行任何带main方法的Kafka类。
kafka-server-start.sh                  kafka-server-start.sh用于启动Broker进程。
kafka-server-stop.sh                   kafka-server-stop.sh用于停止Broker进程。
kafka-streams-application-reset.sh     kafka-streams-application-reset.sh用于给Kafka Streams应用程序重设位移,以便重新消费数据。
kafka-topics.sh                        kafka-topics.sh用于创建、删除、修改、查看某个Topic,也可用于列出所有Topic。另外,该工具还可修改某个Topic的以下配置。
kafka-verifiable-consumer.sh           kafka-verifiable-consumer.sh用于测试验证消费者功能。
kafka-verifiable-producer.sh           kafka-verifiable-producer.sh用于测试验证生产者的功能。
trogdor.sh                             trogdor.sh是Kafka的测试框架,用于执行各种基准测试和负载测试。
zookeeper-security-migration.sh        zookeeper-security-migration.sh用于更新kafka数据中的zookeeper的 ACL,执行ACL的迁移
zookeeper-server-start.sh              zookeeper-server-start.sh 用于启动zookeeper服务
zookeeper-server-stop.sh               zookeeper-server-start.sh 用于停止zookeeper服务
zookeeper-shell.sh                     zookeeper-shell.sh作用是连接zookeeper,并通过命令查询注册的信息

 

posted @ 2021-04-10 07:59  Brian_Huang  阅读(340)  评论(1编辑  收藏  举报