Kafka3.x最全面的总结

本文详细介绍了Kafka3.x,从消息队列的定义、基础架构到生产者、消费者和broker的工作流程,涵盖了数据可靠性和数据去重策略,以及如何提高生产者吞吐量。通过对Kafka各种特性的深入解析,展示了Kafka在大数据实时处理领域的优势。
摘要由CSDN通过智能技术生成

一、概述

  (一)、kafka的定义

      1、定义

        1)kafka传统的定义:kafka是一个分布式的基于发布/订阅模式的消息队列,主要用于大数据实时处理领域

        2)kafka最新的定义:kafka是一个开源的分布式事件流平台(event stream platform),主要用高性能数据管道,流分析,数据集成和关键任务等领域

      2、消息队列

        目前市面上大部分公司采用的消息队列主要有kafka,activeMQ,rabbitMQ,rocketMQ等。kafka作为消息队列,主要应用于大数据场景下,而在Javaee开发中更多采用的是activeMQ,rabbitMQ,rockectMQ等。

      3、消息队列的应用场景

        传统的消息队列的主要应用场景包括:缓冲/削峰,解耦和异步通信

        缓冲/削峰:在实际的应用系统中,如果数据生产端(比如其前端)的数据产生的速率与数据处理端(服务端)的数据处理速率相当或小于时,整合系统运行就不会有很大的压力。但是当系统上了个秒杀活动或者双11活动到来,前端用户猛增,数据率随之也会增加数倍,甚至是数十倍。但是服务端需要对数据进行处理,持久化等操作,处理速率必然跟不上数据产生的速度,久而久之系统就会产生数据积压,最终就有可能导致系统的崩溃。在数据生产端和处理端之间使用消息队列就可以解决这种问题。此时,消息队列就发挥了不同系统之间数据的缓冲和削峰的作用。数据生产端将数据发送到消息队列,然后随即返回响应,这个过程相对来说是非常快的。数据处理端则根据自己的处理速度从消息队列中拉取数据。示意图如下:

 不使用消息队列的情况

 使用消息队列的情况

        解耦:允许独立的拓展和修改两边的处理过程,但两边需要确保使用相同的接口约束。

        异步通信:将处理的用户数据写入到消息队列中,并立即返回处理结果,队列中数据由另一个线程拉取出来做响应的处理。下面是用户注册,并把注册成功的消息发送到用户手机上的同步处理和异步处理的流程。

  (二)、kafka基础架构

      1、消息队列的两种模式

        1)点对点模式

                                消费者主动拉取数据,数据消费完后就会在队列中删除

        2)发布/订阅模式        

                                可以有有多个主题(topic)

                                消费者拉取数据消费完后,不删除数据

                                每个消费者相互独立,都可以消费到数据  

      2、基础架构

      

       1)producer:消息生产者,就是向broker发送消息的客户端

    2)consumer:消息消费者,就是从broker拉取数据的客户端

    3)consumer group:消费者组,由多个消费者consumer组成。消费者组内每个消费者负责消费不同的分区,一个分区只能由同一个消费者组内的一个消费者消费;消费者组之间相互独立,互不影响。所有的消费者都属于某个消费者组,即消费者组是一个逻辑上的订阅者。

    4)broker:一台服务器就是一个broker,一个集群由多个broker组成,一个broker可以有多个topic。

    5)topic:可以理解为一个队列,所有的生产者和消费者都是面向topic的。

    6)partition:分区,kafka中的topic为了提高拓展性和实现高可用而将它分布到不同的broker中,一个topic可以分为多个partition,每个partition都是有序的,即消息发送到队列的顺序跟消费时拉取到的顺序是一致的。

    7)replication:副本。一个topic对应的分区partition可以有多个副本,多个副本中只有一个为leader,其余的为follower。为了保证数据的高可用性,leader和follower会尽量均匀的分布在各个broker中,避免了leader所在的服务器宕机而导致topic不可用的问题。

    8)leader:多个副本的主副本,生产者发送的数据和消费者消费的数据都是通过leader进行处理的。

    9)follower:多个副本中除了leader副本,其余的均为follower副本,也即从副本。从副本不会和生产者和消费者提供服务,而是实时同步主副本的数据。当主副本宕机后,通过一定算法选举出新的从副本成为主副本,继续为生产者和消费者提供服务。

    

  (三)、kafka常用命令行操作

    1、主题相关

参数 描述
--bootstrap-server <String: server toconnect to> 连接的 Kafka Broker 主机名称和端口号。
--topic <String: topic>  操作的 topic 名称。
--create  创建主题。
--delete  删除主题。
--alter  修改主题。
--list  查看所有主题。
--describe  查看主题详细描述。
--partitions <Integer: # of partitions>  设置分区数。
--replication-factor<Integer: replication factor>  设置分区副本。
--config <String: name=value>  更新系统默认的配置。

    2、生产者相关

参数  描述
--bootstrap-server <String: server toconnect to>  连接的 Kafka Broker 主机名称和端口号。
--topic <String: topic>  操作的 topic 名称。

    3、消费者相关

参数  描述
--bootstrap-server <String: server toconnect to>  连接的 Kafka Broker 主机名称和端口号。
--topic <String: topic>  操作的 topic 名称。
--from-beginning  从头开始消费。
--group <String: consumer group id> 
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值