Go操作kafka----kafka简介

一.kafka简介

1.介绍
kafka是一个分步数据流平台,可以分布在单个服务器上,也可以分布在多个服务器上部署形成集群,提供了发布和订阅功能,使用者可以发送数据到kafka中,也可以从kafka中读出数据,kafka具有高吞吐,低延迟,高容错等特点。

2.kafka集群的架构
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.生产者往kafka发送数据的流程
在这里插入图片描述
4.kafka选择分区的模式
1.指定分区
2.指定key,kafka根据key做hash然后决定写哪个分区
3.轮询方式

5.生产者往kafka发送数据的模式
0:把数据发送给leader就算成功,效率最高安全性最低
1:把数据发送给leader,等待leader回ACK
all:把数据发送给leader,确保follower从leader拉取数据回复ACK给leader,leader再回复ACK

6.分区存储文件的原理
Partition在服务器上的表现形式是一个一个的文件夹,每个partition的文件夹下面会有多组segment文件,每组segment文件夹又包含.index文件,.log文件,.timeindex文件三个文件,其中.log文件就是实际存储message的地方,而.index和.timeindex文件为索引文件,用于检索消息。

7.消费者消费数据的原理
多个消费者实例可以组成一个消费组,并用一个标签来识别这个消费者组,一个消费者组中的不同消费者实例可以运行在不同的进程甚至不同的服务器上。
如果所有的消费者实例都在同一个消费者组中,那么消息记录会被很好的均衡的发送到每个消费者实例。
如果所有的消费者实例都在不同的消费者组,那么每一条记录会被广播到每一个消费者实例。

8.为什么kafka很快
每个分区都是一个顺序的、不可变的消息队列,并且可以持续添加。分区中的消息都被分配了一个序列号,称之为偏移量(offset),在每个分区中此偏移量都是唯一的。
例如,读取offset=368776的Message:
第一步:查找Segment File.
00000000000000000000.index表示最开始的文件,其实偏移量(offset)为0;第二个文件00000000000000368769.index的其实偏移量为368770(368769+1),依次类推。以其实偏移量命名并排序这些文件,只要根据offset二分查找文件列表,就可以快速定位到具体文件。

发布了38 篇原创文章 · 获赞 25 · 访问量 9724

猜你喜欢

转载自blog.csdn.net/weixin_44517681/article/details/104354595