Kafka最佳实践-Kafka常见的使用误区

这篇具有很好参考价值的文章主要介绍了Kafka最佳实践-Kafka常见的使用误区。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.kafka集群单个节点磁盘挂载的越多越好

业界Kafka的标准使用方式是作为临时缓存使用。因此,很多人会误以为,kafka的每个节点只要存储够大就行,不用关心其他的指标。官方并不建议kafka单节点关在多个磁盘,因为磁盘越多,表示需要更多的处理线程去管理(num.io.thread决定),CPU的压力将非常大,如果磁盘数大于了CPU逻辑核数,kafka的CPU将因为非常繁忙导致数据落盘失败,从而影响业务。

建议:

  • 建议每个节点挂盘数,满足每台机器最大挂盘数量 <= processor(CPU逻辑核数) / 2。
  • 最优策略为每个节点使用raid5或者raid10挂载数据目录,每个raid5或者raid10的逻辑盘不超过8块。

2.把kafka当做数据库使用

很多人认为,如果数据重要,需要把kafka中的数据保存周期延长到很大(例如:1年),例如。Kafka对于数据目录中的每个segment文件会有一个操作句柄对应,如果数据保存周期过长,会导致操作句柄使用率增加,如果句柄数无限制增加并且到达上限后会导致kafka服务异常。

正常情况下,业务侧应当根据集群中的磁盘总容量来评估数据的保留时间。如果,集群中的业务种类多、数据量大。于此同时又不关心数据量的大小,很容易造成磁盘容量不足。

**建议:**业务侧评估好数据量的大小,调整合适的保留时间。一般情况下,建议使用7天即可。

3.分区数越多越好

Kafka增加分区数的作用主要有两点:第一:将数据分布均匀,防止不会出现某个节点或者某个数据盘的数据热点。第二,提升消费并行度,消费者通常与分区是一一对应的,提升分区数同样也能提升消费者的个数,从而提升消费性能。但是分区数不能无限制增加,如果数量太多会导致kafka和zookeeper负载增高,kafka内部调度线程无法及时处理响应,导致节点进程故障。

建议:

  • 建议集群中topic总量不超过2000,每个节点的分区总量不超过2000。
  • 如果业务重要或者数据量很大,建议分区量=节点数*磁盘数,如果该数值大于200,则分区数选择为200,如果后期需要提升分区数来提升读写性能,可以使用kafka后台命令逐步提升,如果数据量很小,建议分区量=节点数,保证每个节点的数据量均衡。

4.业务侧对写入kafka的数据大小不感知

kafka组件的主要定位为消息队列(非文件队列),官方建议写入kafka最佳的数据大小不超过15K。但是在很多的业务场景下,需要写入的数据往往是大于15k的。Kafka服务端默认可以接受的最大的数据大小为10M

建议:

  • 客户端默认单条数据大小最大为1M(由配置request.size决定),在数据大小小于1M的情况下,使用默认值发送数据即可。
  • 如果数据在1M到5M之间,开启在生产端开启压缩模式(由type决定,可以选择gzip, snappy, 或者lz4),开启压缩后,生产端的压缩数据过程和消费端的解压缩数据过程会增加CPU的使用率。
  • 不建议发送大于5M的数据,经过验证持续返送大于5M的数据会导致kafka的直接内存溢出。

5.Topic可以随意的创建和删除

Kafka的topic代表了一个类型的数据,频繁的创建删除topic会导致zookeeper通信压力大,出现broker节点信息上报失败,服务不可用的情况。一旦zookeeper出现异常,删除topic的流程会处于阻塞状态,导致topic无法正常删除。

建议:

  • Topic不建议频繁创建删除。
  • 对于有共同特点的数据(例如:协议类型相同),可以归并到一个topic里面处理。

6.频繁使用旧版本客户端消费工具

旧版本的消费工具使用的命令如下:
Kafka最佳实践-Kafka常见的使用误区

每使用一次就会在zookeeper下生成一个永久节点。这个节点不会自动清理,如果经常使用会导致zookeeper异常。
Kafka最佳实践-Kafka常见的使用误区

本文由华为云发布。文章来源地址https://www.toymoban.com/news/detail-442058.html

