Broker Kafka集群包括一个或多个处事器,这种处事器被称为broker Topic 每条宣布到Kafka集群的动静都有一个种别,这个种别被称为topic。(物理上差异topic的动静分隔存储,逻辑上一个topic的动静固然生涯于一个或多个broker上但用户只需指定动静的topic即可出产或斲丧数据而不必体谅数据存于那里) Partition parition是物理上的观念,每个topic包括一个或多个partition,建设topic时可指定parition数目。每个partition对应于一个文件夹,该文件夹下存储该partition的数据和索引文件 Producer 认真宣布动静到Kafka broker Consumer 斲丧动静。每个consumer属于一个特定的consumer group(可为每个consumer指定group name,若不指定group name则属于默认的group)。行使consumer high level API时,统一topic的一条动静只能被统一个consumer group内的一个consumer斲丧,但多个consumer group可同时斲丧这一动静。
行使librdkafka开拓一个producer的步调: librdkafka: 1. conf 配置 kafka conf: rd_kafka_conf_new(): rd_kafka_conf_set() topic conf: rd_kafka_topic_conf_new(): rd_kafka_topic_conf_set()
配置conf回调,动静发送乐成可能失败城市挪用 rd_kafka_conf_set_dr_cb() rd_kafka_conf_set_dr_msg_cb()
建设kafka rd_kafka_new() 配置体系日记 rd_kafka_set_logger() rd_kafka_set_log_level() 添加下流brokers: rd_kafka_brokers_add()
建设新的topic rd_kafka_topic_new()
producer: rd_kafka_produce() 发送后,配置时刻调查,第二个参数是阻塞守候时刻,一样平常配置为0,rd_kafka_poll()
烧毁操纵 rd_kafka_topic_destroy() rd_kafka_destroy() rd_kafka_wait_destroyed(2000)
一些数据布局的表明
- Brokers
librdkafka 只必要一份最初的brokers列表(至少包括一个broker)。它将毗连全部”metadata.broker.list”可能是rd_kafka_brokers_add()函数添加的brokers,然后向每个brokers申请一些元数据信息:包括brokers的完备列表、topic、partitions以及它们在Kafka 集群中的leaders broker信息。
Brokers名字的情势为:host:port; 个中port是可选的,默认是9092,host是任何一个可以理会的hostname可能ipv4可能ipv6地点。假如host是多个地点,librdkafka将会在每一次毗连实行中轮回毗连这些地点。包括全部broker 地点的DNS记录可以用来提供靠得住的bootstrap broker。
|