分布式消息队列kafka

本文深入解析了LinkedIn开源的Kafka分布式消息系统,探讨其高吞吐率、低延迟、可扩展性、持久性和高容错性的特点。通过介绍Kafka的架构,包括producer、broker、partition与topic、consumer等组件的工作原理,以及服务保证和容错机制,展现了Kafka在监控、消息队列、用户活动追踪等场景的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

kafka是Linkedin开源的分布式发布-订阅消息系统(消息队列)

kafka特点

1 高吞吐率、低延迟,每秒处理几十万消息,延迟最低几毫秒

2 可扩展性,支持动态扩展节点数据

3 持久性与可靠性,数据被持久化磁盘,支持数据多副本防止数据丢失

4 高容错,允许节点失败

5 高并发,支持上千个客户端同时读写


架构如图


kafka:produce

1 向broker发送消息

2 可通过任意一个broker发现其他broker的位置信息

3 消息组成 topic key value timestamp


kafka:broker

1 producer和consumer之间的桥梁

   从producer端接收消息,并保存下来

   将消息发送给订阅的consumer

2 可将消息可靠地缓存一段时间

   每个消息保存成多副本(默认3)

   可设置保存时间(默认时间)


kafka:partition与topic

topic

  用户划分message的逻辑概念,一个topic可以分布到不通的broker上

partition

  kafka横向扩展和一切并行化的基础,每个topic至少分成1个partition

  消息在partition中是有编号的,称为“offset”

  kafka以partition为单位对消息进行备份(replica),每个partition可以配置至少有1个replica


kafka:consumer

  负责从kafka中读取数据,并进行处理

Consumer group

  多个consumer可形成一个group,同时读取某个topic。

  每个consumer读取一个或多个partition

Consumer position

  每个consumer自己维护读取的位置(offset,一旦挂掉后,重启可继续读取)




kafka架构图


kafka:服务保证

顺序保证

  同一个producer发送到单个topic的同一partition的消息是顺序的

  Consumer按照消息在日志中的写入顺序读取消息

Producer产生的数据由Consumer消费

容错

  如果消息的副本数是N,则N-1台机器宕机后不会导致丢失数据

应用场景 :监控 、消息队列、站点的用户活动追踪 、流处理、



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值