Apache Kafka 快速学习大纲
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
- 查看服务器中的所有 ic
kafka-ics.sh --bootstrap-server kafka.big-data.svc.cluster.local:9092 --describe
- 创建 demo ic
kafka-ics.sh --bootstrap-server kafka.big-data.svc.cluster.local:9092 --create --partitions 3 --replication-factor 3 --ic demo
- 删除 ic
kafka-ics.sh --bootstrap-server kafka.big-data.svc.cluster.local:9092 --delete --ic demo生产者命令
bin/kafka-console-producer.sh
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。
- 发送消息
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
- 消费消息
bin/kafka-console-consumer.sh --bootstrap-server kafka.big-data.svc.cluster.local:9092 --ic demo
- 把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
-
为何使用消息系统
-
我们为何需要搭建Apache Kafka分布式系统
-
消息队列中点对点与发布订阅区别
-
apache Kafka概要介绍
-
Kafka副本同步机制理解
-
Kafka文件存储机制那些事
-
Kafka数据可靠性与一致性解析
-
Kafka集群partitions/replicas默认分配解析
-
Apache Kafka消息传递可靠性分析
-
Apache Kafka中Folloer如何与Leader同步数据
-
Apache Kafka Broker HA机制
-
《Kafka & Mafka技术分享及讨论》
-
Kafka内部网络框架模型分析
-
Kafka延时分析
-
MQ关注和共性分享
-
Kafka delivery保证
-
apache Kafka Replication设计分析
-
带你去MQ的世界旅行
-
kafka运行环境优化分析
-
kafka server部署配置优化
-
基于Kafka如何搭建一个稳定可靠的zk集群服务
-
Kafka Producer机制优化-提高发送消息可靠性
-
Kafka Consumer机制优化-保证每条消息至少消费一次
-
Mafka消息中间件系统SLA
-
基于Kafka时间粒度消息回溯设计方案
-
kafak安装与使用
-
apache kafka中server.properties配置文件参数说明
-
Apache kafka客户端开发-java
-
kafka的ZkUtils类的java版本部分代码
-
kafka log4j配置
-
apache kafka的consumer初始化时获取不到消息
-
apache kafka源码构建打包
-
apache kafka迁移与扩容工具用法
-
如何在Kafka上创建一个Topic
-
如何在Kafka上对一个Topic增加partition
-
如何在Kafka上对一个Topic增加replicas
-
如何在Kafka中修改Topic的preferred replica
-
如何在Kafka中对Topic的leader进行均衡
-
apache kafka中ic级别配置
-
.apache Kafka下线broker的操作
-
kafka LeaderNotAvailableException
-
kafka.mon.ConsumerRebalanceFailedException异常解决方法
-
apache Kafka中partition的leader为-1情况分析
-
kafka-0.8.2.1-src编译报错解决方法
-
Consumer rebalance失败问题定位和解决思路
-
线上Mafka集群网卡打爆原因分析及解决方案
-
apache kafka监控系列-监控指标
-
apache kafka jmx监控指标参数
-
apache kafka监控系列-kafka-eb-console
-
apache kafka监控系列-KafkaOffsetMonitor
-
雅虎开源管理工具Kafka Manager
-
Zookeeper管理或操作Apache Kafka
-
apache kafka性能测试命令使用和构建kafka-perf
-
Kafka性能测试报告(虚拟机版)
-
kafka在zookeeper中存储结构
-
kafka replication设计机制
-
Kafka Producer处理逻辑
-
apache kafka源代码工程环境搭建(IDEA)
-
Kafka Controller设计机制
-
kafka broker内部架构
-
apache kafka源码分析走读-kafka整体结构分析
-
apache kafka源码分析走读-Producer分析
-
apache kafka性能优化架构分析
-
apache kafka源码分析走读-server端网络架构分析
-
apache kafka源码分析走读-ZookeeperConsumerConnector分析
-
kafka & mafka client开发与实践
-
kafka的ZookeeperConsumer实现
-
Kafka通过timestamp获取offset的机制详解
-
apache Kafka是如何实现删除数据文件(日志)的
-
kafka broker shutdon过程分析
-
apache kafka系列之源码分析走读-kafkaApi详解
-
apache kafka系列之源码分析走读-SocketServer分析
-
mafka平台架构
-
Mafka Roadmap和实现
- 腾讯 VS 阿里 VS 携程消息中间件设计方案及思路
-
Kafka0.8.2.1删除ic逻辑
-
探讨kafka的分区数与多线程消费
-
flume写入kafka,使用自带的.apache.flume.sink.kafka.KafkaSink启动sink报错
-
Kafka集群平滑重启
-
Kafka副本管理—— 为何去掉replica.lag.max.messages参数
-
Kafka原理以及设计实现思想
-
Linkedin Kafka Monitor安装使用
-
Kafka如何创建ic?
-
Kafka源码分析 KafkaApis(LogAppend)
-
Kafka源码分析 ISR和Replica
-
Kafka源码深度解析
-
分布式消息队列RocketMQ与Kafka的18项差异之“拨乱反正”
-
分布式消息队列RocketMQ与Kafka的18项差异之“拨乱反正“之2
-
Apache Kafka最佳实践
-
解决kafka集群由于默认的__consumer_offsets这个ic的默认的副本数为1而存在的单点故障问题
-
kafka数据可靠性深度解
-
kafka【系统配置说明】 - server.properties
-
kafka学习笔记知识点整理
-
Kafka 高性能吞吐
-
Kafka服务端异步刷盘性能测试
-
Producer 性能调优公式及验证
-
Producer -Metadata的数据结构与读取、更新策略
-
kafka数据可靠性深度解读