Apache Kafka 快速学习大纲

家电维修 2023-07-16 19:16www.caominkang.com家电维修技术

Kafka 概述

定义

Kafka传统定义Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。

Kafka 最新定义Kafka是一个开源的分布式事件流平台(Event Streaming Platform),被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用。

kafka 场景

(1)日志收集收集各种服务的 log,通过 kafka 以统一接口服务的方式开放 给各种 consumer,例如 Hadoop、Hbase、Solr 等;

(2)消息系统解耦和生产者和消费者、缓存消息等;

(3)用户活动跟踪Kafka 经常被用来记录 eb 用户或者 app 用户的各种活动,如浏览网页、搜索、点 击等活动,这些活动信息被各个服务器发布到 kafka 的 ic 中,然后订阅者通过订阅这些 ic 来做实时 的监控分析,或者装载到 Hadoop、数据仓库中做离线分析和挖掘;

(4)运营指标Kafka 也经常用来记录运营监控数据。包括收集各种分布式应用的数据,生产各种操作 的集中反馈,比如报警和报告;

基础组件
  • 角色

broker节点,就是你看到的机器

provider生产者,发消息的

consumer消费者,读消息的

zookeeper信息中心,记录 kafka 的各种元数据的地方

controller其中的一个 broker,作为 leader 身份来负责管理整个集群。如果挂掉,借助 zk 重新选主

  • 逻辑组件

ic主题,一个消息的通道,收发总得知道消息往哪投

partition分区,每个主题可以有多个分区分担数据的传递,多条路并行,吞吐量大

Replicas副本,每个分区可以设置多个副本,副本之间数据一致。相当于备份,有备胎更可靠

leader & folloer主从,上面的这些副本里有 1 个身份为 leader,其他的为 folloer。leader 处理 partition 的所有读写请求

实操 ics 操作
bin/kafka-ics.sh
参数描述–bootstrap-server 连接的 Kafka Broker 主机名称和端口号–ic 操作的 ic 名称–create创建主题–delete删除主题–alter修改主题–list查看所有主题–describe查看主题详细描述–partitions 设置分区数–replication-factor设置分区副本–config 更新系统默认的配置
  1. 查看服务器中的所有 ic
kafka-ics.sh --bootstrap-server kafka.big-data.svc.cluster.local:9092 --describe
  1. 创建 demo ic
kafka-ics.sh --bootstrap-server kafka.big-data.svc.cluster.local:9092 --create --partitions 3 --replication-factor 3 --ic  demo
  1. 删除 ic
kafka-ics.sh --bootstrap-server kafka.big-data.svc.cluster.local:9092 --delete --ic demo
生产者命令
 bin/kafka-console-producer.sh
参数名称描述bootstrap.servers生产者连接集群所需的broker地址清单。例如hadoop102:9092,hadoop103:9092,hadoop104:9092可以设置1个或者多个,中间用逗号隔开。注意这里并非需要所有的broker地址,因为生产者从给定的broker里查找到其他broker信息key.serializer 和 value.serializer指定发送消息的 key 和 value 的序列化类型。一定要写全类名buffer.memoryRecordAumulator 缓冲区总大小,默认32mbatch.size缓冲区一批数据最大值,默认16k。适当增加该值,可以提高吞吐量,如果该值设置太大,会导致数据传输延迟增加。linger.ms如果数据迟迟未达到 batch.size,sender 等待 linger.time之后就会发送数据。单位 ms,默认值是 0ms,表示没有延迟。生产环境建议该值大小为 5-100ms 之间。acks0生产者发送过来的数据,不需要等数据落盘应答。
1生产者发送过来的数据,Leader 收到数据后应答。
-1(all)生产者发送过来的数据,Leader+和 isr 队列
里面的所有节点收齐数据后应答。默认值是-1,-1 和 all 是等价的max.in.flight.requests.per.connection允许最多没有返回 ack 的次数,默认为 5,开启幂等性要保证该值是 1-5 的数字retries当消息发送出现错误的时候,系统会重发消息。retrie表示重试次数。默认是 int 最大值,2147483647。
如果设置了重试,还想保证消息的有序性,需要设置MAX_IN_FLIGHT_REQUESTS_PER_CONNECTION=1 否则在重试此失败消息的时候,其他的消息可能发送成功了retry.backoff.ms两次重试之间的时间间隔,默认是 100msenable.idempotence是否开启幂等性,默认 true,开启幂等性。pression.type生产者发送的所有数据的压缩方式。默认是 none,就是不压缩。
支持压缩类型none、gzip、snappy、lz4 和 zstd。
  1. 发送消息
