一、Kafka简介
Apache Kafka是一个开源的分布式事件流平台,可跨多台计算机读取、写入、存储和处理事件 (也称为记录或消息)。被用于高性能数据管道、流分析、数据集成和关键任务应用程序。
特性
流处理平台有以下三种特性:
1. 发布和订阅事件流。与消息队列或者企业消息系统类似(消息队列可以看——看完这篇文,隔壁李阿姨都懂了消息队列 - 掘金 (juejin.cn))
2. 持久可靠的储存事件流,并且有较好的容错性
3. 在事件发生或追溯事件时处理事件流
事件流是什么?
事件流是从事件源 (如数据库、传感器、移动设备、云服务和软件应用程序) 的一系列事件中实时捕获数据的做法;持久地存储这些事件流以供以后检索;实时和追溯性地操作、处理和响应事件流;并根据需要将事件流路由到不同的目标技术。
因此,事件流保证了数据的连续流动和准确解析,以便数据的信息、发生时间位置正确。
举例
放到生活中,其实是比较好理解的。比如有个领导在群里面发了条消息,让你两个小时内把这栋楼的花都浇一遍,浇的顺序还不能是一层一层,它指定你先去双数层,再去单数层。你会在群里回一个1,哦不,回一个“好的Z总”。
浇花就是事件,你去浇花的楼层就相当于实时数据,在这一系列楼层浇花就是事件流。
如果在Kafka平台里,Z总发布了让你去浇花这个事件流 (消息),Kafka会把该事件流 (包括时间和对楼层顺序的限制等) 存储起来,你订阅了这个事件流,然后去处理完。
Z总和其他领导继续发布了很多事件流,也都可以一一存储起来,你哪天想升职就把这些历史拿出来给他们看,或者领导觉得这些太睿智把事件流删除了。这就是分布式事件流平台所起的部分作用。
应用
事件流式处理应用广泛,包括:
实时处理付款和金融交易、实时跟踪和监控物流
持续捕获和分析来自物联网设备或其他设备 (如工厂和风电场) 的传感器数据
收集客户交互和订单并立即做出反应
监测医院护理中的患者,预测病情变化,确保在紧急情况下及时治疗
连接、存储公司不同部门生成的数据
作为数据平台、事件驱动架构和微服务的基础
二、Kafka分析
上网搜其相关知识,大多数文章都会介绍说:Kafka是一种分布式的,基于发布/订阅的消息队列系统。这没错,但不准确。正如上文所说,Kafka作为一个分布式事件流平台,有着发布和订阅事件流的特性。
消息队列系统
消息队列就消息队列,为什么叫消息队列系统呢,那肯定是因为它比一般消息队列高级。
除了最基本的生产者、消费者,消息队列被包含在了若干服务器中,也就是Kafka集群。集群带来的好处显而易见,这就像Z总叫你一个人去给整栋楼的花浇水,效率肯定很低,其他的事你也干不了,一些花盆你可能忘了浇水.....但如果是每层楼每个区域都叫一个人去浇水,效率会大大提升,忘记浇水的概率下降,如果有人临时有急事还可以叫别人帮他浇水。这就是分布式。
试想将多台服务器选出一个领导者用来协调所有服务器,其中每台服务器将消息分成不同主题,每个主题继续分区,每个分区也有一个领导者用来协调所有分区。假设一台服务器有十万个分区可用来存储消息,那多台服务器有多大的容量用来存储消息。
Kafka特点
1. 高吞吐量:可以满足每秒百万级别消息的生产和消费
2. 持久性:有一套完善的消息存储机制,确保数据高效安全且持久化
3. 可伸缩:弹性扩展和收缩存储和处理
4. 分布式:基于分布式的扩展;Kafka的数据都会复制到几台服务器上,当某台故障失效时,生产者和消费者转而使用其它的Kafka
三、Kafka架构
Kafka很多概念都已在前文说明,直接上图。
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是干什么的了吧!别说不知道,我不能接受。
参考:
再过半小时,你就能明白kafka的工作原理了 - 苏苏喂苏苏+ - 博客园 (cnblogs.com)
Kafka【入门】就这一篇! - 知乎 (zhihu.com)
开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 4 天,点击查看活动详情