0
点赞
收藏
分享

微信扫一扫

Kafka入门教程

eelq 2022-08-04 阅读 65


架构

Kafka入门教程_kafka


broker为Kafka集群的一个节点

Kafka入门教程_kafka_02


topic是逻辑上的概念,partition是物理上的存储,相当于分表

Consumer Group指定消费者的分组,

介绍

修改配置
进入到config目录下修改server.properties

broker.id
listeners=PLAINTEXT://192.168.1.1:9092
zookeeper.connect

启动

进入bin目录
daemon(守护进程)

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

zookeeper上注册的节点信息
controller 控制节点
brokers kafaka集群的broker信息
consumer ids/owners/offsets

基本操作

kafka实现细节

消息
消息有key[可选],value;消息批量发送

topic&partition
topic相当于一类消息的集合,partition相当于按照hash规则,将topic放到多个partition中

topic是逻辑概念
partition是物理概念

kafka高吞吐量的因素

  1. 顺序写的方式存储数据
  2. 批量发送 batch.size/linger.ms
  3. 零拷贝 FileChannel.transferTo

日志策略

日志保留策略&日志压缩

Kafka入门教程_kafka_03

消息可靠性机制

消息发送可靠性

生产者发送消息到broker,有三种确认方式
acks = 0 : producer不会等待broker(leader)发送ack
acks = 1 : 当leader接收到消息之后发送ack,丢失重发,丢的概率很小
acks = -1 : 当所有follower都同步消息成功后发送ack,丢失消息可能性比较低

消息存储可靠性

Partition的规则

消息确认的几种方式

自动提交

properties.put(ConsumerConfig.ENABLE_AUTO_FONFIG, "true");
properties.put(ConsumerConfig.AUTO_COMMIT_INTERVAL_MS_CONFIG, "1000");

手动提交

手动同步提交
手动异步提交

指定消费某个分区的消息

Kafaka的分区分配策略

为了提高消费速率,启动多个消费者去消费

Kafka入门教程_javascript_04

同一个分区只能由同一个消费组内的consumer来消费
同一个consumer grop内的consumer应该怎么去分配消费哪个分区里的数据

两种分区策略

partition.assignment.strategy
consumer的rebalance
当一个consumer group新增了消费者
当订阅的主题新增了分区(分区数量发生变化)
消费者主动取消订阅某个主题
某个分区或者某个broker crash

Range 策略 (默认)
0 1 2 3 4 5 6 7 8 9 (10个分区)
c0 c1 c2 (3个消费者)
c0[0,3] 消费0到3
c1[4,6] 消费4到6
c2[7,9] 消费7到9
10(partition num) / 3 (consumer num) = 3

roundrobin 策略
0 1 2 3 4 5 6 7 8 9(10个分区)
c0[0,3,6,9] (3个消费者)
c1[1,4,7]
c2[2,5,8]

命令行

创建topic
–zookeeper 后面是zookeeper的地址

sh kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic myTopic

查看所有的topic
–zookeeper 后面是zookeeper的地址

sh kafka-topics.sh --list --zookeeper localhost:2181

发送消息
–broker-list后面是一个kafka的集群,topic名称为myTopic

sh kafka-console-producer.sh --broker-list localhost:9092 --topic myTopic

–partitions 是分区的数量

假如partitions为3,broker为3,则在3台机器上分别有
格式为topic-分区

机器1 myTopic-0
机器2 myTopic-1
机器3 myTopic-2

假如partitions为4,broker为3,则在3台机器上分别有

机器1 myTopic-0,myTopic-3
机器2 myTopic-1
机器3 myTopic-2

–replication-factor 是副本数
假如partitions为3,broker为3,replication-factor为2,则在3台机器上分别有

机器1 myTopic-0,myTopic-2
机器2 myTopic-0,myTopic-1
机器3 myTopic-1,myTopic-2

副本之间有leader和follower的角色

涉及到的问题有leader选举,副本同步

Kafka入门教程_javascript_05



举报

相关推荐

0 条评论