Kafka概述

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 基础架构

(Kafka 基础架构)

术语

Producer:生产者

也就是发送消息的一方。生产者负责生产创建消息,投递到 Kafka 中

Consumer: 消费者

也就是接收消息的一方,消费者连接到 Kafka 上并接收消息,进而进行相应的业务逻辑处理

Broker: 服务代理节点

对于 Kafka 而言,Broker 可以简单地看作一个独立的 Kafka 服务节点或者 Kafka 服务实例。大多数情况下也可以将 Broker 看作一台 Kafka 服务器,前提是这台服务器只布署了一个 Kafka 实例。一个或者多个 Broker 组成了一个 Kafka 集群。

Topic :主题

Kafka 中的消息以主题为单位进行归类,生产者负责将消息发送到特定的主题,而消费者负责订阅主题并进行消费。

Partition: 分区

主题是一个逻辑上的概念,它还可以细分为多个分区,一个分区只属于单个主题,很多时间也会把分区称为主题分区(Topic-Partition)。同一主题下的不同分区包含的消息是不同的,分区在存储层面可以看作是一个可追加的日志文件,消息在被追加到分区日志文件的时候都会分配一个特定的偏移量(offset)。

每个topic可以划分多个分区(每个Topic至少有一个分区),同一topic下的不同分区包含的消息是不同的。每一条消息发送到broker时,会根据partition的规则选择存储到哪一个partition。类似于分库分表的思想。

  • 单机也可以分区,只不过分的这些partition在一台机器而已
  • 创建时通过参数 --partition 指定分区个数
  • 分区文件在log.dirs配置的目录中,会有对应个数目录,命名规则是 <topic_name>-<partition_id>
  • 如果partition规则设置合理,那么所有的消息会均匀的分布在不同的partition中
  • 每个消息在被添加到分区时,都会被分配一个offset(称之为偏移量)
    • offset是消息在此分区中的唯一编号
    • kafka通过offset保证消息在分区内的顺序,offset的顺序不跨分区,即kafka只保证在同一个分区内消息有序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值