Kafka从入门到放弃(四) —— Kafka在大数据领域的应用

Kafka从入门到放弃(四) —— Kafka在大数据领域的应用,第1张

Kafka从入门到放弃(四) —— Kafka在大数据领域的应用

Kafka作为一个消息中间件,其应用相当广泛,尤其在大数据领域,基本都会用到。由于笔者参与大数据工作,因此本文将从我的角度和经验出发,讲一下Kafka为什么广泛应用于大数据领域。对于Kafka不是很熟悉的朋友可以点击下方连接跳转进行阅读:

Kafka从入门到放弃(一) —— 初识Kafka
Kafka从入门到放弃(二) —— 生产者
Kafka从入门到放弃(三) —— 消费者

背景&场景

在大数据场景下,数据经常需要经过ETL(抽取-转换-加载)的处理,从一端流向另一端(当然也有ELT,根据各个企业不同的考量决定不同的架构),比如从各个业务系统经过处理后落地到数据仓库,数据仓库有时候又要把数据提供给业务系统。

由于数据流向比较多,如果不做好数据链路规划,很容易造成开发重复、成本增加,出现问题也比较难以排查。因此,合理构造数据管道是很重要的,而Kafka在数据管道的构建中发挥了很大的优势。

特点&原因 批流一体

大数据处理分为流处理和批处理。流处理对实时性要求比较高,数据像水流一样源源不断的流动;批处理就是批量处理,就是字面意思,比如当天处理前一天的数据。

由于Kafka是一个基于流的数据平台,在数据处理方面可以做到实时,所以经常在流处理架构中用到它。

另外它也提供数据存储,可以将一段时间内的数据存储起来,后续对挤压得数据进行批量处理;也可以在数据到达得时候及时获取并处理。

可用性&可靠性

之前的几篇文章中说的那些特点多少包含了Kafka在这方面的情况。

Kafka通过zookeeper维护集群的信息,同时Kafka也有Controller,它不单能完成broker的工作,同时还负责分区Leader的选举。

另外,Kafka的分区可以有副本,而且分leader和follower,当leader挂掉后follower能顶替其位置,保证其可用性。

在生产者方面,发送消息到Kafka有确认机制以及重试机制,详情可以看这篇文章:Kafka从入门到放弃(二) —— 生产者

在消费者方面,提交偏移量的策略选择以及重分区可以保证数据可靠性。

Kafka还支持“exactly once”语意。exactly once是有且只有一次,可以简单理解为:数据到达并保存了,但还没返回确认消息的时候挂了,生产者再发一次,Kafka再存一次,这种是at least once;而exactly once则只保存一次,没有重复。

一般在消费者端实现exactly once是通过设置唯一键,Kafka也可以通过设置唯一标识对应每一条数据,这种方式是幂等性(简单理解为:多次 *** 作,结果是一致的)。

高吞吐

Kafka可以作为生产者和消费者之间的缓冲区,生产和消费的速度就可以不一致了。消费者的吞吐能力差的时候,可以将数据积压到Kafka,慢慢消费。

伸缩性

这个其实也和高吞吐有关,Kafka可以动态扩容,通过增加分区或者增加消费者,提高吞吐能力。

解耦&集成

大数据处理的过程中,不管是源端还是目标端都有很多,经常需要将日志导入HDFS,或者从MySQL导数到Oracle,如果每个流程都建一条链路,会变得难以维护,而且有可能造成重复开发。

引入Kafka,可以解耦生产者和消费者,同时可以将多源异构的数据集成起来,就可以减少重复开发,提高效率。

总结

Kafka由于其具有批流一体、可靠性、可用性、解耦、伸缩性、高吞吐的特性,使其在大数据领域应用十分广泛,常作为数据总线,多用于数据采集以及数据服务。

转载请注明出处:CSDN“大数据的奇妙冒险”

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5716764.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存