kafka基本架构以及参数调优

这篇具有很好参考价值的文章主要介绍了kafka基本架构以及参数调优。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Kafka是LinkedIn公司使用Scala语言开发,后来捐献给apache的项目。官网地址是http://kafka.apache.org。是常用的以高吞吐、可持久化、可水平扩展、支持流处理的分布式消息系统。

简单架构图:

生产端:逻辑层生产者将消息发到指定的topic中,物理层,生产者先找到相应的集群和对应的leader partition建立连接发送消息。

消费端:逻辑层消费组接收此topic的所有消息,物理层消费组的消费者连接到固定的partition来消费消息。

在物理层上包装逻辑层也是一个比较常见的解耦方法:比如很多公司都是多地域多中心的多活容灾架构。在物理层北京亦庄数据中心、上海桂桥数据中心等物理数据中心上划分逻辑数据中心,数据中心的迁移可以做到应用服务不感知。底层的实现原理也很简单就是标签+路由层。

Kafka集群的一台服务端和其他应用一样,是由应用+数据组成,可以算作是一个分布式文件系统。大多数的分布式文件系统就是主从架构如Mysql、Kubernetes和Kafka,个别是对等式的架构如ElasticSearch。Kafka的主节点被称为Controller,负责和Zookeeper通信、集群成员管理(Broker上下线)和Topic管理(增删改查)。Zookeeper里存储的是集群的元数据信息。简而言之,Controller的功能可以类比Kubernetes等集群的Controller功能,差不多的。

数据存储上,每个partition物理上是一个文件夹,相当于将一个巨型文件分成多个大小相等的segment文件。每个文件的消息数不一定相等。每个partition文件由于是顺序读写,所以老的segment文件可以快速被删除。

一个segment文件由一个index文件和一个数据文件组成。文件名为上一个文件的最后一条消息的offset值。索引文件是稀疏索引。所谓稀疏索引说白了就是说不是每条消息都有索引,间隔几条才会有。数据文件也叫日志文件,里面都是一条条消息数据。

Kafka实际项目使用的思考:切换加密集群,安全上的需要,连接Kafka集群需要加密,使用的SASL简单认证和安全层。假设说我们使用的是用户名密码+SSL认证。

kafka参数调优:

在项目中实际使用,很多人都是网上copy对应的配置,并不知道他们之前的参数的相互影响。比如出现rebalance后产生的结果是具体以哪种方式引起的排查,我列举几种原因:

1.数据量大,消费不及时引起循环堆积

2.超时时间配置过小

3.批处理的时效性过慢

问题排查:当数据量大的时候,一次性获取500条数据,但是实际吞吐时长已经超过了心跳检测时间,那么就可能导致数据在偏移到一定数值时,被判定这个消费组挂掉,就直接离线,频繁触发rebalance这种情况。

解决方式:先知道当前获取一批数据消费时间,觉得过长可以优化逻辑(治本)以及修改max-poll-records拉取的批次数(减少批次数,只治标),适当增加heartbeat-interval-ms的检测时间,同时要保证session-timeout-ms的时间要大于heartbeat-interval-ms,不然也会修改参数无效这种情况。

调优的配置文章来源地址https://www.toymoban.com/news/detail-474756.html

# 消费组
group-id: in-tsp-pre
# 偏移量获取方式
auto-offset-reset: latest
# 是否自动提交
enable-auto-commit: false
# auto-commit-interval: 100
# 批次获取数
max-poll-records: 500
# 批次提交最大时长
max-poll-interval-ms: 600000
# 心跳检测 低于session-timeout-ms的三分之一
heartbeat-interval-ms: 10000
# 超时时间
session-timeout-ms: 30000

