找回密码
 立即注册
查看: 57|回复: 0

数据词典:Kafka

[复制链接]

108

主题

1

回帖

478

积分

管理员

积分
478
发表于 2025-10-30 09:11:51 | 显示全部楼层 |阅读模式
分布式发布订阅消息系统在数据采集中扮演着重要的角色。Kafka是由LinkedIn公司开发的一种高吞吐量的分布式发布订阅消息系统,用户通过Kafka系统可以发布大量的消息,同时也能实时订阅消费消息。在Kafka之前,市场上已经存在RabbitMQApache ActiveMQ等传统的消息系统,Kafka与这些传统的消息系统相比,有以下不同:(1Kafka是分布式系统,易于向外扩展;(2)同时为发布和订阅提供高吞吐量;(3)支持多订阅者,当失败时能自动平衡消费者;(4)支持将消息持久化到磁盘,因此可用于批量消费,例如 ETL以及实时应用程序。
Kafka设计的初衷是构建一个可以处理海量日志、用户行为和网站运营统计等的数据处理框架。为了满足上述应用需求,就需要同时提供实时在线处理的低延迟和批量离线处理的高吞吐量。现有的一些消息队列框架,通常设计了完备的机制来保证消息传输的可靠性,但是由此会带来较大的系统负担,在批量处理海量数据时无法满足高吞吐率的要求;另外有一些消息队列框架则被设计成实时消息处理系统,虽然可以带来很高的实时处理性能,但是在面对批量离线场合时却无法提供足够的持久性,即可能发生消息丢失。同时,在大数据时代涌现的新的日志收集处理系统(FlumeScribe等)往往更擅长批量离线处理,而不能较好地支持实时在线处理。相对而言,Kafka可以同时满足在线实时处理和批量离线处理。
Kafka具有以下良好的特性:
(1) 高吞吐量、低延迟:Kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒;
(2) 可扩展性:Kafka集群具有良好的可扩展性;
(3) 持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份,防止数据丢失;
(4) 容错性:允许集群中节点失败,若副本数量为n,则允许n-1个节点失败;
(5) 高并发:支持数千个客户端同时读写。使用消息队列能够使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃;
(6) 顺序保证:在大多使用场景下,数据处理的顺序都很重要。大部分消息队列本来就是排序的,并且能保证数据会按照特定的顺序来处理。Kafka保证一个分区内的消息的有序性;
(7) 异步通信:很多时候,用户不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少消息,然后在需要的时候再去处理它们。
Kafka的主要应用场景包括:
(1) 日志收集:一个公司可以用Kafka收集各种日志,这些日志被Kafka收集以后,可以通过Kafka的统一接口服务开放给各种消费者,例如HadoopHBaseSolr等;
(2) 消息系统:可以对生产者和消费者实现解耦,并可以缓存消息;
(3) 用户活动跟踪:Kafka经常被用来记录Web用户或者APP用户的各种活动,如浏览网页、搜索、点击等活动,这些活动信息被各个服务器发布到Kafka的主题(Topic)中,然后订阅者通过订阅这些主题来做实时的监控分析,或者装载到Hadoop、数据仓库中做离线分析和挖掘;
(4) 运营指标:Kafka也经常用来记录运营监控数据,包括收集各种分布式应用的数据,生产环节各种操作的集中反馈,比如报警和报告;
(5) 流式处理:Kafka实时采集的数据可以传递给流处理框架(比如Spark StreamingStorm)进行实时处理。
【出处】林子雨.大数据导论.人民邮电出版社,20209月第1.

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|全数联人才测评中心 ( 京ICP备2024094898号 )

GMT+8, 2025-11-18 05:21 , Processed in 0.150862 second(s), 21 queries .

版权所有: 全数联人才测评(北京)中心

友情链接: 中华全国数字人才培育联盟 全数联人才测评中心学习平台 全数联人才测评中心存证平台 全数联人工智能专员认证中心

快速回复 返回顶部 返回列表