ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Kafka入门介绍

2022-06-21 23:02:52  阅读:126  来源: 互联网

标签:每个 多个 分区 入门 介绍 Kafka kafka 消费者


1、Kafka简介

Kafka是分布式发布-订阅消息系统,它最初由 LinkedIn 公司开发,使用 Scala语言编写,之后成为 Apache 项目的一部分。在Kafka集群中,没有“中心主节点”的概念,集群中所有的服务器都是对等的,因此,可以在不做任何配置的更改的情况下实现服务器的的添加与删除,同样的消息的生产者和消费者也能够做到随意重启和机器的上下线。

Kafka消息系统生产者和消费者部署关系图1-2

Kafka消息系统架构图1-3

Apache Kafka 是 一个分布式流处理平台。

流处理平台有以下三种特性:

1、可以让你发布和订阅流式的记录。这一方面与消息队列或者企业消息系统类似。

2、可以储存流式的记录,并且有较好的容错性。

3、可以在流式记录产生时就进行处理。

什么是kafka的优势?它主要应用于2大类应用:

1、构建实时的流数据管道,可靠地获取系统和应用程序之间的数据。

2、构建实时流的应用程序,对数据流进行转换或反应。

2、Kafka相关术语介绍

 

 

 

 

1、Producer:消息生产者,就是向Kafka broker发消息的客户端。

2、Consumer:消息消费者,向Kafka broker取消息的客户端。

3、Consumer Group(CG):消费者组,由多个consumer组成。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费;消费者组之间互不影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。

4、Broker:一台Kafka服务器就是一个broker。一个集群由多个broker组成。一个broker可以容纳多个topic。已发布的消息保存在一组服务器中,称之为Kafka集群。集群中的每一个服务器都是一个代理(Broker)。 消费者可以订阅一个或多个主题(topic),并从Broker拉数据,从而消费这些已发布的消息。

5、Topic:可以理解为一个队列,生产者和消费者面向的都是一个topic。Kafka将消息分门别类,每一类的消息称之为一个主题(Topic)。

6、Partition:为了实现扩展性,一个非常大的topic可以分布到多个broker(即服务器)上,一个topic可以分为多个partition,每个partition是一个有序的队列。

7、Replication:副本。一个topic的每个分区都有若干个副本,一个Leader和若干个Follower。

8、Leader:每个分区多个副本的“主”,生产者发送数据的对象,以及消费者消费数据的对象都是Leader。

9、Follower:每个分区多个副本中的“从”,实时从Leader中同步数据,保持和Leader数据的同步。Leader发生故障时,某个Follower会成为新的Leader

Kafka的几个概念

 

  • kafka作为一个集群运行在一个或多个服务器上。

  • kafka集群存储的消息是以topic为类别记录的。

  • 每个消息(也叫记录record,我习惯叫消息)是由一个key,一个value和时间戳构成。

Kafka的四个核心API

Producer API(生产者API)允许应用程序发布流记录到一个或多个kafka的主题。
Consumer API(消费者API)允许应用程序订阅一个或多个主题和处理所产生的对他们的记录流。
Streams API(流API)允许应用程序作为流处理器,从一个消费输入流一个或多个主题,并产生一个输出流到一个或多个输出主题,高效地传输这个输入流到输出流。
Connector API(连接器API)允许构建和运行可重复使用的生产者或消费者连接kafka主题到现有的应用程序或数据系统。例如,关系数据库的连接器可能捕获对表的每个更改。

 

 

在Kafka中,客户端和服务器之间的通信是通过简单,高性能,语言无关的TCP协议完成的。此协议已版本化并保持与旧版本的向后兼容性。Kafka提供Java客户端,但客户端有多种语言版本。根据业务需求定制,而非实现一套类似ProtocolBuffer的通用协议。

 

Topics主题和partitions分区

一个Topic可以认为是一类消息,每个topic将被分成多个partition(区),每个partition在存储层面是append log文件。

主题是发布记录的类别或订阅源名称。Kafka的主题总是多用户; 也就是说,一个主题可以有零个,一个或多个消费者订阅写入它的数据。

对于每个主题,Kafka群集都维护一个如下所示的分区日志:

 

 

 

每个分区都是一个有序的,不可变的记录序列,不断附加到结构化的提交日志中。分区中的记录每个都分配了一个称为偏移的顺序ID号,它唯一地标识分区中的每个记录。

 

Kafka集群持久保存所有已发布的记录 - 无论是否已使用 - 使用可配置的保留期。例如,如果保留策略设置为两天,则在发布记录后的两天内,它可供使用,之后将被丢弃以释放空间。Kafka的性能在数据大小方面实际上是恒定的,因此长时间存储数据不是问题。

 

 

 

实际上,基于每个消费者保留的唯一元数据是该消费者在日志中的偏移或位置。这种偏移由消费者控制:通常消费者在读取记录时会线性地提高其偏移量,但事实上,由于该位置由消费者控制,因此它可以按照自己喜欢的任何顺序消费记录。例如,消费者可以重置为较旧的偏移量来重新处理过去的数据,或者跳到最近的记录并从“现在”开始消费。
这些功能组合意味着Kafka 消费者consumers 非常cheap - 他们可以来来往往对集群或其他消费者没有太大影响。例如,您可以使用我们的命令行工具“tail”任何主题的内容,而无需更改任何现有使用者所消耗的内容。
日志中的分区有多种用途。首先,它们允许日志扩展到超出适合单个服务器的大小。每个单独的分区必须适合托管它的服务器,但主题可能有许多分区,因此它可以处理任意数量的数据。其次,它们充当了并行性的单位 - 更多的是它。

 Distribution分配

一个Topic的多个partitions,被分布在kafka集群中的多个server上;每个server(kafka实例)负责partitions中消息的读写操作;此外kafka还可以配置partitions需要备份的个数(replicas),每个partition将会被备份到多台机器上,以提高可用性.

基于replicated方案,那么就意味着需要对多个备份进行调度;每个partition都有一个server为"leader";leader负责所有的读写操作,如果leader失效,那么将会有其他follower来接管(成为新的leader);follower只是单调的和leader跟进,同步消息即可..由此可见作为leader的server承载了全部的请求压力,因此从集群的整体考虑,有多少个partitions就意味着有多少个"leader",kafka会将"leader"均衡的分散在每个实例上,来确保整体的性能稳定。

 Producers生产者

标签:每个,多个,分区,入门,介绍,Kafka,kafka,消费者
来源: https://www.cnblogs.com/longlyseul/p/16398695.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有