bin/kafka-console-producer.sh --bootstrap-server kafka.big-data.svc.cluster.local:9092 --ic demo
> hello orld
> hello vip-mall
消费者命令
bin/kafka-console-consumer.sh
参数名称描述bootstrap.servers向 Kafka 集群建立初始连接用到的 host/port 列表。key.deserializer和value.deserializer指定接收消息的 key 和 value 的反序列化类型。一定要写全类名。group.id标记消费者所属的消费者组。enable.auto.mit默认值为 true,消费者会自动周期性地向服务器提交偏移量。auto.mit.interval.ms如果设置了 enable.auto.mit 的值为 true, 则该值定义了消费者偏移量向 Kafka 提交的频率,默认 5s。auto.offset.reset当 Kafka 中没有初始偏移量或当前偏移量在服务器中不存在(如,数据被删除了),该如何处理? earliest自动重置偏移量到最早的偏移量。 latest默认,自动重置偏移量为最新的偏移量。 none如果消费组原来的(previous)偏移量不存在,则向消费者抛异常。 anything向消费者抛异常。offsets.ic.num.partitions__consumer_offsets 的分区数,默认是 50 个分区。heartbeat.interval.msKafka 消费者和 coordinator 之间的心跳时间,默认 3s。该条目的值必须小于 session.timeout.ms ,也不应该高于session.timeout.ms 的 1/3。session.timeout.msKafka 消费者和 coordinator 之间连接超时时间,默认 45s。超过该值,该消费者被移除,消费者组执行再平衡。max.poll.interval.ms消费者处理消息的最大时长,默认是 5 分钟。超过该值,该消费者被移除,消费者组执行再平衡。fetch.min.bytes默认 1 个字节。消费者获取服务器端一批消息最小的字节数。fetch.max.ait.ms默认 500ms。如果没有从服务器端获取到一批数据的最小字节数。该时间到,仍然会返回数据。fetch.max.bytes默认 Default: 52428800(50 m)。消费者获取服务器端一批消息最大的字节数。如果服务器端一批次的数据大于该值(50m)仍然可以拉取回来这批数据,,这不是一个绝对最大值。一批次的大小受 message.max.bytes (broker config)or max.message.bytes (ic config)影响。max.poll.records一次 poll 拉取数据返回消息的最大条数,默认是 500 条。
  1. 消费消息
bin/kafka-console-consumer.sh --bootstrap-server kafka.big-data.svc.cluster.local:9092 --ic  demo
  1. 把ic 中所有的数据都读取出来(包括历史数据)
bin/kafka-console-consumer.sh --bootstrap-server kafka.big-data.svc.cluster.local:9092 --ic  demo --from-beginning
进阶 1. 自定义分区 2. 数据可靠性 ack 3. 数据去重 幂等 有序性 4. Broker 调优 5. 分区副本,分区的分配以及再平衡 6. 数据积压 吞吐量调优 学习资料

官方文档
滴滴KnoStreaming

Kafka使用场景
  1. 为何使用消息系统

  2. 我们为何需要搭建Apache Kafka分布式系统

  3. 消息队列中点对点与发布订阅区别

Kafka设计与原理分析
  1. apache Kafka概要介绍

  2. Kafka副本同步机制理解

  3. Kafka文件存储机制那些事

  4. Kafka数据可靠性与一致性解析

  5. Kafka集群partitions/replicas默认分配解析

  6. Apache Kafka消息传递可靠性分析

  7. Apache Kafka中Folloer如何与Leader同步数据

  8. Apache Kafka Broker HA机制

  9. 《Kafka & Mafka技术分享及讨论》

  10. Kafka内部网络框架模型分析

  11. Kafka延时分析

  12. MQ关注和共性分享

  13. Kafka delivery保证

  14. apache Kafka Replication设计分析

  15. 带你去MQ的世界旅行

Kafka优化分析
  1. kafka运行环境优化分析

  2. kafka server部署配置优化

相关设计方案
  1. 基于Kafka如何搭建一个稳定可靠的zk集群服务

  2. Kafka Producer机制优化-提高发送消息可靠性

  3. Kafka Consumer机制优化-保证每条消息至少消费一次

  4. Mafka消息中间件系统SLA

  5. 基于Kafka时间粒度消息回溯设计方案

