kafka学习之基本概念

news2024/11/24 13:33:04

一、kafka常用基本概念

producer:生产者,生产并发送消息的一方。

consumer:消费者,接收消费消息的一方。

topic:一类消息的集合。在kafka中,消息以主题为单位进行归类,producer负责将消息发送到指定的主题,而consumer负责订阅主题并进行消费。

kafka中的一条消息其实就是一个包含<topic,partition,offset>消息三元组。

broker:服务代理节点。对于Kafka而言,Broker可以简单地看作一个独立的Kafka服务节点或Kafka服务实例。一个kafka集群中会有多个broker节点。一个broker可以容纳多个 topic。

partition:topic是一个逻辑上的概念,它还可以细分为多个分区,一个分区只属于单个topic,很多时候也会把分区称为主题分区(Topic-Partition)。同一主题下的不同分区包含的消息是不同的,分区在存储层面可以看作一个可追加的日志(Log)文件,消息在被追加到分区日志文件的时候都会分配一个特定的偏移量(offset)。offset是消息在分区中的唯一标识,Kafka通过它来保证消息在分区内的顺序性,不过offset并不跨越分区,也就是说,Kafka保证的是分区有序而不是topic有序。

producer在发送消息时候,具体发送到哪个pritition,有以下规则确定:

        kafka默认轮询规则;

        producer指定key,根据key的hash值,分配partition;

        producer自定义规则;

replication:partition的副本,从leader replica同步数据,当kafka服务挂了之后,防止数据丢失。副本的数量不能超过broker的数量,否则创建主题时会失败。

        领导者副本(leaderreplica):响应客户端发来的消息写入和消息消费请求。

        追随者副本(followerreplica):从领导者副本同步数据,不响应客户端的读写请求。

segment:partition物理上由多个segment组成。segment中存储了索引和log数据。

offset:每个partition都由一系列有序的、不可变的消息组成,这些消息被连续的追加到partition中。partition中的每个消息都有一个连续的序列号叫做offset,用于partition唯一标识一条消息。

consumer group:kafka消费者组,一个组内可以有多个消费者,一个partition的消息只能被同一个组内的一个消费者消费。多个消费者组之间互相不影响。

二、kafka原理图

1.kafka基本概念图示

        如图所示,一个producer,两个broker,一个topicA(两个partition,两个副本),一个消费者组(两个消费者)。

         如上图所示,topic1中的两个partition分别在两个broker上面,其中两个副本也分布在两个broker上面,并且leader partition和follow partition分别在不同的broker上面,这样的目的是保证了kafka的高可用性,当任意一个broker挂掉之后,kafka仍然保证消息不丢失,服务的可用性。

        leader partition负责提供读写服务,当leader partition挂掉之后,kafka会从follow partition中选举新的leader partition来提供读写服务。

2.partition结构图

        partition中又细分为更小的存储单元segment,segment中存储索引和log数据,数据在partition追加,保证kafka消息在partition中的有序性。

        segment的设计结构,在kafka中消息比较多的时候,清理起来效率更高,比单独操作一个更大的partition文件要方便的多,所以partition中又细分了segment存储单元。

三、常用命令

在kafka按照目录下,进入到bin目录下执行如下常用命令:

#进入到bin目录

cd /kafka/bin

#创建/删除topic

sh kafka-topics.sh --zookeeper localhost:2181 --create --topic test --replication-factor 1 --partitions 1

sh kafka-topics.sh --zookeeper localhost:2181 --delete --topic test

#生产数据

sh kafka-console-producer.sh --broker-list localhost:9092 --topic test

#消费数据

sh kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test

sh kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning

#查看消费组情况

sh kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list

sh kafka-consumer-groups.sh --bootstrap-server localhost:9092  --group group_test --describe

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/14181.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

云服务器 宝塔部署SpringBoot前后端分离项目

🦆博主介绍:小黄鸭技术 🌈擅长领域:Java、实用工具、运维 👀 系列专栏:📢开发工具 Java之路 八股文之路 📧如果文章写作时有错误的地方,请各位大佬指正,一起进…

舆情监控究竟是什么?怎么运作的?

本文首发于:行者AI谛听 随着互联网的加速变化,舆论已成为影响国家政治、社会生活和公众情绪的重要因素,也是影响企业形象和长远发展的重要因素。能及时收集精准措施以及预防减少和消除舆论带来的影响,是行业长远发展的关键条件。下…

泰凌微蓝牙 HCI层事件的注册和使用

Controler HCI event是通过HCI将Controller所有的event报告给Host HCI event是按BLE Spec标准设计的,是BLE Controller和Host用来交互的事件;GAP event是BLE host定义的一些协议栈流程交互时间通知型事件。 HCI event类型 #define HCI_EVT_DISCONNEC…

【Hack The Box】windows练习-- Object

HTB 学习笔记 【Hack The Box】windows练习-- Object 🔥系列专栏:Hack The Box 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 📆首发时间:🌴2022年11月17日🌴 &#x1…

链表oj题(第一弹)

通过前两篇博客我们了解了链表的实现,那么今天我们来看看链表的oj题是如何完成的。 1、移除链表元素 题目要求我们删掉与val相同的节点。 方法一:我们可以写一个循环,首先创建两个节点,一个头节点,一个尾节点&#x…

