Kafka介绍

kafka物理结构

一个kafka集群由多个broker组成

每个topic由多个partition组成,partition均匀分布在broker中,partition中存储了具体的数据,在broker的{log.dirs}下每个物理文件夹对应一个topic的某个partition,partition数据文件又被分成多个segment,每个segment对应一个数据文件和一个索引文件,
partition的磁盘文件是顺序读写,这是kafka高吞吐的主要原因

每个partition有一个leader和多个replica,leader负责当前partition的读写请求,replica在leader的ISR(in-sync replica)列表中,replica同步leader的数据保证leader的高可用

Kafka Producer

producer发送消息时自己决定某条消息发送给topic的某个partition,可使用round-robbin或hash(msg) mod partition_num选择partition,然后从zk获取partition leader的所在的broker与其通信

Kafka Consumer

Consumer采用pull的方式与leader通信, 由Consumer维护消费状态。

Consumer API分为High Level API和Low Level API。 High Level API简化消费流程,屏蔽kafka内部逻辑结构;Low Level API需consumer控制消费offset,处理brokder/leader变化

High Level API

Consumer Group之间相对独立,互不影响

Consume Group内部每个partion只有一个Consumer

Consumer Group内部的所有Consumer会在zookeeper上注册,并监听consumer/broker/leader的变化,自动进行Consumer Rebance

High Level API默认实现at least once语义

Low Level API(SimpleConsumer)

一般在以下情况需用Low Level API:

  • 重复读取一条数据
  • 读取一个topic的部分partition数据
  • 事物管理,实现exactly once意义

使用SimpleConsumer不仅仅需要关注topic,还需关注底层的broker/partition leader,管理offeset,同时还要处理broker leader切换、partition动态变化

Zookeeper 数据

   /brokers/ids/ 记录了kafka集群broker信息

   /brokers/topics/{topic_name}/partitions/{partition_num}/state 记录了topic的partition分布,partition leader/replica位置

   /consumers/{consumer-group}/ids 记录了consumer group下的所有消费线程

   /consumers/{consumer-group}/offersets/{topic_name}/{partition_num} 记录了又consumer commit的每个partition的消费offset

   /consumers/{consumer-group}/owners/{topic_name}/{partition_num} 记录了每个partition是由哪个consumer在消费

bin/kafka-topics.sh --describe topic --zookeeper zk-host 读取/broker/topics下的信息
bin/kafka-run-class.sh kafka.tools.ConsumerOffsetChecker 读取/consumers/目录下的相关信息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值