Kafka第三课

Flume

由三部分 Source Channel Sink

可以通过配置拦截器和Channel选择器,来实现对数据的分流,

可以通过对channel的2个存储容量的的设置,来实现对流速的控制

Kafka

同样由三大部分组成 生产者 服务器 消费者

生产者负责发送数据给服务器

服务器存储数据

消费者通过从服务器取数据

但是,Kafka比Flume要更精细一点

生产者到服务器存数据(发数据):

获取配置->修改配置->拦截器->序列化器->分区器->sender 到broker

服务器如何存数据?

选举leader和发回消息

1.一个分区多个副本的controller同时去抢注册ZK

2.注册成功的监控broker节点变化

3.然后开始选举,选举出来将结果传给zk

4.其他的controller对从zk上同步节点信息(每个controller都会监控zk)

4.1.Leader挂了的话,重新选举, 然后其他controller重新同步

5.选举出来之后,生产者开始发送数据,数据由Leader同步到follower副

6.发送的数据就是Segment(默认1个G),

那么什么是Segment .log .timeindex .index .snapshot leader .metadata

50个consumer_offset 就是存储消费者读取的偏移量

7.向生产者应答

注意一下Leader挂是怎么挂?

1.broker直接挂 2. 数据太多,崩掉

消费者到服务器取数据:

消费者是按topic去读取的,一般都是一个分区对应一个消费者

消费者的offset由消费者自己提交到系统主题保存

按组按照消费策略进行读取

消费者组初始化

1.选出coordinator groupid的哈希值%50 这个组下的所有消费者提交offset都往这个分区提交

2.消费者实例到coordinator注册,然后coordinator选出一个consumer leader

3.Consumer leader制定一个消费方案,发给coordinator 然后coordinator转发

4.每个消费者都和coordinator保持心跳3s,超时(45s)移除该消费者,或者处理时间过长(超过5分钟),触发再平衡,重新制定消费方案

Kafka的高效读写

为什么?

1.Kafka本身分布式集群,分区技术,并行度高

2.读数据采用稀疏索引,可以快速定位要消费的数据

3.顺序写磁盘

他是如何顺序写磁盘的?

因为他的写入方式是追加写入

为什么顺序写磁盘快?

因为不需要寻址时间,而磁盘的寻址时间太长了

页缓存和零拷贝

什么是页缓存?

操作系统在内存中的缓存机制,

存: 存到页缓存 ->存到磁盘 取->先看页缓存有没有->没有就看磁盘

什么是零拷贝?

传输: 一般传输 ->s 内存->内核缓冲区->e网络设备 零拷贝 内存->网络设备

零拷贝: Kafka的数据加工处理操作交由Kafka生产者和Kafka消费者处理。而Broker应用层不关心存储数据,不用走应用层

消费者如何提高吞吐量?

1.如果消费者对分区不是1对1 ,加消费者

2.提高每批次拉数据的数量

相关推荐
ACP广源盛1392462567310 小时前
GSV5600@ACP#多接口协议转换芯片,物理 AI 便携终端的互联核心
大数据·人工智能·分布式·嵌入式硬件·spark
极客先躯14 小时前
高级java每日一道面试题-2026年02月12日-实战篇[Docker]-什么是容器的 Seccomp 配置?如何自定义?
java·运维·分布式·docker·容器·自动化·文件
Francek Chen14 小时前
【大数据处理与分析】MapReduce:06 MapReduce编程实践
大数据·hadoop·分布式·mapreduce
小马爱打代码15 小时前
Kafka消息队列监控:Topic积压、吞吐量、Broker负载及消费者组全观测
分布式·kafka
轻口味15 小时前
轻规划鸿蒙开发实战10:分布式数据同步深度博弈,UserId 隔离与并发数据冲突消解机
分布式·华为·harmonyos·鸿蒙
Solis程序员15 小时前
Raft:分布式系统的定海神针
java·分布式·kafka·rabbitmq·agent·raft
我是一颗柠檬16 小时前
【Java项目技术亮点】Leaf号段模式双Buffer优化
java·开发语言·分布式·后端·架构
芒鸽16 小时前
HarmonyOS 分布式开发实战:设备协同、数据共享与跨设备迁移
分布式·wpf·harmonyos
省四收割者16 小时前
从硬件中断到分布式协程:全景解构高并发机制与 C / Golang 的巅峰对决
c++·分布式·嵌入式硬件·golang
知识分享小能手16 小时前
Hadoop学习教程,从入门到精通, HBase 分布式数据库 — 完整知识点与案例代码(8)
数据库·hadoop·分布式