librdkafka概览

Kafka相关概念

librdkafka概览

使用这个开源库的目的是,使用C版本的producer发送消息。版本:0.9.2.X。

初识

rdkafka中的rd:rapid development,项目代码https://github.com/edenhill/librdkafka

librdkafka主要目录
|- src: 源码
|- examples:官方例子
|- CONFIGURATION:配置以及说明
|- INTRODUCTION:官方介绍

Kafka相关概念

Kafka是个消息系统,成员主要有以下三个:

  1. Producer:消息的生产者
  2. Consumer:消息的消费者
  3. Broker:消息的中间人。Kafka 集群包含一个或多个服务器,服务器节点称为 broker。Kafka Broker/Kafka Server/Kafka Node都是同一个东西。[1]

生产者和消费者不直接通信,通过Broker间接通信。

graph LR Producer-->Broker-->Consumer

Topic

Topic在Kafka中的地位,就像数据库中的表。Topic用来集合所有同类别的消息。可以把Topic的名称类比成表的名字。

Topic通过分片(Partition)存储。在Kafka中,通过topic区分消息,生产消息、消费消息的时候都需要指定Topic。

Partition

存储:分片(segment)+索引(index)

Offset

Broker

  1. 每个Broker都存储着Topic,放在Partition(分片)之上
  2. Broker将收到的消息存储在磁盘上,存储方式按key做哈希,如果没有key,就是轮询。
  3. 消费者可以通过topic, partition 和 offset取走消息。

实践

参考https://kafka.apache.org/quickstart指南,

/tmp/kafka-logs

__consumer_offsets-0			__consumer_offsets-21			__consumer_offsets-34			__consumer_offsets-47
__consumer_offsets-1			__consumer_offsets-22			__consumer_offsets-35			__consumer_offsets-48
__consumer_offsets-10			__consumer_offsets-23			__consumer_offsets-36			__consumer_offsets-49
__consumer_offsets-11			__consumer_offsets-24			__consumer_offsets-37			__consumer_offsets-5
__consumer_offsets-12			__consumer_offsets-25			__consumer_offsets-38			__consumer_offsets-6
__consumer_offsets-13			__consumer_offsets-26			__consumer_offsets-39			__consumer_offsets-7
__consumer_offsets-14			__consumer_offsets-27			__consumer_offsets-4			__consumer_offsets-8
__consumer_offsets-15			__consumer_offsets-28			__consumer_offsets-40			__consumer_offsets-9
__consumer_offsets-16			__consumer_offsets-29			__consumer_offsets-41			cleaner-offset-checkpoint
__consumer_offsets-17			__consumer_offsets-3			__consumer_offsets-42			log-start-offset-checkpoint
__consumer_offsets-18			__consumer_offsets-30			__consumer_offsets-43			meta.properties
__consumer_offsets-19			__consumer_offsets-31			__consumer_offsets-44			quickstart-events-0
__consumer_offsets-2			__consumer_offsets-32			__consumer_offsets-45			recovery-point-offset-checkpoint
__consumer_offsets-20			__consumer_offsets-33			__consumer_offsets-46			replication-offset-checkpoint

该目录下的quickstart-events就是topicquickstart-events-0是指分区0。

cd quickstart-events-0

00000000000000000000.index	00000000000000000000.log	00000000000000000000.timeindex	leader-epoch-checkpoint
^@^@^@^@^@^@^@^@^@^@^@8^@^@^@^@^B3^^÷ï^@^@^@^@^@^@^@^@^A{Åt^\^U^@^@^A{Åt^\^Uÿÿÿÿÿÿÿÿÿÿÿÿÿÿ^@^@^@^A^L^@^@^@^A^@^@^@^@^@^@^@^@^@^A^@^@^@C^@^@^@^@^B&pFò^@^@^@^@^@^@^@^@^A{Åt%ó^@^@^A{Åt%óÿÿÿ     ÿÿÿÿÿÿÿÿÿÿÿ^@^@^@^A"^@^@^@^A^Vkafka test1^@^@^@^@^@^@^@^@^B^@^@^@C^@^@^@^@^B<90>Ʋw^@^@^@^@^@^@^@^@^A{Åt=®^@^@^A{Åt=®ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ^@^@^@^A"^@^@^@^A^Vkafka test2^@^@^@^@^@^@^@^@^C^@^@^@;     ^@^@^@^@^B<98>>¼^]^@^@^@^@^@^@^@^@^A{ÅvPÚ^@^@^A{ÅvPÚÿÿÿÿÿÿÿÿÿÿÿÿÿÿ^@^@^@^A^R^@^@^@^A^F^[[A^@^@^@^@^@^@^@^@^D^@^@^@O^@^@^@^@^B"[ç^K^@^@^@^@^@^A^@^@^A{Åv]¢^@^@^A{Åv`kÿÿÿÿÿÿÿÿÿÿÿÿÿÿ^@^@^@^B     ^X^@^@^@^A^Lweklja^@                                                                                                                                                                           ^@<92>^K^B^A^Rasldkfjaw^@^@^@^@^@^@^@^@^F^@^@^@N^@^@^@^@^<83>^@^@^@^@^@^A^@^@^A{Åvbø^@^@^A{Åve¾ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ^@^@^@^B^\^@^@^@^A^Pasklejfa^@^Z^@<8c>^K^B^A^Lklajef^@^@^@^@^@^@^@^@^H^@^      ^@O^@^@^@^@^B<94>­ög^@^@^@^@^@^A^@^@^A{Åvh~^@^@^A{Åvk`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ^@^@^@^B^\^@^@^@^A^Pkeljawfe^@^\^@Ä^K^B^A^Nlkjawef^@

Reference


  1. https://jaceklaskowski.gitbooks.io/apache-kafka/content/kafka-brokers.html ↩︎

librdkafka概览

Kafka相关概念