首页 > 其他分享 >基础介绍

基础介绍

时间:2023-12-06 17:15:12浏览次数:30  
标签:消费 消费者 分区 基础 介绍 Kafka 提交 数据

基本概念

简介

Kafka是由Apache开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。 对于像Hadoop一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。

特性

  1. 高吞吐量、低延迟:每秒可以处理几十万条消息,它的延迟最低只有几毫秒
  2. 可扩展性:集群支持热扩展
  3. 持久性、可靠性:消息被持久化到本地磁盘,并且 支持数据备份防止数据丢失
  4. 容错性:允许集群中节点失败(若副本数量为n,则允许n-1 个节点失败)
  5. 高并发:支持数千个客户端同时读写

术语

Procucer:消息生产者,向Kafka发消息的客户端
Consumer:消息消费者,向Kafka取消息的客户端
Consumer Group(CG):消费者组,由多个consumer组成。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费;消费者组之间互不影响。所有消费者都属于某个消费者组,消费者组是逻辑上的一个订阅者
Broker:一台Kafka服务器就是一个Broker。一个集群又多个Broker组成
Topic:队列,生产者和消费者面对的都是topic
Partition:分区,为了实现扩展性,一个topic可以分为多个partition,每个partition是一个有序队列
Replica:副本,一个topic每个分区都有若干个副本,一个leader和若干个follower
Leader:每个分区多个副本的主,生产者发送消息和消费者消费数据的对象都是leader
Follower:每个分区多个副本的从,实时从leader中同步数据,leader故障时某个follower会成为新的主

基础架构

生产者

发送流程

分区

分区优点

  • 便于合理使用存储资源,每个partition在一个broker上存储,可以把海量的数据按照分区切割成一块一块的数据存储在多个broker上,合理控制分区任务,可以实现负载均衡的效果
  • 提高并行度,生产者可以以分区为单位发送数据;消费者可以以分区为单位消费数据

分区策略

  • 在没有设置partition又没有设置key值的情况下,默认采用粘性分区,在一个分区数据发送之后再选择另一个分区

生产者吞吐量

batch.seiz:批次大小
linger.ms:等待时间
compression.type:压缩算法
buffer.memory:缓冲区大小

数据可靠性

ack=0:生产者发送数据,不需要等待落盘确认
ack=1:生产者发送数据,leader收到数据后确认
ack=-1:生产者发送数据,leader和follower收到后确认

生产者事务

发送时,设置唯一的transactional.id,kafka内部会有事务协调器来保证事务

消费者

消费流程

消费方式

pull

由consumer决定消费速率,kafka采用此方式,不足之处是如果没有数据,消费者会陷入到循环中,一直返回空数据

push

由broker决定消费速率,很难适应消费者的消费速率

Offset

自动提交

Kafka提供了自动提交offset的功能,相关参数如下:
enable.auto.commit:是否开启自动提交功能,默认true
auto.commit.interval.ms:自动提交间隔,默认5s

手动提交

虽然自动提交offset十分便利,但由于是基于时间提交的,开发人员难以把握提交时机,因此kafka也提供了手动提交的方式,手动提交分为同步提交和异步提交。同步提交必须等待提交完毕后才会消费下一批数据,会重试;异步提交发送完提交请求后就会开发消费下一批数据,不会重试,故可能提交失败

消费者事务

如果想完成consumer端的精准一次性消费,可以将cunsumer消费端消费过程和提交offset过程做原子绑定,保证事务

数据积压

如果是kafka消费能力不足,可以考虑增加topic的分区数,同事提升消费组的消费者数量,消费者数=分区数
如果是下游的数据处理不及时,批次拉去数据过少,可设置批次拉取的数量,参数如下
fetch.max.bytes:消费者获取一批消息最大的字节数
max.poll.records:消费者一个拉取消息的最大条数

标签:消费,消费者,分区,基础,介绍,Kafka,提交,数据
From: https://www.cnblogs.com/ding-dang/p/17606072.html

