目录

kafka概述与入门

定义

Kafka 是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。

消息队列介绍

使用消息队列好处

  • 解耦
  • 削锋
  • 异步

消息队列的两种模式

  • 点对点模式(一对一,消费者主动拉取数据,消息收到后消息清除)

    消息生产者生产消息发送到 Queue 中,然后消息消费者从 Queue 中取出并且消费消息。

    消息被消费以后,queue 中不再有存储,所以消息消费者不可能消费到已经被消费的消息。 Queue 支持存在多个消费者, 但是对一个消息而言, 只会有一个消费者可以消费。

    http://img.cana.space/picStore/20201212144616.png

  • 发布/订阅模式(一对多,消费者消费数据之后不会清除消息)

    消息生产者(发布)将消息发布到 topic 中,同时有多个消息消费者(订阅)消费该消 息。和点对点方式不同,发布到 topic 的消息会被所有订阅者消费。

    http://img.cana.space/picStore/20201212144648.png

分布/订阅模式又分成两种模式:推/拉

  • 由服务器推
  • 由Consumer拉

kafka选择了拉取模式,这样的好处是:消息处理速度由Consumer自己决定,防止推的时候Consumer端系统压力过大。

拉取的缺点:Consumer端长轮询,当队列中长时间内没有可消费的消息时会浪费系统资源。

kafka基础架构

http://img.cana.space/picStore/20201214195938.png

  • Broker:一台 kafka 服务器就是一个 broker。一个集群由多个 broker 组成。一个 broker 可以容纳多个 topic。
  • topic:主题,对消息进行分类,主题可以进行分区,可以理解为一个队列,生产者和消费者面向的都是一个 topic;
  • partition:分区,提高消息发送和收取的并发,每个 partition 是一个有序的队列;
  • Leader:是指分区的Leader而不是broker,每个分区多个副本的“主”,生产者发送数据的对象,以及消费者消费数据的对 象都是 leader。
  • Follower:副本,提供副本作用,注意无论是生产者还是消费者都是连接Leader,Follower仅提供副本作用,当Leader挂掉,Follower可以升级成Leader再对外提供功能。
  • zk:管理kafka集群,保存Consumer端消息消费的位置信息(0.9版本之前offset存储在zk,0.9版本及之后offset存储在kafka本地,因为Consumer端既要连接分区Leader,还要维护和zk的连接,当消息处理速度很快,与zk的连接过于频繁降低消费能力)

注意:同一个分区可以被不同消费组进行消费,但是同一个组里只能由一个消费者进行消费,所以当消费者组里的机器数和一个topic对应的分区数相等时,并发最高。

安装

命令行操作