Kafka开发与管理
  1. kafak安装与使用

  2. apache kafka中server.properties配置文件参数说明

  3. Apache kafka客户端开发-java

  4. kafka的ZkUtils类的java版本部分代码

  5. kafka log4j配置

  6. apache kafka的consumer初始化时获取不到消息

  7. apache kafka源码构建打包

  8. apache kafka迁移与扩容工具用法

Kafka运维手册
  1. 如何在Kafka上创建一个Topic

  2. 如何在Kafka上对一个Topic增加partition

  3. 如何在Kafka上对一个Topic增加replicas

  4. 如何在Kafka中修改Topic的preferred replica

  5. 如何在Kafka中对Topic的leader进行均衡

  6. apache kafka中ic级别配置

  7. .apache Kafka下线broker的操作

kafka异常分析
  1. kafka LeaderNotAvailableException

  2. kafka.mon.ConsumerRebalanceFailedException异常解决方法

  3. apache Kafka中partition的leader为-1情况分析

  4. kafka-0.8.2.1-src编译报错解决方法

Kafka线上CaseStudy
  1. Consumer rebalance失败问题定位和解决思路

  2. 线上Mafka集群网卡打爆原因分析及解决方案

kafka管理与运维监控相关
  1. apache kafka监控系列-监控指标

  2. apache kafka jmx监控指标参数

  3. apache kafka监控系列-kafka-eb-console

  4. apache kafka监控系列-KafkaOffsetMonitor

  5. 雅虎开源管理工具Kafka Manager

  6. Zookeeper管理或操作Apache Kafka

kafka性能测试
  1. apache kafka性能测试命令使用和构建kafka-perf

  2. Kafka性能测试报告(虚拟机版)

kafka源码分析
  1. kafka在zookeeper中存储结构

  2. kafka replication设计机制

  3. Kafka Producer处理逻辑

  4. apache kafka源代码工程环境搭建(IDEA)

  5. Kafka Controller设计机制

  6. kafka broker内部架构

  7. apache kafka源码分析走读-kafka整体结构分析

  8. apache kafka源码分析走读-Producer分析

  9. apache kafka性能优化架构分析

  10. apache kafka源码分析走读-server端网络架构分析

  11. apache kafka源码分析走读-ZookeeperConsumerConnector分析

  12. kafka & mafka client开发与实践

  13. kafka的ZookeeperConsumer实现

  14. Kafka通过timestamp获取offset的机制详解

  15. apache Kafka是如何实现删除数据文件(日志)的

  16. kafka broker shutdon过程分析

  17. apache kafka系列之源码分析走读-kafkaApi详解

  18. apache kafka系列之源码分析走读-SocketServer分析

Makfa平台
  1. mafka平台架构

  2. Mafka Roadmap和实现

业界MQ分析
  1. 腾讯 VS 阿里 VS 携程消息中间件设计方案及思路
学习成长
  1. Kafka0.8.2.1删除ic逻辑

  2. 探讨kafka的分区数与多线程消费

  3. flume写入kafka,使用自带的.apache.flume.sink.kafka.KafkaSink启动sink报错

  4. Kafka集群平滑重启

  5. Kafka副本管理—— 为何去掉replica.lag.max.messages参数

  6. Kafka原理以及设计实现思想

  7. Linkedin Kafka Monitor安装使用

  8. Kafka如何创建ic?

  9. Kafka源码分析 KafkaApis(LogAppend)

  10. Kafka源码分析 ISR和Replica

  11. Kafka源码深度解析

  12. 分布式消息队列RocketMQ与Kafka的18项差异之“拨乱反正”

  13. 分布式消息队列RocketMQ与Kafka的18项差异之“拨乱反正“之2

  14. Apache Kafka最佳实践

  15. 解决kafka集群由于默认的__consumer_offsets这个ic的默认的副本数为1而存在的单点故障问题

  16. kafka数据可靠性深度解

  17. kafka【系统配置说明】 - server.properties

  18. kafka学习笔记知识点整理

  19. Kafka 高性能吞吐

  20. Kafka服务端异步刷盘性能测试

  21. Producer 性能调优公式及验证

  22. Producer -Metadata的数据结构与读取、更新策略

  23. kafka数据可靠性深度解读

Copyright © 2016-2025 www.jianfeikang.com 建飞家电维修 版权所有 Power by