Kafka卡夫卡详解

Kafka是一种分布式的、可分区的、可复制的消息系统。本文详细介绍了Kafka的设计方式,包括Topics(主题)、Producers(生产者)和Consumers(消费者)。Kafka通过对消息进行主题划分,并采用分区和副本机制来实现高可用性和高性能。

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


参考:https://www.cnblogs.com/shijiaoyun/p/4860734.html?tvd=&from=timeline&isappinstalled=1


Kafka设计方式

Kafka是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独特的设计。

独特设计方式:
在这里插入图片描述
Topic:对一组信息的归纳,消息以topic为单位进行归纳
Producer:向Kafka发布消息的程序
Consumer:预订topics并消费消息的程序

Kafka以集群的方式运行,可以由一个或多个服务组成,每个服务叫做一个broker.
producers通过网络将消息发送到Kafka集群,集群向消费者提供消息


Topics

对每个消息,Kafka对其日志进行了分区:
在这里插入图片描述
每个分区都由一系列有序的、不可变的消息组成,这些消息被连续的追加到分区中。分区中的每个消息都有一个连续的序列号叫做offset,用来在分区中唯一的标识这个消息(consumer来维护:一般情况下随着consumer不断的读取消息,这offset的值不断增加,但其实consumer可以以任意的顺序读取消息,比如它可以将offset设置成为一个旧的值来重读之前的消息)。

分区目的:每个日志小,可在单个服务上保存,每个分区可以单独发布和消费
–> 并发
–> 分布式:

  • 每个分区在Kafka集群的若干服务中都有副本,持有副本的服务可以共同处理数据和请求
  • 每个分区都由一个服务器作为“leader”,零或若干服务器作为“followers”,leader负责处理消息的读和写,followers则去复制leader(如果leader down了,followers中的一台则会自动成为leader。集群中的每个服务都会同时扮演两个角色:所持有的一部分分区的leader,同时作为其他分区的followers,集群就会据有较好的负载均衡。)

Producers

Producer将消息发布到它指定的topic中,并负责决定发布到哪个分区。

通常简单的由负载均衡机制随机选择分区,但也可以通过特定的分区函数选择分区(通常更多)。

Consumers

发布消息通常有两种模式:队列模式(queuing)和发布-订阅模式(publish-subscribe)。

  • 队列模式
    consumers可以同时从服务端读取消息,每个消息只被其中一个consumer读到
  • 发布-订阅模式
    消息被广播到所有的consumer中;
    Consumers可以加入一个consumer ,共同竞争一个topic,topic中的消息将被分发到组中的一个成员中。
    在这里插入图片描述
    Kafka只能保证一个分区之内消息的有序性,在不同的分区之间是不可以的。如果需要topic中所有消息的有序性,那就只能让这个topic只有一个分区,当然也就只有一个consumer组消费它。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值