1、Kafka概述
1.1 Kafka是什么
Kafka® is used for building real-time data pipelines and streaming apps. It is horizontally scalable, fault-tolerant, wicked fast, and runs in production in thousands of companies
Kafka被用于构建实时数据管道和流处理。支持横向扩展,容错,极快,能够在上千台服务器上运行。
Apache Kafka 是一个开源消息系统,由 Scala 写成。是由 Apache 软件基金会开发的一个开源消息系统项目。
Kafka 最初是由 LinkedIn 开发,并于 2011 年初开源。2012 年 10 月从 Apache Incubator 毕业。该项目的目标是为处理实时数据提供一个统一、高通量、低等待的平台。
官网:kafka.apache.org
Kafka 是一个分布式消息队列:生产者、消费者的功能。它提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现。
1.2 kafka中的设计模式
生产消费者模式,指的是由生产者将数据源源不断推送到消息中心,由不同的消费者从消息中心取出数据做自己的处理,在同一类别(同一个消息队列)下,所有消费者拿到的都是同样的数据;订阅发布模式,本质上也是一种生产消费者模式,不同的是,由订阅者首先向消息中心指定自己对哪些数据感兴趣,发布者推送的数据经过消息中心(即消息队列)后,每个订阅者拿到的仅仅是自己感兴趣的一组数据。这两种模式是使用消息中间件时最常用的,用于功能解耦和分布式系统间的消息通信。
1.2.1 生产者消费者模式
1.2.2 发布/订阅模式(一对多,数据生产后,推送给所有订阅者)
发布订阅模型则是一个基于推送的消息传送模型。发布订阅模型可以有多种不同的订阅者,临时订阅者只在主动监听主题时才接收消息,而持久订阅者则监听主题的所有消息,即使当前订阅者不可用,处于离线状态。
1.2.3 Kafka架构
- producer:生产者,数据的生产方
- consumer:消费者,数据的消费方
- broker:kafka的进程,表示消息队列申请的资源所在的资源单位(根据配置文件启动的kafka占用的进程)
- topic:消息队列,对应多个消息分区。