Kafka入门-1
视频资料,b站:https://www.bilibili.com/video/BV1eD4y1C7uM/?spm_id_from=333.788.recommend_more_video.14&vd_source=37596bc6f952081640b3f38ea9f6a2cb
深入理解 Kafka: 核心设计与实践原理。PDF 书资料: https://book.csdn.net/book/e2cca041f1e34fbd9b6e8f602c9f2501/chapter/1
介绍
Kafka 起初是由 Linkedin 公司采用 Scala语言开发的一个多分区、多副本且基于 Zookeeper 协调的分布式消息系统,现已捐给 Apache基金会。
目前 Kafka 已经定位为一个分布式流式处理平台,它以高吞吐,可持久化,可水平扩展,支持流数据处理等多种特性而被广泛使用。
Kafka 定义
传统定义:Kafka 是一个分布式的基于发布/订阅模式的消息队列,主要应用于大数据实时处理领域。
最新定义:Kafka 是一个开源的分式布流平台,被数千家公司用于高性能数据管道,流分析,数据集成和关键任务应用。
消息队列
消息队列的作用
- 削峰、缓冲
- 解藕
- 异步通信
消息队列的两种模式
点对点模式
参考 redis 队列,先进先出。
producer -> Message Queue -> consumer
发布/订阅模式
-
可以有多个 topic 主题(数据分类)
-
消费者消费数据之后,不删除数据
-
每个消费者相互独立,都可以消费到数据
基本概念
基础架构
一个典型的 Kafka 体系架构包括若干 Producer、若干 Broker、Cusumer,以及一个 ZooKeeper 集群。如图示。
(Kafka 基础架构图)
ZooKeeper 是 Kafka 用来负责集群元数据的管理、控制的选举等操作的。
Producer 将消息发产达到 Broker,Broker 负责将收到的消息存储到磁盘中,而 Consumer 负责从 Brocker 订阅并消费消息。
1、为方便扩展提高吞吐量,一个 topic 分为多个 partition
2、配合分区设计,提出消费者组的概念,组内每个消费者并行消费。
3、为提高可用性,为每个 Partition 增加或若干副本
(Kafka 基础架构)
术语
Producer:生产者
也就是发送消息的一方。生产者负责生产创建消息,投递到 Kafka 中
Consumer: 消费者
也就是接收消息的一方,消费者连接到 Kafka 上并接收消息,进而进行相应的业务逻辑处理
Broker: 服务代理节点
对于 Kafka 而言,Broker 可以简单地看作一个独立的 Kafka 服务节点或者 Kafka 服务实例。大多数情况下也可以将 Broker 看作一台 Kafka 服务器,前提是这台服务器只布署了一个 Kafka 实例。一个或者多个 Broker 组成了一个 Kafka 集群。
Topic :主题
Kafka 中的消息以主题为单位进行归类,生产者负责将消息发送到特定的主题,而消费者负责订阅主题并进行消费。
Partition: 分区
主题是一个逻辑上的概念,它还可以细分为多个分区,一个分区只属于单个主题,很多时间也会把分区称为主题分区(Topic-Partition)。同一主题下的不同分区包含的消息是不同的,分区在存储层面可以看作是一个可追加的日志文件,消息在被追加到分区日志文件的时候都会分配一个特定的偏移量(offset)。offset 是消息在分区中的唯一标识,Kafka 通过它来保证消息在分区内的顺序性,offset 不跨越分区,也就是说,Kafka 保证的是分区有序还不是主题有序。