当前位置:   article > 正文

Kafka入门-1_kafka partition数量和broker数量

kafka partition数量和broker数量

基本内容

kafka基于发布订阅模式,大数据及时处理

架构

在这里插入图片描述

成员角色:

1 )

Producer :消息生产者,就是向 kafka broker 发消息的客户端;
2 )

Consumer :消息消费者,向 kafka broker 取消息的客户端;
3 )

Consumer Group (CG ):消费者组,由多个 consumer 组成。 消费者组内每个消费者负
责消费不同分区的数据,一个分区只能由一个 组内 消费者消费;消费者组之间互不影响。所有的消费者都属于某个消费者组,即 消费者组是逻辑上的一个订阅者。
4 )

Broker :一台 kafka 服务器就是一个 broker。一个集群由多个 broker 组成。一个 broker可以容纳多个 topic。
5 )

Topic :可以理解为一个队列, 生产者和消费者面向的都是一个 topic;
6 )

Partition :为了实现扩展性,一个非常大的 topic 可以分布到多个 broker(即服务器)上,
一个 topic 可以分为多个 partition,每个 partition 是一个有序的队列;
7)

Replica: :副本,为保证集群中的某个节点发生故障时,该节点上的 partition 数据不丢失,且 kafka 仍然能够继续工作,kafka 提供了副本机制,一个 topic 的每个分区都有若干个副本,
一个 leader 和若干个 follower。
8 )

leader :每个分区多个副本的“主”,生产者发送数据的对象,以及消费者消费数据的对象都是 leader。
9 )

follower :每个分区多个副本中的“从”,实时从 leader 中同步数据,保持和 leader 数据的同步。leader 发生故障时,某个 follower 会成为新的 follower。

发布订阅模式有两种:

1.队列决定给哪个消费者

1的缺点:不能决定发给消费者的速度,有可能有的消费者处理能力不能,有的消费者造成资源浪费

除此之外,他多数情况下,还需要维护一个表,指明队列数据来了通知哪个消费者

2.消费者主动拉去数据——>kafka属于此

(消费者的消费速度由自己决定)这种情况对消费者宕机后的数据恢复也很好

2的缺点:需要轮询,长轮询

除了解耦削峰异步,卡夫卡还多了可恢复处理

kafka架构注意

注意一:

一个主题可能有多个partition,给个分区(partition)只能给 消费者组里的一个消费者用

(不能是消费者组(组里有多个成员)里的消费者,不能同时消费一个分区里的数据,除非组里只有一个消费者)

一般来说:某个主题的分区数==消费者个数(此时效率最好),相当于100条消息可以分给2个人处理,削峰(以前一个人处理100条,压力太多)

但是这样,多出来的消费者就没意义

在这里插入图片描述

(分区与3副本的关系)

https://www.cnblogs.com/qxynotebook/p/11235275.html

注意二:

leader是主,follower是辅助节点,follower只有暂存数据的功能,就是副本的意思

分区是为了:1.负载的 2.提高读写并发度

副本的作用:某个broker 宕机了把副本(follower)作为leader

注意三:

kafka需要zookeeper:kafka 通过 zookeeper 来存储集群的 meta 信息。


消费者需要存东西:比如记录消费者消费到哪个位置(offset信息),消费者宕机了好回复

也是存在zk里面的


0.9后又不一样了,offset信息存在了本地(系统里磁盘)。让消费者主动去拉。

避免了频繁和zk打交道,加快速度

架构小总结:

生产者连broker 上的kafka

消费者连broker 上的kafka

kafka连上zk,zk管理集群

生产者、kafka、消费者 通过topic传递消费数据

注意分区和副本的数量

搭建

broker.id=1

broker.id=2

broker.id=3必须不重复

zookeeper都要启动,在kafka里面也都要指定配置,zookeeper也是集群的

log.dirs:放kafka的暂存数据

log一般不是指代日志

linux下启动:

bin/kafka-server-start.sh config/server.properties

我安装了window的在F:\kafka

操作

window下创建主题

bin\windows\kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic hello

其中:

–zookeeper 指定zookeeper的位置

–create 创建的意思

–topic 主题

–partition 分区

–replication factor 副本数

此处注意:

副本的数量不能大于broker的数量:

副本就是用来备份的,多了的副本没有用,没有地方放了

img
-sYOkpr4Y-1588585463140)(C:\Users\user\Desktop\Course\kafka\副本数量不能大于broker数量.png)]

如图,我搭建的集群只有三个broker,没办法创建有四个副本的主题

window下查看主题

bin\windows\kafka-topics.bat --list --bootstrap-server localhost:9092

–bootstrap-server 指定服务

–list 查看

注意:在创建主题的时候,副本数字 --replication-factor 不能比物理及其的数字还大 ,没有用了

模拟生产者

bin/kafka-console-producer.bat

–topic <主题>

–broker-list 说明是发完集群

localhost:9092

模拟消费

老版

bin/kafka-console-producer.bat

–topic <主题>

–zookeeper localhost:2181 说明:消费者可以指定zookeeper,关联里面拿数据(老版,现在用不了)

–broker-list 说明是集群

localhost:9092

新版

kafka-console-producer.bat

–broker-list localhost:9092

–topic second

输入消息

kafka-console-consumer.bat

–topic second

–bootstrap-server localhost:9092

–from-beginning//表示从头开始的数据我都要,如果没有指定,就只能从当下拿了

生产消费大致原理

前面讲过kafka的消费者轮询往队列里面取数据
在这里插入图片描述

数字:分区;文字:主题

首先明白,数据是存在卡夫卡本地,也可以说是主题,kafka存数据的地方只有是主题,_consumer_offsets 也是主题,系统主题

用-bootstrap-server 命令启动消费者的时候:自动创建这些系统主题,消费者轮询这些主题,查找kafka的数据给自己

(物理机器的分区连起来是50,如图,是3的倍数+1)

有什么用?分区是为了——》1.负载的 2.提高读写并发度

副本的作用:某个broker 宕机了把副本(follower)作为leader

消费者的轮询,往kafka里面查数据

数据存储位置

当多个kafka连上同一个zk,就关联上了,存在zk的zkData的version2

kafka本身的数据 存在F:\tmp\kafka-logs

以上两个地方都是在配置文件里指定的,分别是F:\kafka\kafka_3.2\kafka_2.12-2.2.0\config的server.properties

和F:\zookeeper\zookeeper-3.4.14\conf\zoo.cfg

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/1009574
推荐阅读
相关标签
  

闽ICP备14008679号