kafka的个人理解 后端
由于本人在项目中的文件上传部门利用了kafka,所以记录一下一些浅显的个人理解什么是kafka
kafka是一个分布式流处置处罚平台,被设计用于高吞吐量、相对低延迟的实时数据流处置处罚。
kafka的核心包罗Broker、Topic、Partition、Producer、Consumer、Consumer Group、Offset、ZooKeeper。
[*]Broker:为Kafka集群中的每个节点,负责储存和传递消息。一个kafka集群可以包罗多个Broker,以实现高可用性和负载均衡。
[*]Topic:消息的逻辑分类;生产者将消息发送到特定的Topic,消费者从Topic中读取消息。
[*]Partition:每个Topic可以分为多个Partition,Partition是Kafka实现分布式存储和并行处置处罚的基础。Partition是一个有序的、不可变的消息队列。Partition可以分布在不同的Broker上,提高吞吐量和容错。
[*]Producer:生产者是想Kafka的Topic发送消息的客户端,生产者可以将消息发送到指定的Partition或者有Kafka的主动策略主动分配Partition。
[*]Consumer:消费者是从Kafka的Topic读取消息的客户端。可以以组的形式工作。每个组的消费者共同消费一个Topic的消息,实现负载均衡。
[*]Consumer Group:消费者组是消费者的聚集,共同消费一个Topic的消息。kafka会确保每个Partition只会被组内的一个消费者消费,从而实现并行处置处罚。
[*]Offset:Offset是消息在Partition中的唯一标识,表示消息的位置,消费者通过维护Offset来记录自己消费到的位置,以便重启时继续消费。
[*]Zookeeper:早期版本中ZooKeeper用来管理集群元数据、Broker状态和消费者的Offset。2.8开始,kafka引入了不依赖ZooKeeper的KRaft模式
为什么要选用kafka
[*]异步处置处罚和解耦;由于体系上传的文件根本上都是大文件,且文件必要进行后续处置处罚(格式转换),假如直接在哀求中同步实验,会导致响应时间变长。通过kafka,文件上传完成后,文件数据被发送到kafka的消息队列中,由消费者异步处置处罚。
[*]高并发支持和流量削峰;大量用户同时传文件会对体系造成巨大压力,导致后端服务过载,kafka可以作为缓冲区,平滑处置处罚峰值流量,并处置处罚高并发哀求。
[*]可靠性保证;上传过程中可能遇到网络抖动、服务瓦解,导致文件丢失。kafka提供了持久化储存和消息重试机制,确保消息不会丢失,纵然消费者服务暂时不可用,消息也会保留在kafka中。
kafka有什么缺点
复杂性高,运维本钱高,不得当低延迟场景,消息重复消费,功能相对单一,储存本钱高。
消息队列应用场景
kafka
[*]必要高吞吐量(如日志收集、大数据处置处罚)。
[*]必要分布式、高可用的消息体系。
[*]必要长时间存储消息(如日志流)。
[*]必要与其他大数据工具(如Hadoop、Spark)集成。
RabbitMQ
[*]必要低延迟、实时消息传递。
[*]必要丰富的功能(如延迟队列、优先级队列)。
[*]项目规模较小,运维本钱必要控制
RocketMQ
[*]必要高吞吐量和分布式能力。
[*]必要事务消息或延迟消息支持。
[*]主要面向中国市场(RocketMQ 在国内更流行)。
什么是Raft、Kraft
Raft是分布式一致性算法,用于在分布式体系中实现数据的强一致性。
Kraft是kafka基于raft实现的新模式,用于管理kafka的元数据。
Raft
raft集群中的节点分为Leader、Follower和Candidate三种脚色
Leader负责处置处罚客户端哀求、Follower负责被动同步数据,Candidate参与推举
Leader推举
推举触发
Follower 在超时时间内未收到 Leader 的心跳消息,会转变为 Candidate,发起推举。
投票哀求
Candidate 向其他节点发送投票哀求(RequestVote RPC)。每个节点在同一任期内只能投一次票。
推举成功
假如 Candidate 获得大多数节点的投票,则成为新的 Leader。新 Leader 向其他节点发送心跳消息,确立自己的领导职位。
推举失败
假如 Candidate 未获得大多数投票,则推举失败,等待下一次推举。
日志复制
客户端哀求
客户端向 Leader 发送哀求。Leader 将哀求作为日志条目追加到本地日志中。
日志复制
Leader 将日志条目发送给所有 Follower。Follower 将日志条目追加到本地日志中,并返回确认。
提交日志
当日志条目被复制到大多数节点后,Leader 将其标记为已提交。Leader 将已提交的日志条目应用到状态机,并通知客户端操作成功。
通知 Follower
Leader 在后续的心跳消息中通知 Follower 已提交的日志条目。Follower 将已提交的日志条目应用到本地状态机。
安全性
推举限制
只有拥有最新日志的节点才能成为 Leader。这避免了数据丢失的问题。
日志匹配:
Leader 和 Follower 的日志必须保持一致。假如 Follower 的日志与 Leader 不一致,Leader 会强制 Follower 复制自己的日志。
任期更新
每个节点都会维护当前任期号,确保不会接受旧任期的消息。
Raft的缺点
性能开销比力大,必要频仍心跳和日志复制;存在日志增长问题,必要定期压缩以减小开销。
Kraft
KRaft(Kafka Raft Metadata Mode)是 Apache Kafka 从 2.8 版本开始引入的一种新模式,用于管理 Kafka 的元数据。它基于 Raft 算法实现,目的是代替 Kafka 对 ZooKeeper 的依赖,简化 Kafka 的架构和运维。
KRaft 的核心特性
元数据管理
KRaft 利用 Raft 算法来管理 Kafka 的元数据(如 Broker 注册、Topic 配置、Partition 分配等)。
Controller 推举
Kafka 集群中的某些 Broker 被选为 Controller,通过 Raft 协议推举 Leader 并同步元数据。
去 ZooKeeper 化
KRaft 模式不再依赖 ZooKeeper,使 Kafka 成为一个完全自包罗的分布式体系。
高可用性
通过 Raft 协议,KRaft 模式可以保证元数据的高可用性和一致性。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]