资讯专栏INFORMATION COLUMN

kafka介绍

AlanKeene / 2296人阅读

摘要:在一上篇文章介绍了消息队列的使用场景,现在介绍下主要特点同时为发布和订阅提供高吞吐量。据了解,每秒可以生产约万消息,每秒处理万消息。消息被处理的状态是在端维护,而不是由端维护。消息和数据生产者,向的一个发布消息的过程叫做。

在一上篇文章介绍了消息队列的使用场景,现在介绍下kafka
Kafka主要特点:

同时为发布和订阅提供高吞吐量。据了解,Kafka每秒可以生产约25万消息(50 MB),每秒处理55万消息(110 MB)。

可进行持久化操作。将消息持久化到磁盘,因此可用于批量消费,例如ETL,以及实时应用程序。通过将数据持久化到硬盘以及replication防止数据丢失。

分布式系统,易于向外扩展。所有的producer、broker和consumer都会有多个,均为分布式的。无需停机即可扩展机器。

消息被处理的状态是在consumer端维护,而不是由server端维护。当失败时能自动平衡。

支持online和offline的场景。

kafka 架构

Kafka的整体架构非常简单,是显式分布式架构,producer、broker(kafka)和consumer都可以有多个。Producer,consumer实现Kafka注册的接口,数据从producer发送到broker,broker承担一个中间缓存和分发的作用。broker分发注册到系统中的consumer。broker的作用类似于缓存,即活跃的数据和离线处理系统之间的缓存。客户端和服务器端的通信,是基于简单,高性能,且与编程语言无关的TCP协议。

几个基本概念

Topic:特指Kafka处理的消息源(feeds of messages)的不同分类。

Partition:Topic物理上的分组,一个topic可以分为多个partition,每个partition是一个有序的队列。partition中的每条消息都会被分配一个有序的id(offset)。

Message:消息,是通信的基本单位,每个producer可以向一个topic(主题)发布一些消息。

Producers:消息和数据生产者,向Kafka的一个topic发布消息的过程叫做producers。

Consumers:消息和数据消费者,订阅topics并处理其发布的消息的过程叫做consumers。

Broker:缓存代理,Kafka集群中的一台或多台服务器统称为broker。

消息发送流程

1.Producer根据指定的partition方法(round-robin、hash等),将消息发布到指定topic的partition里面

2.kafka集群接收到Producer发过来的消息后,将其持久化到硬盘,并保留消息指定时长(可配置),而不关注消息是否被消费。

3.Consumer从kafka集群pull数据,并控制获取消息的offset

消息存储策略

谈到kafka的存储,就不得不提到分区,即partitions,创建一个topic时,同时可以指定分区数目,分区数越多,其吞吐量也越大,但是需要的资源也越多,同时也会导致更高的不可用性,kafka在接收到生产者发送的消息之后,会根据均衡策略将消息存储到不同的分区中。

在每个分区中,消息以顺序存储,最晚接收的的消息会最后被消费。

与生产者的交互

生产者在向kafka集群发送消息的时候,可以通过指定分区来发送到指定的分区中

也可以通过指定均衡策略来将消息发送到不同的分区中

如果不指定,就会采用默认的随机均衡策略,将消息随机的存储到不同的分区中

与消费者的交互

在消费者消费消息时,kafka使用offset来记录当前消费的位置

在kafka的设计中,可以有多个不同的group来同时消费同一个topic下的消息,如图,我们有两个不同的group同时消费,他们的的消费的记录位置offset不互相干扰。

对于一个group而言,消费者的数量不应该多余分区的数量,因为在一个group中,每个分区至多只能绑定到一个消费者上,即一个消费者可以消费多个分区,一个分区只能给一个消费者消费

若一个group中的消费者数量大于分区数量的话,多余的消费者将不会收到任何消息。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/34003.html

相关文章

  • CentOS7下Kafka的安装介绍

    摘要:安装从官网下载安装包,解压安装,或直接使用命令下载。是负责给定分区的所有读取和写入的节点。每个节点将成为分区随机选择部分的领导者。这是复制品列表的子集,当前活着并被引导到领导者。多机多分别在多个节点按上述方式安装,配置启动多个实例。 介绍 Kafka是分布式发布-订阅消息系统,最初由LinkedIn公司开发,之后成为之后成为Apache基金会的一部分,由Scala和Java编写。Ka...

    tyheist 评论0 收藏0
  • Kafka介绍

    摘要:文章路径看了的介绍文章,记录下。允许创建并运行可重用的生产者或消费者,其连接到存在的应用或数据系统。是为发布的记录提供的目录或的名字。分区中的记录被赋予一个叫做的序列化的,其能唯一识别出分区中的每条记录。 文章路径:https://kafka.apache.org/intro 看了Kafka的介绍文章,记录下。 先来一些概念: Kafka是运行在多台服务器上的集群。Kafka集群按目录...

    aristark 评论0 收藏0
  • 《从0到1学习Flink》—— Flink 写入数据到 Kafka

    摘要:前言之前文章从到学习写入数据到写了如何将中的数据存储到中,里面其实就已经用到了自带的。这里我们演示把其他集群中数据原样写入到自己本地起的中去。关注我微信公众号另外我自己整理了些的学习资料,目前已经全部放到微信公众号了。 showImg(https://segmentfault.com/img/remote/1460000017920385?w=1280&h=830); 前言 之前文章 ...

    stefan 评论0 收藏0
  • kafka docker

    摘要:基本概念介绍可以简单理解为一个节点多个节点构成整个集群某种类型的消息的合集它是在物理上的分组多个会被分散地存储在不同的节点上单个的消息是保证有序的但整个的消息就不一定是有序的包含消息内容的指定大小的文件由文件和文件组成一个由多个文件组成文件 基本概念介绍 Broker 可以简单理解为一个 Kafka 节点, 多个 Broker 节点构成整个 Kafka 集群;Topic 某种类型的消息...

    Towers 评论0 收藏0
  • Kafka 文档(介绍

    摘要:集群可以持久地保存所有已发布的记录无论它们是否被消费并使用可配置的保留期。有关这些保证的更多细节将在文档的设计部分中给出。与传统的消息传递系统相比,也有更强的顺序保证。这是通过将主题中的分区分配给消费者组中的消费者来实 介绍 Apache Kafka®是一个分布式流平台,这到底是什么意思? 流平台有三个关键功能: 发布和订阅记录流,类似于消息队列或企业消息传递系统 以容错持久的方式存...

    syoya 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<