到了这里,关于Kafka最佳实践-Kafka常见的使用误区的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深入理解Kafka:架构、设计原则及最佳实践

    Kafka是一款由Apache开发的分布式流处理平台,它最初是由LinkedIn公司在2010年开发的。从最初的消息队列到如今的分布式流处理平台Kafka经历了一个逐步演化的过程。 Kafka最开始的设计目的是解决LinkedIn内部存在的海量数据传输问题,在其不断的发展中Kafka逐渐发展成为一种可持

    2024年02月07日
    浏览(63)
  • 深入解析 Kafka生产者:关键特性与最佳实践

    引言 Apache Kafka作为一个高度可扩展且具有高效性的消息中间件,已经成为现代大数据生态系统中的核心组件之一。在本文中,我们将专注于Kafka中的一个重要角色——生产者(Producer),探讨其核心功能、工作原理及其关键配置项,旨在帮助读者更好地理解和优化Kafka生产者的

    2024年03月17日
    浏览(98)
  • 基于Canal+kafka监听数据库变化的最佳实践

    1、前言         工作中,我们很多时候需要根据某些状态的变化更新另一个业务的逻辑,比如订单的生成,成交等,需要更新或者通知其他的业务。我们通常的操作通过业务埋点、接口的调用或者中间件完成。         但是状态变化的入口比较多的时候,就很容易漏掉

    2023年04月08日
    浏览(83)
  • Kafka 最佳实践:构建可靠、高性能的分布式消息系统

    Apache Kafka 是一个强大的分布式消息系统,被广泛应用于实时数据流处理和事件驱动架构。为了充分发挥 Kafka 的优势,需要遵循一些最佳实践,确保系统在高负载下稳定运行,数据可靠传递。本文将深入探讨 Kafka 的一些最佳实践,并提供丰富的示例代码,帮助读者更好地应用

    2024年02月03日
    浏览(63)
  • kafka常见命令介绍和使用

    首先通过这个命令什么也不加参数可以看到参数的详解 创建一个topic基本参数 连接kafka : --zookeeper 操作一个topic : --topic 对一个topic进行什么样的操作?增–create删–delete改–alter查–describe 指定分区数:–partitions 指定副本个数:–replication-factor 1、创建一个test0主题并指定分

    2024年02月04日
    浏览(36)
  • kafka使用时常见的几个错误汇总

    WARN [AdminClient clientId=adminclient-1] Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient) 解决 :重启kafka org.apache.kafka.common.KafkaException: Socket server failed to bind to 114.115.20.100:9092: Cannot 解决 :在kafka安装目录的conf下,编辑se

    2023年04月08日
    浏览(45)
  • Kafka原理、部署与实践——深入理解Kafka的工作原理和使用场景,全面介绍Kafka在实际生产环境中的部署

    作者:禅与计算机程序设计艺术 随着互联网的发展,网站的流量呈爆炸性增长,传统的基于关系型数据库的数据处理无法快速响应。而NoSQL技术如HBase、MongoDB等被广泛应用于分布式数据存储与处理,却没有提供像关系型数据库一样的ACID特性、JOIN操作及完整性约束。因此,很

    2024年02月09日
    浏览(64)
  • Laravel使用Kafka实践教程(从安装到使用0-1)

    首先Linux服务器需要安装好Kafka,这里不再具体细说,可以看我前面的文章:Linux搭建Kafka详细一步一步指南(linux启动kafka脚本)-CSDN博客 注意:版本号一定要选对!!!至于版本号该怎么选择,这里也不再细说,可以看我前面的文章:Laravel 使用rdkafka_laravel详细教程(实操避坑)

    2024年02月02日
    浏览(44)
  • 使用Flink实现Kafka到MySQL的数据流转换:一个基于Flink的实践指南

    在现代数据处理架构中,Kafka和MySQL是两种非常流行的技术。Kafka作为一个高吞吐量的分布式消息系统,常用于构建实时数据流管道。而MySQL则是广泛使用的关系型数据库,适用于存储和查询数据。在某些场景下,我们需要将Kafka中的数据实时地写入到MySQL数据库中,本文将介绍

    2024年04月15日
    浏览(53)
  • 《Kafka系列》Kafka常见问题处理记录

    1.创建语句如下所示,按照习惯在添加zookeeper参数的时候,指定了 zxy:2181/kafka ,但是却创建失败, Error while executing topic command : Replication factor: 1 larger than available brokers: 0. 2.检查各个broker的server.properties文件 发现在配置参数的时候, zookeeper.connect 指定的是 zxy:2181,zxy:2182,zxy:21

    2024年02月03日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包