kafka创耳机_如何在kafka中创建topic

[Toc]

如何在kafka中创建topic

在使用kafka发送消息和消费消息之前,必须先要创建topic,在kafka中创建topic的方式有以下3种:

如果kafka broker中的config/server.properties配置文件中配置了auto.create.topics.enable参数为true(默认值就是true),那么当生产者向一个尚未创建的topic发送消息时,会自动创建一个num.partitions(默认值为1)个分区和default.replication.factor(默认值为1)个副本的对应topic。不过我们一般不建议将auto.create.topics.enable参数设置为true,因为这个参数会影响topic的管理与维护。

通过kafka提供的kafka-topics.sh脚本来创建,并且我们也建议通过这种方式(或者相关的变种方式)来创建topic。

kafka的0.10版本之前,可以使用内置的kafka-admin包,后续提供了专门的类AdminClient API来进行API层面上的topic创建。

脚本创建的实质

通过 kafka-topics.sh 脚本来创建一个名为topic-test1并且副本数为2、分区数为4的topic。(如无特殊说明,本文所述都是基于1.0.0版本。)

bin/kafka-topics.sh --create --zookeeper 192.168.0.2:2181/kafka100 --topic topic-test1 --replication-factor 2 --partitions 4

打开kafka-topics.sh脚本一探究竟,其内容只有一行,具体如下:

exec $(dirname $0)/kafka-run-class.sh kafka.admin.TopicCommand "$@"

这个脚本的主要作用就是运行 kafka.admin.TopicCommand。在main方法中判断参数列表中是否包含有create,如果有,那么就实施创建topic的任务。

创建topic时除了需要zookeeper的地址参数外,还需要指定topic的名称、副本因子replication-factor以及分区个数partitions等必选参数 ,还可以包括disable-rack-aware、config、if-not-exists等可选参数。

partion:topic的数据内容被划分为几块存储

replication-factor: 物理存储topic的内容采用几个副本的容错策略

topic命令时的警告

创建topic的时候,如果名称中包含.或者_,kafka会抛出警告。原因是:

在Kafka的内部做埋点时会根据topic的名称来命名metrics的名称,并且会将句点号 . 改成下划线_。假设遇到一个topic的名称为topic.1_2,还有一个topic的名称为topic_1.2,那么最后的metrics的名称都为topic_1_2,所以就会发生名称冲突。

命名规则

topic的命名不推荐(虽然可以这样做)使用双下划线__开头,因为以双下划线开头的topic一般看作是kafka的内部topic,比如__consumer_offsets和__transaction_state。

topic的名称必须满足如下规则:

由大小写字母、数字、.、-、_组成

不能为空、不能为.、不能为..

长度不能超过249

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值