Kafka深度讲解+Zookeeper存储

Concept:

Partition

  partition是物理上的概念,每个topic包含一个或多个partition,创建topic时可以指定partition数量,每个partition对应于一个文件夹,该文件夹下存储该partition的数据和索引文件

<span style="font-family:Microsoft YaHei;"><span style="font-family:System;">[zhuhailong@stm02 kafka-logs]$ cd test.app.log-3/
[zhuhailong@stm02 test.app.log-3]$ pwd
/o2o/software/kafka_2.10/kafka-logs/test.app.log-3
[zhuhailong@stm02 test.app.log-3]$ ll
total 25708
-rw-r--r-- 1 root root    12904 Oct 24 19:20 00000000000000053408.index
-rw-r--r-- 1 root root 22455397 Oct 24 19:20 00000000000000053408.log
-rw-r--r-- 1 root root 10485760 Oct 25 17:20 00000000000000059578.index
-rw-r--r-- 1 root root  3838895 Oct 25 17:20 00000000000000059578.log
[zhuhailong@stm02 test.app.log-3]$ 
</span></span>
Consumer

  作用是消费消息,每个consumer属于一个特定的consumer group(可以为每个consumer指定group name,若不指定 group name 则属于默认的group),使用consumer high level API时,同一个topic的一条消息只能被同一个consumer group内的一个consumer消费,但多个consumer group可同时消费这一消息。

  Kafka消费者的API分为两部分,High level API 和Low level api,一般开发都是使用High level API(不用关心消费状态,负载均衡,offset等),一般监控开发都是使用Low level API 可以获取 offset,partition 等属性。


高级API的一些特性:

1) 如果consumer group中的consumer线程数量比partition多,那么有的线程将永远不会接收到消息。因为kafka的设计是在同一个partition上是不允许并发的,所以consumer的线程数量不要大于partition数量。

2) 如果consumer grope中的consumer线程数量少于partition,那么有的线程将会收到多条消息,并且不保证数据间的顺序,kafka只保证在一个partition上数据是有序的。

3)增减consumer,broker,partition会导致集群rebalance,所以rebalance后consumer对应的partition会发生变化。

4)High level api 获取不到数据的时候会block等待。

5)consumer group设计的目的之一是为了应用多线程同时消费某个topic的数据

6)consumer group通过Zookeeper来消费kafka集群中的消息,相对于low High API 自己管理offset,High API把offset的管理交给了Zookeeper,但是High API并不是消费一次就在Zookeeper中更新一次,而是每间隔一定时间更新一次offset(默认1000ms),所以可能在重启消费者时拿到重复的消息。此外,当分区leader发生变更时也可能拿到重复的消息,因此在关闭消费者时最好等待一定时间然后在shutdown。



未完待续~






















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是在Windows上安装KafkaZookeeper的步骤: 1. 下载KafkaZookeeper 访问官网下载页面,选择与您的操作系统版本相对应的KafkaZookeeper版本,并下载压缩包。 2. 解压缩文件 将KafkaZookeeper的压缩包解压缩到您选择的目录。 3. 配置Zookeeper 进入Zookeeper的目录,复制conf文件夹下的zoo_sample.cfg文件并重命名为zoo.cfg,然后打开zoo.cfg文件,修改dataDir参数为您想要存储Zookeeper数据的目录。例如: ``` dataDir=C:/zookeeper-3.6.2/data ``` 4. 启动ZookeeperZookeeper目录下,打开命令提示符或PowerShell,输入以下命令来启动Zookeeper: ``` bin/zkServer.cmd ``` 5. 配置Kafka 进入Kafka的目录,打开config文件夹下的server.properties文件,修改以下参数: ``` brokers.id=0 listeners=PLAINTEXT://localhost:9092 zookeeper.connect=localhost:2181 ``` 6. 启动KafkaKafka目录下,打开命令提示符或PowerShell,输入以下命令来启动Kafka: ``` bin/windows/kafka-server-start.bat config/server.properties ``` 7. 测试KafkaKafka目录下,打开命令提示符或PowerShell,输入以下命令来创建一个名为“test”的主题: ``` bin/windows/kafka-topics.bat --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test ``` 然后,输入以下命令来启动一个消费者,并订阅刚创建的主题: ``` bin/windows/kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning ``` 最后,打开另一个命令提示符或PowerShell窗口,输入以下命令来启动一个生产者,并向刚创建的主题发送消息: ``` bin/windows/kafka-console-producer.bat --broker-list localhost:9092 --topic test ``` 在生产者命令行中输入消息,然后切换到消费者命令行,您将看到刚刚发送的消息。 以上就是在Windows上安装KafkaZookeeper的步骤。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值