当前位置: 首页 > news >正文

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个副本。

http://www.lryc.cn/news/470842.html

相关文章:

  • Golang | Leetcode Golang题解之第506题相对名次
  • 机器学习——元学习(Meta-learning)
  • 【TIMM库】是一个专门为PyTorch用户设计的图像模型库 python库
  • 【AIGC】从CoT到BoT:AGI推理能力提升24%的技术变革如何驱动ChatGPT未来发展
  • 若依部署上线遇到的问题
  • 一个vue3的待办列表组件
  • 深入分析梧桐数据库SQL查询之挖掘季度销售冠军
  • 「ZJUBCA秋季迎新见面会预告」
  • 钉钉消息推送工具类
  • Android Studio 导入/删除/新建库的模块(第三方项目) - Module
  • flowable 去掉自带的登录权限
  • 第T8周:猫狗识别
  • 第十七周:机器学习
  • 算法4之链表
  • 掌握未来技术:KVM虚拟化安装全攻略,开启高效云端之旅
  • 挖矿病毒的处理
  • JVM(HotSpot):GC之G1垃圾回收器
  • appium文本输入的多种形式
  • springboot095学生宿舍信息的系统--论文pf(论文+源码)_kaic
  • 使用SQL在PostGIS中创建各种空间数据
  • ArkTS 如何适配手机和平板,展示不同的 Tabs 页签
  • Docker下载途径
  • Windows: 如何实现CLIPTokenizer.from_pretrained`本地加载`stable-diffusion-2-1-base`
  • MySQL 9从入门到性能优化-慢查询日志
  • ARM学习(33)英飞凌(infineon)PSOC 6 板子学习
  • 华为原生鸿蒙操作系统的发布有何重大意义和影响:
  • API 接口:连接生活与商业的数字桥梁
  • IEC101 JAVA开发记录
  • 降压恒压150V供电 负载固定5V 持续0.6A电动车仪表供电芯片SL3150H
  • QT 从ttf文件中读取图标