Kafka(1)从入门到肩周炎——概述

509 阅读6分钟

一、Kafka简介

Apache Kafka是一个开源的分布式事件流平台,可跨多台计算机读取、写入、存储和处理事件 (也称为记录或消息)。被用于高性能数据管道、流分析、数据集成和关键任务应用程序。

特性

流处理平台有以下三种特性:

1. 发布和订阅事件流。与消息队列或者企业消息系统类似(消息队列可以看——看完这篇文,隔壁李阿姨都懂了消息队列 - 掘金 (juejin.cn)

2. 持久可靠的储存事件流,并且有较好的容错性

3. 在事件发生或追溯事件时处理事件流

事件流是什么?

事件流是从事件源 (如数据库、传感器、移动设备、云服务和软件应用程序) 的一系列事件中实时捕获数据的做法;持久地存储这些事件流以供以后检索;实时和追溯性地操作、处理和响应事件流;并根据需要将事件流路由到不同的目标技术。

因此,事件流保证了数据的连续流动和准确解析,以便数据的信息、发生时间位置正确。

 

举例

放到生活中,其实是比较好理解的。比如有个领导在群里面发了条消息,让你两个小时内把这栋楼的花都浇一遍,浇的顺序还不能是一层一层,它指定你先去双数层,再去单数层。你会在群里回一个1,哦不,回一个“好的Z总”。

算了.jpg

浇花就是事件,你去浇花的楼层就相当于实时数据,在这一系列楼层浇花就是事件流。

如果在Kafka平台里,Z总发布了让你去浇花这个事件流 (消息),Kafka会把该事件流 (包括时间和对楼层顺序的限制等) 存储起来,你订阅了这个事件流,然后去处理完。

Z总和其他领导继续发布了很多事件流,也都可以一一存储起来,你哪天想升职就把这些历史拿出来给他们看,或者领导觉得这些太睿智把事件流删除了。这就是分布式事件流平台所起的部分作用。

应用

事件流式处理应用广泛,包括:

实时处理付款和金融交易、实时跟踪和监控物流

持续捕获和分析来自物联网设备或其他设备 (如工厂和风电场) 的传感器数据

收集客户交互和订单并立即做出反应

监测医院护理中的患者,预测病情变化,确保在紧急情况下及时治疗

连接、存储公司不同部门生成的数据

作为数据平台、事件驱动架构和微服务的基础

二、Kafka分析

上网搜其相关知识,大多数文章都会介绍说:Kafka是一种分布式的,基于发布/订阅的消息队列系统。这没错,但不准确。正如上文所说,Kafka作为一个分布式事件流平台,有着发布和订阅事件流的特性。

消息队列系统

消息队列就消息队列,为什么叫消息队列系统呢,那肯定是因为它比一般消息队列高级。

除了最基本的生产者、消费者,消息队列被包含在了若干服务器中,也就是Kafka集群。集群带来的好处显而易见,这就像Z总叫你一个人去给整栋楼的花浇水,效率肯定很低,其他的事你也干不了,一些花盆你可能忘了浇水.....但如果是每层楼每个区域都叫一个人去浇水,效率会大大提升,忘记浇水的概率下降,如果有人临时有急事还可以叫别人帮他浇水。这就是分布式。

冒犯.jpg

试想将多台服务器选出一个领导者用来协调所有服务器,其中每台服务器将消息分成不同主题,每个主题继续分区,每个分区也有一个领导者用来协调所有分区。假设一台服务器有十万个分区可用来存储消息,那多台服务器有多大的容量用来存储消息。

Kafka特点

1. 高吞吐量:可以满足每秒百万级别消息的生产和消费

2. 持久性:有一套完善的消息存储机制,确保数据高效安全且持久化

3. 可伸缩:弹性扩展和收缩存储和处理

4. 分布式:基于分布式的扩展;Kafka的数据都会复制到几台服务器上,当某台故障失效时,生产者和消费者转而使用其它的Kafka

三、Kafka架构

Kafka很多概念都已在前文说明,直接上图。

kafka.png

kafka2.png

Producer:生产者,产生消息,消息的入口

Kafka Cluster:Kafka集群

· Broker:Kafka服务器,集群的存储层。如果任何服务器出现故障,其他服务器将接管其工作以确保连续操作而不会丢失任何数据。每个Kafka集群内的broker都有一个不重复的编号,如broker 0、broker 1等

· Topic:消息主题,可以理解为消息的分类。在每个broker上都可以创建多个topic

· Partition:Topic的分区,每个topic可以有多个分区,分区是存储Kafka数据的单元

· Replication:每一个分区都有多个副本。当主分区Leader故障的时候会选择一个副本Follower成为Leader。副本的数量不能大于Broker的数量,Follower和Leader在不同的机器,同一机器的同一个分区也只能存放一个副本

Consumer:消费者,消息的出口

如果把领导发布任务给员工比作一个完整的Kafka,Producer就是Z总和其他领导,Kafka集群用来存储的公司上下的大小事务,Broker是存储这些事务的地方比如微信、钉钉或者公司平台等,Topic有杂事、工作、交流、党群等,Partition就是具体的浇哪些花、收集某资料......Replication指这些具体任务在各个平台应该有个备份,万一哪个地方消息被删了可以用备份查看或恢复。Consumer就是普通员工啦。

 

现在知道Kafka是干什么的了吧!别说不知道,我不能接受。

理解.jpg

参考:

Apache Kafka

Kafka 中文文档 - ApacheCN

再过半小时,你就能明白kafka的工作原理了 - 苏苏喂苏苏+ - 博客园 (cnblogs.com)

Kafka详解 - 知乎 (zhihu.com)

Kafka【入门】就这一篇! - 知乎 (zhihu.com)

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 4 天,点击查看活动详情