暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Kafka基础知识 —— 分布式消息队列在大数据处理中的作用

406


作者:稀饭


本文1100字,数理内容较少,泛读需4分钟,精读需7分钟



1、实际场景中需要消息队列的原因

 

在实际应用中,不同的数据生产者(服务器)产生的日志,比如指标监控数据、用户检索日志等,需要同时传递到多个系统中以便进行相关的逻辑处理或分析挖掘。由于涉及一对多或多对多的情况,为了降低数据生产者和消费者之间的耦合性,平衡两者处理能力的不对等,就需要有一个中间件 +—— 消息队列来解除生产者和消费者之间的直接依赖关系,使得软件架构更容易扩展和伸缩。

 

2、中间件的作用

 

可以缓冲生产者产生的数据,防止消费者无法及时处理生产者生产的数据。在大数据领域,最常用的中间件是Kafka

 

3、大数据场景中使用Kafka的动机

 

为了降低数据生产者(如Web Server)和消费者(如Hadoop集群)之间的耦合性,使得系统更容易扩展,需要引入一层“中间件”,Kafka是大数据领域的中间件代表,引入它可以带来的收益有:

1)避免生产者和消费直接互通产生的彼此高度依赖;

2)可以缓存生产者生产的数据,使得消费者可以重复消费历史数据;

3)消费者可以订阅某类主题的数据,当生产者产生对应主题的数据后,所有订阅者可以快速获取到数据,即消费者可快速获取新增数据;

4)所有收集到的数据会流经Kafka,之后由Kafka分流后,进入各个消费者系统。

 

4KafkaFlume的区别

 

KafkaFlume在架构和应用上均有较大不同:

1Kafka中存储的数据是多副本的,能够做到数据不丢,而Flume提供的memory channelfile channel均无法做到;

2Kafka可以将数据暂存一段时间,使得消费者可以重复读取;但Flume Sink发送成功数据后会立即将其删除;

3Kafka的生产者和消费者均需要用户使用API编写,仅提供少量的与外部系统集成的组件,而Flume则提供了大量的SourceSink实现,能更容易地完成数据收集工作。

 

5Kafka的特点

 

1高性能

 

相比于其他一些老款消息队列,Kafka具有更高的性能和吞吐率。经LinkedIn对比测试,单台机器同等配置下,Kafka单位时间内处理的消息数是RabbitMQ等的40~50倍。

 

2良好的扩展性

 

Kafka采用的是分布式设计架构,数据经过分片后写入多个结点,既可以突破单节点数据存储和处理的瓶颈,也可以实现容错等功能。

 

3数据持久性

 

数据消息均会持久化到磁盘上,并通过多副本策略避免数据丢失。Kafka采用了顺序写、顺序读和批量写等机制,提升了磁盘的操作效率。

 

6Kafka的基本架构

 

Kafka的架构由ProducerBrokerConsumer三类组件构建。其中Producer将数据写入BrokerConsumer则从Broker上读取数据进行处理,而Broker构成了连接ProducerConsumer的“缓冲区域”。BrokerConsumer通过Zookeeper做协调和服务发现。多个Broker构成一个可靠的分布式消息存储系统,避免数据丢失。此外,Broker中的消息被划分成多个Topic,同属一个topic的所有数据按照某种策略被分成多个partition,以实现负载分摊和数据并行处理。




广告区↓


互联网数据分析岗位求职备战




文章转载自稀饭居然不在家,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论