侧边栏壁纸
  • 累计撰写 21 篇文章
  • 累计创建 14 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

kafka随手记

Administrator
2024-08-03 / 0 评论 / 0 点赞 / 4 阅读 / 6078 字

kafka知识点

主要目的:解决不同微服务处理效率不同步的问题。

kafka名词:

broker:可以理解为kafka集群中的节点,如果是k8s的话就是里面的node

topic,每条发布到kafka集群的消息都属于某个类别,这个类别就叫做topic;

partition:物理概念,相当于topic上的分区

segement:同样是物理概念,是partition层面的分区,而且每个segement分成两部分 .log, .index,其中 .index文件,其中.index文件是索引文件,主要用于快速查询 .log 文件当中数据的偏移量位置;

producer:生产者,负责发布消息到broker

consumer:消费者,向 kafka 的 broker 中读取消息的客户端;

consumer group:消费者组,每一个 consumer 属于一个特定的 consumer group(可以为每个consumer指定 groupName);同一个消费者组会维护一个消费表,而且一个partition只能被一个消费者组中的一个消费者消费,可以被不同消费者组中的消费者消费。可以理解为组内同步和组间互斥。

.log:存放数据文件;

.index:存放.log文件的索引数据。

Kafka特点:

1.可靠性:具有副本及容错机制。

img

每个partition分区都存在partition replicas(分区副本),符合分布式中高可用的特性,一主多从分布,follower通过拉的方式从leader同步数据。而且消费者和生产者都是从leader读写数据,不与follower交互

2.可扩展性:kafka无需停机即可扩展broker及broker上线。

3.持久性:数据存储到磁盘上,持久性保存。但是如果磁盘容量不足会按照时间顺序清除数据。

4.性能:kafka具有高吞吐量。达到TB级的数据,也有非常稳定的性能。因为是异步的,所以一般只用等待一个ack信号即可返回,提高吞吐量。

5.速度快:顺序写入和零拷贝技术使得kafka延迟控制在毫秒级。

kafka整体框架图:

img

img

kafka支持消息持久化,消费端是主动拉取数据,消费状态和订阅关系由客户端负责维护,消息消费完后,不会立即删除,会保留历史消息。因此支持多订阅时,消息只会存储一份就可以。

高性能高扩展高可用:

kafka如何实现的高性能:

按照消息进行分类,一类是一个topic,而且消费者和生产者都是互斥访问消息队列的,所以为了高并发,将topic拆分成多个partition,每个消费者负责一个partition,这样就大大降低了争抢,提高了效率。

kafka如何实现的高扩展性:

kafka实行集群,将一个topic中的partition分布部署在多个机器上,注意,这里不是将topic分布到不同broker上,而是将topic 的partition分散到集群broker上。

kafka如何实现高可用:

加副本,给每个partition加replicas副本,leader负责读写请求,follower只管同步leader的消息,而且需要将leader和follower分散到不通的broker上,如果leader挂了就从follower上选一个出来。

持久化和过期策略:

持久化是为了防止突发情况,使得机器重启后还能读取数据,过期策略是为了防止过度占用磁盘空间,一般是一定时间过后或者磁盘容量超过一定阈值之后就会清理掉之前的数据。


0

评论区