关于消息队列Kafka的一些常见问题

本文详述了Kafka的架构模型、可用性、负载均衡、消息安全性以及潜在问题。Kafka通过批量处理、顺序写入提高吞吐量,利用Zookeeper进行元数据管理和负载协调,保证分区内的消息顺序,但可能面临消息丢失、重复消费等问题。
摘要由CSDN通过智能技术生成

前沿:

          首先从整体流程介绍一下kafka的使用架构流程图(多个producer、一个topic,一个分组,三个partition、一个分组下的三个consumer):

(1)多个producer可以往一个topic发送消息,同时多个Consumer可以注册该topic,消费该数据。

(2)简单理解topic,Topic在逻辑上可以被认为是一个queue,每条消费都必须指定它的Topic,可以简单理解为必须指明把这条消息放进哪个queue里。

(3)顺序性:多个producer往topic发送数据可以是无序的,消息存储在broker里面是有序的,但是多个consuemr之间是获取消息是无序的。(kafka只能保证一个pratition里面的消息是顺序的:只有一个poartition,和一个consumer时,消息是有序的)

         具体: 多个consumers同时从这个服务器消费消息,服务器就会以消息存储的顺序向consumer分发消息。虽然服务器按顺序发布消息,但是消息是被异步的分发到各consumer(保持并发性)上,所以当消息到达时可能已经失去了原来的顺序

(4)partition与group以及consumer数量的对应关系以及匹配关系

       一个topic 可以配置几个partition,produce发送的消息分发到不同的partition中,consumer接受数据的时候是按照group来接受,kafka确保每个partition只能同一个group中的同一个consumer消费,如果想要重复消费,那么需要其他的组来消费。Zookeerper中保存这每个topic下的每个partition在每个group中消费的offset 。

     (a)一个partition下面只有一个分组(group)

                 同一消息,只会被该gruop,消费不会被重复消费;

     (b)一个partition下面多个分组时

                同一消息会被多个分组消费

以下是讨论只有一个分组的情况

     数量关系:

     1)、一个partition、多个consumer时,partition里消息都会堆积到一个broker中,导致硬盘被沾满

     2)、多个partition,一个consumer时,所有partition里的消息都会发往该consumer,如果consumer不止一个时,可能会存在有的consumer里面数据消费的多,有的消费的少;

     3)、partition数量=consuerm时,消息可以达到负载均衡。

      匹配关系,partition是如何与group对应的

          原理:Zookeerper中保存这每个topic下的每个partition在每个group中消费的offset 。新版kafka把这个offsert保存到了一个__consumer_offsert的topic下 ,这个__consumer_offsert 有50个分区,通过将group的id哈希值%50的值来确定要保存到那一个分区

     

Kafka一个高吞吐量的分布式消息队列系统,它具有广泛的应用场景。以下是Java消息队列Kafka的一些常见应用场景: 1. 实时日志收集和分析:Kafka可以用于收集和存储大规模分布式系统的日志数据。通过将日志数据发送Kafka集群,可以实时地将日志数据传输到各种消费者,如实时监控系统、日志分析系统等。 2. 流式处理:Kafka可以作为流式处理平台的基础,用于构建实时数据处理和分析系统。通过将数据流发送Kafka主题,可以实现实时的数据处理和分析,如实时计算、实时推荐等。 3. 消息队列Kafka作为消息队列,可以用于解耦和缓冲不同组件之间的通信。生产者将消息发送Kafka,消费者从Kafka订阅并处理这些消息,实现了不同组件之间的解耦和异步通信。 4. 大数据集成:Kafka可以与其他大数据技术集成,如Hadoop、Spark等。通过将数据从这些系统发送Kafka,可以实现数据的实时传输和处理。 5. 数据备份和恢复:Kafka提供了数据持久化的功能,可以将数据写入磁盘并进行备份。这使得Kafka可以用于数据的持久化存储和故障恢复。 6. 事件驱动架构:Kafka可以作为事件驱动架构的基础,于构建高可扩展的微服务架构。通过将事件发送Kafka,不同的微服务可以订阅并处理这些事件,实现了松耦合和可扩展的架构。 以上是Java消息队列Kafka的一些常见应用场景。根据具体的业务需求和系统架构,还可以有其他更多的应用场景。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值