相关文章

  • 【JavaScript高级程序设计】-3语言基础
    3.1语法.........................................................213.1.1区分大小写..................................213.1.2标识符..........................................213.1.3注释..............................................223.1.4严格模式......
  • 多元线性回归基础part1
    发现新天地,欢迎访问概念回归分析是数据分析中最基础也是最重要的分析工具,绝大多数的数据分析问题,都可以使用回归的思想来解决。回归分析的任务就是,通过研究自变量X和因变量Y的相关关系,尝试去解释Y的形成机制,进而达到通过X去预测Y的目的。常见的回归分析有五类:线性回归、0‐1回......
  • 离散元分析有什么用?仿真软件介绍
    离散元分析是一种用于模拟颗粒材料行为的数值方法,它将颗粒材料看作由大量离散的颗粒或颗粒群组成的系统,通过模拟颗粒之间的相互作用来研究颗粒材料的力学行为、变形和破坏等现象。离散元分析在工程领域有着广泛的应用,为工程师提供了一个强大的工具,用于研究颗粒材料的行为和性能,为......
  • jsdoc基础
    /***2、函数*@param{string}a-参数1*@param{number}b-参数2*@returns{boolean}-返回值*/constsum=(a,b)=>{returnBoolean(a+b)}/***3、变量*@property{string}a-属性1*@property{111|222}b-属性2*/constobj={......
  • 【Python 千题 —— 基础篇】取余计算
    题目描述题目描述编写一个程序,接受用户输入的两个数字,然后计算这两个数字取余后的结果,并输出结果。输入描述输入两个数字,用回车隔开两个数字。输出描述程序将计算这两个数字取余后的结果,并输出结果。示例示例①73输出:1.0代码讲解下面是本题的代码:#描述:编写一个程序,接受用户输......
  • 【Python 千题 —— 基础篇】成绩评级
    题目描述题目描述期末考试结束,请根据同学的分数为该同学评级。A:90~100B:80~89C:70~79D:60~69E:0~60输入描述输入同学的分数。输出描述输出该同学的等级。示例示例①输入:79输出:同学的等级是:C代码讲解下面是本题的代码:#描述:期末考试结束,请根据同学的分数为该同学评级。#A......
  • 互联网医院牌照|互联网医院资质申办条件和材料介绍
    互联网医院现在发展的非常快,开发的公司也越来越多,系统也是琳琅满目的,对于系统还是选择适合的比较重要,外观只是一方面,还有就是后续维护等等,有了系统就可以申请互联网医院牌照了,接下来小编就简单给大家介绍一下互联网医院资质申办的条件和材料。一、互联网医院牌照办理流程:1.确定业......
  • Python学习前准备之MarkDown语法基础
    MarkDown基础语法[一]Typora(1)下载官网:Typora官方中文站(typoraio.cn)正版价格及介绍:89元/3台设备;89元三个设备码(重装系统设备码失效)绿色版:网盘链接[.\Typora\resources文件夹下替换(app.asar)](2)部分设置主题更改:Typora官方主题库下载完成后,解压压缩包后将.css......
  • Python基础之计算机基础
    计算机基础【一】计算机组成原理(1)什么是计算机?计算机是一种通电的智能设备,被称为电脑,拥有处理数据、执行指令的能力,是现代科技和信息社会的重要工具电脑又可以理解为通电的大脑电脑二字蕴含了人类对计算机的终极期望,希望它能真的像人脑一样去工作,实现自动化,提高工作效率,解......
  • Python基础之编程语言
    【引】编程语言和编程(1)什么是语言?语言是“人”与“人”之间沟通交流、传递信息的媒介,例如:汉语、英语,小蜜蜂翅膀的震动,猿猴的吼叫等(2)什么是编程语言?编程语言就是人类与计算机沟通交流的媒介(3)什么是编程?编程是指将人类思维逻辑翻译成计算机能够理解和执行的指令,将这些指......