Jmeter常用函数__V和__intSum

文章目录一、__V详解1、作用2、示例二、__intSum详解1、作用2、示例三、示例--随机用户名四、示例--随机对应的用户名和密码一、__V详解 1、作用 执行变量表达式,并返回执行的结果可以执行嵌套函数 2、示例 1、固定值和随机数组合 ${__V(1.${__Random(1,10,)})}…

[附源码]java毕业设计民宿客栈管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

[Python]Django 模型

🍉 前言 系列文章目录 [Python]目录 文章目录🍉 前言🍉 Django 模型🍉 定义模型🥝 语法🥝 常用模型字段类型🥑 AutoField🥑 BooleanField🥑 NullBooleanField&#x1f95…

【服务器搭建】教程二:快速搭建我们服务器 进来看

前言: 购买一台服务器,再来个域名,搭建一个自己的个人博客,把一些教程、源码、想要分享的好玩的放到博客上,供小伙伴学习玩耍使用。 我把这个过程记录下来,想要尝试的小伙伴,可以按照步骤&#…

Jmeter连接数据库_postgresql

文章目录一、下载驱动包(.jar)1. 下载对应的安装包2、放在Jmeter的lib目录下二、Jmeter中的操作1、测试计划2、JDBC Connection Configuration3、JDBC Request三、具体示例一、下载驱动包(.jar) 不同的数据区需要的驱动包不同&am…

Systemd Rsync 文件定时同步

1. 环境 操作系统:CentOS 7 主机: master 192.168.0.98backup 192.168.0.166 目标:每天凌晨3点从master 上/www增量的复制到backup上。 2. 配置主机的免密登录 在Backup上配置主机的免密登录,请参考 SSH 公钥免密登录[1] 3. Rsync 服…

一只程序猿很黄很暴力的日记

一些基础概念: Socket(s):主板上面的物理 CPU 插槽。 Core(s):一个 CPU 一般包含 2~4 个 core,即 Core(s) per socket。 Thread(s):一个 core 包含多个可以并行处理任务的 thread,即 Thread(s) per core…

MySQL8.0优化 - SQL执行流程

文章目录学习资料SQL执行流程MySQL执行流程图查询流程1.查询缓存2.解析器3.优化器4.执行器学习资料 【MySQL数据库教程天花板,mysql安装到mysql高级,强!硬!-哔哩哔哩】 【阿里巴巴Java开发手册】https://www.w3cschool.cn/aliba…

每天学习一个css之linear-gradient

linear-gradient的使用 介绍 CSS linear-gradient() 函数用于创建一个表示两种或多种颜色线性渐变的图片。其结果属于<gradient>数据类型&#xff0c;是一种特别的<image>数据类型 语法 linear-gradient([ <angle> | to <side-or-corner> ,]? <…

使用Kubernetes部署Kubernetes集群

Kubernetes集群环境搭建 文章目录Kubernetes集群环境搭建一、环境初始化1、查看操作系统的版本2、主机名解析3、时钟同步4、禁用swap分区5、开启IP转发&#xff0c;和修改内核信息---三个节点都需要配置6、配置IPVS功能&#xff08;三个节点都做&#xff09;二、安装docker1、切…

【学习笔记】kafka学习二

生产者-同步消息发送 如果生产者发送消息没有收到ack&#xff0c;会阻塞到3s时间&#xff0c;如果还没收到消息&#xff0c;会重试&#xff0c;重试3次 生产者-异步消息发送&#xff08;缺点&#xff1a;消息丢失情况&#xff0c;同步更优&#xff09; 生产者发送消息后可以直…

脚本是什么意思?有什么特点?与RPA有哪些区别?

脚本是什么意思&#xff1f;有什么特点&#xff1f;与RPA有哪些区别&#xff1f;相信还有不少人对于这三个问题不是很清楚&#xff0c;今天我们小编就给大家来简单回答一下&#xff0c;仅供参考哦&#xff01; 脚本是什么意思&#xff1f; 脚本简单地说就是一条条的文字命令&a…

Linux系统如何重装Windows系统

背景 因为种种原因安装了Linux系统Ubuntu 18.04.6,随之迎来了种种麻烦&#xff0c;于是决定安装回Windows 10系统。 安装步骤如下&#xff1a; 安装步骤一、选择需要安装的系统二、查看CPU运行位数三、下载镜像&#xff08;换一台Windows系统或者使用虚拟机&#xff09;四、创建…

《FFmpeg Basics》中文版-04-调整和伸缩视频

正文 在FFmpeg中调整视频的大小意味着可以通过一个选项改变其宽度和高度&#xff0c;而缩放则意味着使用一个具有高级功能的scale filter来改变帧的大小。 调整视频 输出视频的宽度和高度可以在输出文件名之前设置-s选项。视频分辨率以wxh格式输入&#xff0c;其中w为像素宽…

驱动——ioctl数组及结构体传递

1、ioctl函数是用户程序来控制设备的函数 int ioctl(int fd, unsigned long request, ...); 函数功能&#xff1a;设备控制 参数&#xff1a; fd:文件描述符 request&#xff1a;请求码 ...:可变参数 需要传递地址 返回值&#xff1a;成功返回0&#xff0c;失败返回-1&a…