消息队列

消息队列(三)——kafka

2019-12-09  本文已影响0人  Jerry_Liang

以下是本消息队列系列文章的传送门:


在通过消息队列(一)与消息队列(二),相信大家已经对消息队列的几大应用场景,以及各大消息队列中间件的优缺点,那么我们接下来将要讲述的是分布式发布订阅消息系统——kafka的一些相关概念与术语的介绍。

1、简介


1.1 概述

Kafka是最初由Linkedin公司开发,是一种高吞吐量的分布式发布订阅消息系统,常见可以用于web/nginx日志、访问日志,消息服务等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。

Kafka主要设计目标如下:

1.2 消息传递模式

常见的消息传递模式有两种、分别是:

点对点传递模式 发布订阅模式

2、kafka中常用的术语


我们通过下图的kafka简单示例架构来熟悉kafka中的术语。

Kafka架构示例

我们先解释图中出现的术语,最后再对整个图的内容做一个详细解释。

2.1 Topic

每天发布到Kafka集群的消息都有一个主题类别,这个主题类别称为Topic。物理上不同的Topic的消息可能存储在同一broker中,也有可能不在同一broker中,但逻辑上只要用户指定消息的topic即可消费关于该topic
的有关数据,而不必关心数据的物理存储。

2.2 Partition

Topic中的数据分割为一个或多个分区(partition)。partition有以下特性:

2.3 Broker

在上图中我们可以在Kafka Cluster(即kafka集群)中看到,集群里包含了一个或多个服务器,这些服务器节点称为Broker。Broker存储着topic的数据,常见的存储数据方式如下:

2.4 Producer

Producer即数据的发布者,该角色将消息发布到Kafka的topic中。Broker接收到生产者发送的消息后,将该消息追加到当前用于追加数据的segment文件中。生产者发送的消息,可以存储到每一个partition中,也可以指定数据存储的partition。

2.5 Consumer

Consumer即为消费数据的一方,消费者可以从Broker中读取数据。消费者可以消费多个topic中的数据。

2.6 Offset

Offset即偏移量(位置),标识分区每条记录的位置,是分区当中每条记录的唯一标识。消费者通过记录当前消费到的偏移量来记录消费情况。

偏移量
2.6 Consumer Group

Consumer Group即为消费者组,用于占用式消费。我们可以为每个Consumer指定Group name,若不指定Group name则属于默认的Group。消费者组有以下特性:

消费者组消费示例
2.7 Leader

每个partition有多个副本,其中有且仅有一个作为Leader,Leader是当前负责数据读写的partition。

2.8 Follower

Follower跟随Leader,即与Leader数据保持一致。其特性如下:

2.8 架构示例图详细解释

Kafka架构示例
上一篇 下一篇

猜你喜欢

热点阅读