大数据开发——消息队列Kafka入门与应用(二)

187 阅读2分钟

「这是我参与2022首次更文挑战的第15天,活动详情查看:2022首次更文挑战」。

1.1.5  消息队列的两种模式

1.1.5.1  点对点模式

图片.png

消息发送者生产消息发送到消息队列中,然后消息接收者从消息队列中取出并且消费消息。消息被消费以后,消息队列中不再有存储,所以消息接收者不可能消费到已经被消费的消息。

点对点模式特点:

  • 每个消息只有一个接收者(Consumer)(即一旦被消费,消息就不再在消息队列中)

  • 发送者和接收者间没有依赖性,发送者发送消息之后,不管有没有接收者在运行,都不会影响到发送者下次发送消息;

  • 接收者在成功接收消息之后需向队列应答成功,以便消息队列删除当前接收的消息;

1.1.5.2  发布订阅模式

图片.png

发布/订阅模式特点:

  • 每个消息可以有多个订阅者。

  • 发布者和订阅者之间有时间上的依赖性。针对某个主题(Topic)的订阅者,它必须创建一个订阅者之后,才能消费发布者的消息。

  • 为了消费消息,订阅者需要提前订阅该角色主题,并保持在线运行。

1.2  Kafka简介

1.2.1  什么是Kafka

图片.png

Kafka是由Apache软件基金会开发的一个开源流平台,由Scala和Java编写。Kafka的Apache官网是这样介绍Kakfa的:

Apache Kafka是一个分布式流平台。一个分布式的流平台应该包含3点关键的能力:

1. 发布和订阅流数据流,类似于消息队列或者是企业消息传递系统

2. 以容错的持久化方式存储数据流

3. 处理数据流

英文原版:

  • Publish and subscribe to streams of records, similar to a message queue or enterprise messaging system.

  • Store streams of records in a fault-tolerant durable way.

  • Process streams of records as they occur.

更多参考:kafka.apache.org/documentati…

 

我们重点关键三个部分的关键词:

1.  Publish and subscribe:发布与订阅

2.  Store:存储

3.  Process:处理

1.2.2  Kafka的应用场景

我们通常将Apache Kafka用在两类程序:

  1.  建立实时数据管道,以可靠地在系统或应用程序之间获取数据

  2.  构建实时流应用程序,以转换或响应数据流

图片.png

上图,我们可以看到:

  1.  Producers:可以有很多的应用程序,将消息数据放入到Kafka集群中。

  2.  Consumers:可以有很多的应用程序,将消息数据从Kafka集群中拉取出来。

  3.  Connectors:Kafka的连接器可以将数据库中的数据导入到Kafka,也可以将Kafka的数据导出到数据库中。

  4.  Stream Processors:流处理器可以Kafka中拉取数据,也可以将数据写入到Kafka中。