Kafka基本介绍

目录

一、简介

1.1  什么是kafka

1.2  主要特征 

 1.3  消息系统介绍

1.4  点对点消息传递模式

1.5  发布-订阅消息传递模式

二、kafka中术语解释

2.1  broker

2.2  Topic

2.3  Partition

2.4  Producer

2.5  Consumer


一、简介

1.1  什么是kafka

①Kafka是由Apache软件基金会开发的一个开源流处理平台,由ScalaJava编写。

②Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。

③Kafka是一个分布式消息队列:生产者、消费者的功能。

④Kafka最初是由LinkedIn开发,并于2011年初开源。2012年10月从Apache Incubator毕业。Kafka具有高性能高吞吐量的特点而被广泛应用于大数据传输场景(据说一秒钟能达到 几十万 数据量的处理)

1.2  主要特征 

①通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。

②高吞吐量 :即使是非常普通的硬件Kafka也可以支持每秒数百万的消息。

③支持通过Kafka服务器和消费机集群来分区消息。即支持Kafka Server间的消息分区,及分布式消费,同时保证每个partition内的消息顺序传输

④同时支持离线数据处理和实时数据处理。

④支持Hadoop并行数据加载

 1.3  消息系统介绍

一个消息系统负责将数据从一个应用传递到另外一个应用,应用只需关注于数据,无需关注数据在两个或多个应用间是如何传递的。分布式消息传递基于可靠的消息队列,在客户端应用和消息系统之间异步传递消息。有两种主要的消息传递模式:点对点传递模式、发布-订阅模式。大部分的消息系统选用发布-订阅模式。Kafka就是一种发布-订阅模式

1.4  点对点消息传递模式

在点对点消息系统中,消息持久化到一个队列中。此时,将有一个或多个消费者消费队列中的数据。但是一条消息只能被消费一次。当一个消费者消费了队列中的某条数据之后,该条数据则从消息队列中删除。该模式即使有多个消费者同时消费数据,也能保证数据处理的顺序。这种架构描述示意图如下:

Kafka基本介绍

生产者发送一条消息到queue,只有一个消费者能收到

1.5  发布-订阅消息传递模式

在发布-订阅消息系统中,消息被持久化到一个topic中。与点对点消息系统不同的是,消费者可以订阅一个或多个topic,消费者可以消费该topic中所有的数据,同一条数据可以被多个消费者消费,数据被消费后不会立马删除。在发布-订阅消息系统中,消息的生产者称为发布者,消费者称为订阅者。该模式的示例图如下:

Kafka基本介绍

发布者发送到topic的消息,只有订阅了topic的订阅者才会收到消息

二、kafka中术语解释

Kafka基本介绍

2.1  broker

Kafka 集群包含一个或多个服务器,服务器节点称为broker。

broker存储topic的数据。如果某topic有N个partition,集群有N个broker,那么每个broker存储该topic的一个partition。

如果某topic有N个partition,集群有(N+M)个broker,那么其中有N个broker存储该topic的一个partition,剩下的M个broker不存储该topic的partition数据。

如果某topic有N个partition,集群中broker数目少于N个,那么一个broker存储该topic的一个或多个partition。在实际生产环境中,尽量避免这种情况的发生,这种情况容易导致Kafka集群数据不均衡。

2.2  Topic

每条发布到kafka集群的消息都有一个类别,这个类别被称为Topic。

物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker上,但用户只需指定消息的Topic即可生产或消费数据,而不必关心数据存于何处。

2.3  Partition

topic中的数据分割为一个或多个partition。

每个topic至少有一个partition。

每个partition中的数据使用多个segment文件存储。

partition中的数据是有序的,不同partition间的数据丢失了数据的顺序。

如果topic有多个partition,消费数据时就不能保证数据的顺序。

在需要严格保证消息的消费顺序的场景下,需要将partition数目设为1。

2.4  Producer

生产者即数据的发布者,该角色将消息发布到Kafka的topic中。

broker接收到生产者发送的消息后,broker将该消息追加到当前用于追加数据的segment文件中。

生产者发送的消息,存储到一个partition中,生产者也可以指定数据存储的partition。

2.5  Consumer

消费者可以从broker中读取数据。消费者可以消费多个topic中的数据。

END

参考资料:大佬博客

 

 

上一篇:第38期:MySQL 时间类分区具体实现


下一篇:英文翻译6