Kafka文档阅读笔记之基本操作
官方资料
- 官方首页
- 官方文档
- 基本操作
- topic的配置参数
topic的部分操作
创建新的topic
命令样例,如下:
bin/kafka-topics.sh \
--bootstrap-server localhost:9092 \
--create \
--topic my_topic_name \
--partitions 20 \
--replication-factor 3 \
--config x=y
在上述样例中
- 选项
replication-factor
用于指定副本的数量,即保存数据的节点的数量。当指定为3副本时,假如其中2个副本丢失,或者说2个节点丢失、不可用,仍然有1个节点可以提供数据的读操作。 - 选项
partitions
用于指定shard或者分片的数量。评估shard的数量时,需要保证一个partition
可以由一个节点完整承载。如样例中指定20个partition
,在不考虑副本的数量的情况下,表示至多由20个节点来存储数据,提供读、写操作。partition
的数量影响topic的读操作的并发度,即topic的partition
之间,读操作是并发的,而在partition
内部,读操作是串行的。
Kafka使用硬盘来保存数据,保存topic的数据时,目录名样例为${KAFKA_HOME}/log/${TOPIC_NAME}-{00000}
,即目录名由topic的名称和partition
的编号来组成。
通常情况下,Linux操作系统的环境下,目录名一般由255个字节的字符组成,另外partition
的数量,期望不超出100000个,因此从实现角度,限定了topic的名称的长度,即topic的名称由249个字节组成。
修改已有的topic,增加partition
的数量
命令样例,如下:
bin/kafka-topics.sh \
--bootstrap-server localhost:9092 \
--alter \
--topic my_topic_name \
--partitions 40
增加partition
的数量时,需要关注对数据分区的方法,避免增加partition
之后,触发数据的重新分布的操作。
注意partition
的数量只能增加,不能减小,目前kafka没有提供减少partition
的数量的方法。
修改已有的topic,增加配置参数
命令样例,如下:
bin/kafka-configs.sh \
--bootstrap-server localhost:9092 \
--entity-type topics \
--entity-name my_topic_name \
--alter \
--add-config x=y
修改已有的topic,删除配置参数
命令样例,如下:
bin/kafka-configs.sh \
--bootstrap-server localhost:9092 \
--entity-type topics \
--entity-name my_topic_name \
--alter \
--delete-config x
删除一个topic
命令样例,如下:
bin/kafka-topics.sh \
--bootstrap-server localhost:9092 \
--delete \
--topic my_topic_name
优雅退出
kafka集群会自动监控、检测集群中节点的状态,当有节点出现失效比如kafka进程退出、kafka进程所在服务器重启等现象时,kafka集群自动将故障节点上的partition的主副本迁移至健康节点上,即从partition的已有副本中选择新的主副本,用于承接读、写操作。
当启用kafka优雅退出时,
- kafka进程将数据从内存刷新至硬盘上,这样当kafka进程重新启动时,将不需要做日志的恢复操作,比如通过计算数据的校验和来检查数据的完整性,这样有助于缩短启动时间。
- kafka进程将主副本在本节点的partition,通知其它节点上的副本来竞选主副本,这有助于缩短这部分partition不可用的时间。
kafka的启动流程,和退出流程,涉及哪些操作,相应的耗时。
通过配置参数controlled.shutdown.enable
来控制优雅退出的行为。
- 取值为
true
时,启用优雅退出。 - 取值为
false
时,禁用优雅退出。
使用优雅退出时,要求各个partition至少要有2个副本。