到了这里,关于kafka基本架构以及参数调优的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 分布式 - 消息队列Kafka:Kafka生产者架构和配置参数

    生产者发送消息流程参考图1: 先从创建一个ProducerRecord对象开始,其中需要包含目标主题和要发送的内容。另外,还可以指定键、分区、时间戳或标头。在发送ProducerRecord对象时,生产者需要先把键和值对象序列化成字节数组,这样才能在网络上传输。 接下来,如果没有显式

    2024年02月13日
    浏览(35)
  • Kafka的基本概念和架构

    1.1 定义 Kafka是一个开源的分布式事件流平台 ( Event Streaming Platform ),被广泛用于高性能数据管道、流分 析、数据集成和关键任务应用。 1.2 各消息队列的比较 目前比 较常见的消息队列产品主要有 Kafka 、 RabbitMQ 、 RocketMQ 等。 在大数据场景主要采用 Kafka 作为消息队列。在

    2024年02月01日
    浏览(37)
  • kafka第一课-Kafka快速实战以及基本原理详解

    Kafka是一个分布式的发布-订阅消息系统,可以快速地处理高吞吐量的数据流,并将数据实时地分发到多个消费者中。Kafka消息系统由多个broker(服务器)组成,这些broker可以在多个数据中心之间分布式部署,以提供高可用性和容错性。 Kafka的基本架构由生产者、消费者和主题

    2024年02月16日
    浏览(30)
  • Kafka 相关参数以及可靠性

    1、消息存储可靠性 Kafka 通过持久化消息到磁盘来保障消息存储的可靠性,但是消息都是先写到操作系统的页缓存中,如果没有fsync到磁盘,存在消息丢失的可能性 Kafka 提供了两个参数来控制 Broker 的刷盘时机: log.flush.interval.ms long型,默认值null,单位ms,用于控制日志刷盘的

    2024年02月16日
    浏览(27)
  • kafka环境搭建以及基本原理

    kafka最先是作为日志数据采集,后用于消息传递,kafka能承担tb级别数据存储,确保服务的可用性,允许少量数据的丢失 作为消息中间件就有异步、解耦、削峰三个作用 单机ip:192.168.64.133 下载地址:Apache Kafka 选择kafka_2.13-3.4.0.tgz进行下载 关于kafka的版本,前面的2.13是开发

    2024年02月07日
    浏览(32)
  • 02_kafka_基本概念_基础架构

    至多一次:消息被确认消费后,删除消息;一般只允许被一个消费者消费,且队列中的数据不允许被重复消费。activeMQ 就是这种。 没有限制:消息可以被多个消费者同时消费,并且同一个消费者可以多次消费同一个记录;大数据场景。 集群中的一则消息也称为 Record ; Topi

    2024年02月13日
    浏览(33)
  • Kafka快速实战以及基本原理详解

    ​ ChatGPT对于Apache Kafka的介绍: Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发并于2011年开源。它主要用于解决大规模数据的实时流式处理和数据管道问题。 Kafka是一个分布式的发布-订阅消息系统,可以快速地处理高吞吐量的数据流,并将数据实时地分发到多个消费者

    2024年02月07日
    浏览(29)
  • golang—kafka架构原理快速入门以及自测环境搭建(docker单节点部署)

    Apache Kafka 是一个分布式的流处理平台。它具有以下特点: 支持消息的发布和订阅,类似于 RabbtMQ、ActiveMQ 等消息队列 支持数据实时处理 能保证消息的可靠性投递 支持消息的持久化存储,并通过多副本分布式的存储方案来保证消息的容错 高吞吐率,单 Broker 可以轻松处理数千

    2024年02月04日
    浏览(39)
  • java:Kafka生产者推送数据与消费者接收数据(参数配置以及案例)

    bootstrap.servers :Kafka集群中的Broker列表,格式为host1:port1,host2:port2,…。生产者会从这些Broker中选择一个可用的Broker作为消息发送的目标Broker。 acks :Broker对消息的确认模式。可选值为0、1、all。0表示生产者不会等待Broker的任何确认消息;1表示生产者会等待Broker的Leader副本确认

    2024年02月16日
    浏览(31)
  • 【Kafka系列 04】Kafka 性能调优,怎么做?

    通常来说,调优是为了满足系统常见的非功能性需求。在众多的非功能性需求中,性能绝对是我们最关心的那一个。不同的系统对性能有不同的诉求,比如对于数据库用户而言,性能意味着请求的响应时间,用户总是希望查询或更新请求能够被更快地处理完并返回。 对 Kafk

    2024年03月13日
    浏览(47)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包