Kafka入门基础介绍(带架构图)

概要

kafka是什么?

Apache Kafka 是一个基于 Zookeeper 的开源的分布式事件流平台,支持多分区、多副本,由数以千计的高性能数据管道、流分析、 数据集成和任务关键型应用程序。主要用于处理消费者规模网站中的所有动作流数据(基于发布订阅模式的消息引擎系统)。

流数据

流式数据(Streaming Data)是指在不间断的时间序列中产生的数据流,这些数据通常是实时生成的,且需要实时处理和分析。与批处理数据不同,流式数据的特点是数据量大、速度快、变化频繁,并且需要实时响应和处理

常见的流式数据类型

  1. 传感器数据:传感器数据是指由各种传感器产生的实时数据流,例如温度、湿度、压力、光照等数据。
  2. 日志数据:日志数据是指由各种应用程序、服务器、网络设备等产生的实时日志数据流,例如服务器日志、应用程序日志、网络流量日志等。
  3. 交易数据:交易数据是指由各种交易系统、证券市场等产生的实时交易数据流,例如股票交易数据、外汇交易数据等。
  4. 用户数据:用户数据是指由各种应用程序、网站、移动应用等产生的实时用户数据流,例如用户行为、用户访问记录、用户交互数据等。
  5. IOT数据:IoT数据是指由各种物联网设备产生的实时数据流,例如智能家居设备、智能汽车设备、智能医疗设备等(比如传感器数据、位置数据、健康数据等)。

1. Kafka的三个关键功能

  1. 发布(写入)和订阅(读取)事件流,包括连续导入/导出来自其他系统的数据。
  2. 根据需要持久可靠地存储事件流。
  3. 在事件发生时或回顾性地处理事件流。

所有这些功能都是以分布式、高度可扩展、弹性、容错和 安全的方式。Kafka 可以部署在裸机硬件、虚拟机和容器上,也可以部署在本地以及在云中。可以选择自我管理 Kafka 环境和使用完全托管环境由各种供应商提供的服务。

2. Kafka的主要概念

基础架构图

在这里插入图片描述

  1. 事件:记录了业务中"发生了某些事情"的事实。也可以称为记录或消息。当 Kafka 读取或写入数据时,将以事件的形式执行。每条记录都包含键、值、时间戳,下面是一个示例事件:
键:“爱丽丝”
值:“向 Bob 支付了 200 美元”
时间戳:“25 年 2020 月 2 日下午 06:<>”
  1. 生产者/消费者:生产者(Producer) 是向 Kafka 发布(写入)事件的客户端应用程序,用于持续不断的向某个主题发送消息;消费者(consumer) 是订阅(读取和处理)这些事件的客户端应用程序,用于处理生产者产生的消息。
    生产者和消费者是完全解耦的,彼此不可知。生产者永远不需要等待消费者,消费者需要消费的时候可以直接拿,两者没有谁等谁的概念之分。
  2. 消费者群组:生产者与消费者的关系就如同餐厅中的厨师和顾客之间的关系一样,一个厨师对应多个顾客,也就是一个生产者对应多个消费者,消费者群组(Consumer Group) 指的就是由一个或多个消费者组成的群体。
  3. 主题/分区:主题(topic) 可以类似于文件系统中的文件夹,事件是该文件夹中的文件。一个主题可以有零个、一个或多个向其写入事件的生产者,也可以有零个、一个或多个订阅这些事件的消费者。类似共享文件夹,用户可以同时到某个文件或者文件夹里面写入和读出数据。事件被组织并持久存储在主题中。
    分区(Partition) 是一个有序、不可变的记录序列,不断附加到结构化的提交日志中。分区中的每个事件都分配了一个称为偏移的顺序ID号,它唯一地标识分区中的每个记录(事件)。同一个主题中的分区可以不在一个机器上,有可能会部署在多个机器(不同节点)上,由此来实现 kafka 的伸缩性。

分区被称为Topic物理上的分组,一个Topic在Broker中被分为1个或者多个Partition, (一般为kafka节点数CPU的总核心数量)分区在创建Topic的时候可以指定。分区才是真正存储数据的单元

  1. Broker/集群:一个 Kafka 服务器也称为 Broker,若干个 Broker 组成一个集群(Cluster),其中集群内某个 Broker 会成为集群控制器(Cluster Controller),它负责管理集群,包括分配分区到 Broker、监控 Broker 故障等。在集群内,一个分区由一个 Broker 负责,这个 Broker 也称为这个分区的 Leader。各个broker在集群中地位一样,我们可以随意的增加或删除任何一个broker节点。
    Broker主要负责创建Topic,存储Producer所发布的消息,记录消息处理的过程,将消息保存到内存中,然后持久化到磁盘,为消息设置偏移量。

偏移量(Consumer Offset) 是一种元数据,它是一个不断递增的整数值,用来记录消费者发生重平衡时的位置,以便用来恢复数据)

3. Kafka的核心API

  1. Producer API(生产者API):允许应用程序发布记录流至一个或多个kafka的topics(主题)。
  2. Consumer API(消费者API):允许应用程序订阅一个或多个topics(主题),并处理所产生的对他们记录的数据流。
  3. Streams API(流API):允许应用程序作为流处理器,从一个或多个主题中消费输入流并为其生成一个或多个输出流,有效的将输入流转换为输出流。
  4. Connector API(连接器API):允许构建和运行将 Kafka 主题连接到现有应用程序或数据系统的可用生产者和消费者。例如,关系数据库的连接器可能捕获对表的每个更改。
  5. Admin API(管理者API):用于管理和检查主题、代理和其他 Kafka 对象。

4. 参考文章

https://kafka.apache.org/documentation/
https://zhuanlan.zhihu.com/p/103249714
https://zhuanlan.zhihu.com/p/442962047
https://cloud.tencent.com/developer/article/1547380
https://zhuanlan.zhihu.com/p/74063251

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值