kafka基础概念二

news2024/9/22 7:26:44

1.Kafka中主题和分区的概念

1.主题Topic

主题-topic在kafka中是一个逻辑的概念,kafka通过topic将消息进行分类。不同的topic会被订阅该topic的消费者消费

但是有一个问题,如果说这个topic中的消息非常非常多,多到需要几T来存,因为消息是会被保存到10g日志文件中的。为了解决这个文件过大的问题,kafka提出了Partition分区的概念

2.分区Partition

1)分区的概念

通过partition将一个topic中的消息分区来存储。这样的好处有多个:

  • 分区存储,可以解决统一存储文件过大的问题
  • 提供了读写的吞吐量:读和写可以同时在多个分区中进行
    在这里插入图片描述
2)创建多分区的主题
[root@k8s-master bin]# kafka-topics.sh --create --bootstrap-server 10.0.8.2:9092 --replication-factor 1 --partitions 2 --topic test1

分区的作用:

  • 可以分布式存储
  • 可以并行写

实际上是存在data/kafka-logs/test-0 和 test-1中的0000000.log文件中,且消费者定期将自己消费分区的ofset提交给kafka内部 topic

小细节:

  • 00000.og:这个文件中保存的就是消息
  • __consumer_offsets-49:
    kafka内部自己创建了_consumer_offsets主题包含了50个分区。这个主题用来存放消费者消费某个主题的偏移量。因为每个消费者都会自己维护着消费的主题的偏移量,也就是说每个消费者会把消费的主题的偏移量自主上报给kafka中的默认主题:__consumer_offsets。因此kafka为了提升这个主题的并发性,默认设置了50个分区。
    提交到哪个分区:通过hash函数:hash(consumerGroupld)%consumer offsets主题的分区数。提交到该主题中的内容是:key是consumerGroupld+topic+分区号,value就是当前offset的值
  • 文件中保存的消息,默认保存7天。七天到后消息会被删除。

2.kafka集群操作

kafka集群搭建之前博客有介绍,且部署文档百度搜索很多,不过多赘述;

1.搭建kafka集群(三个broker)

创建三个server.properties文件.
#0 1 2
broker.id=2
// 9092 9093 9094
listenerS=PLAINTEXT://192.168.65.60:9094//kafka-logs kafka-logs-l kafka-logs-2log.dir=/usr/local/data/kafka-logs-2
通过命令来启动三台broker.
/kafka-server-start.sh-daemon  ../config/server.properties
/kafka-server-start.sh-daemon  ../config/serverl.properties 
./kafka-server-start.sh-daemon  ../config/server2.properties

校验是否启动成功
进入到zk中查看/brokers/ids中过是否有三个znode(0,1,2)

2. 副本的概念

在创建主题时,除了指明了主题的分区数以外,还指明了副本数,那么副本是一个什么概念呢?
副本是为了为主题中的分区创建多个备份,多个副本在kafka集群的多个broker中,会有一个副本作为leader,其他是follower。
在这里插入图片描述
在这里插入图片描述

  • leader:
    kafka的写和读的操作,都发生在leader上。leader负责把数据同步给folower。当leader挂了,经过主从选举,从多个follower中选举产生一个新的leader
  • follower
    接收leader的同步的数据
  • isr:
    可以同步和已同步的节点会被存入到isr集合中。这里有一个细节:如果isr中的节点性能较差,会被提出isr集合

此时,broker、主题、分区、副本 这些概念就全部展现了;
集群中有多个broker,创建主题时可以指明主题有多个分区(把消息拆分到不同的分区中存储),可以为分区创建多个副本,不同的副本存放在不同的broker里。

3.关于集群消费

  • 向集群发送消息:
kafka-console-consumer.sh--bootstrap-server 172.16.253.38:9092,172.16.253.38:9093,172.16.253.38:9094 --from-beginning --consumer-property group.id=testGroupl --topic my-replicated-topic
  • 从集群中消费消息
kafka-console-producer.sh--broker-list 172.16.253.38:9092,172.16.253.38:9093,172.16.253.38:9094 --topicmy-replicated-topic
  • 指定消费组来消费消息
kafka-console-consumer.sh --bootstrap-server 172.16.253.38:9092,172.16.253.38:9093,172.16.253.38:9094 --from-beginning  --consumer-property group.id=testGroup1 --topicmy-replicated-topic

分区分消费组的集群消费中的细节
在这里插入图片描述

  • 一个partition只能被一个消费组中的一个消费者消费,目的是为了保证消费的顺序性,但是多个partion的多个消费者消费的总的顺序性是得不到保证的,那怎么做到消费的总顺序性呢?
  • partition的数量决定了消费组中消费者的数量,建议同一个消费组中消费者的数量不要超过partition的数量,否则多的消费者消费不到消息
  • 如果消费者挂了,那么会触发rebalance机制(后面介绍),会让其他消费者来消费该分区

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

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

相关文章

LVS-Nat和Dr模式集群原理及部署

目录 一.lvs-nat模式集群原理及部署方法 1.实验环境 2.思路图 3.lvs配置1: 4.lvs配置2: 5.webserver1配置: 6.webserver2配置: 7.lvs配置: 二.lvs-dr模式原理集群及部署方法 1.实验环境 2.思路图 3.client: 简单配置i…

C++ 类与对象

面向对象程序设计基本特点 特点: 抽象(数据抽象,行为抽象) 数据抽象:int hour,int minute.....,车:长,宽,高.... 功能抽象:showTime(),setTime() .....车:刹车…

rocketMQ5.0事务消息实战一

事务消息逻辑 首先我们来docker 部署rocketMQ与rocketMQDashBoard docker ps查看rocketMQ 容器名称 docker ps 进入容器内部 docker exec -it rmqnamesrv /bin/bash 创建事务消息 sh mqadmin updateTopic -c DefaultCluster -t TRANSACTIONTopic -n 127.0.0.1:9876 -a mes…

8.8 day bug

bug1 好家伙,最后一个t没看到,愣是学了一个小时原理和用法,都找不出问题在哪

基于Java中的SSM框架实现远程同步课堂系统项目【项目源码+论文说明】计算机毕业设计

基于Java中的SSM框架实现远程同步课堂系统演示 远程同步课堂系统设计与实现 摘要:在这样一个网络数据大爆炸的时代,人们获取知识、获取信息的通道非常的多元化,通过网络来实现数据信息的获取成为了现在非常常见的一种方式,而通过…

一款多功能漏洞利用管理与搜索工具(非常详细)零基础入门到精通,收藏这一篇就够了

sicat 介绍 SiCat是一款多功能漏洞利用管理与搜索工具,旨在帮助广大研究人员有效地识别和收集来自开源和本地存储库的漏洞信息。 SiCat 的主要优势在于它能够遍历在线和本地资源来收集有关相关漏洞的信息。该工具可帮助网络安全专业人员和研究人员了解潜在的安全风…

我主编的电子技术实验手册(13)——电磁元件之继电器

本专栏是笔者主编教材(图0所示)的电子版,依托简易的元器件和仪表安排了30多个实验,主要面向经费不太充足的中高职院校。每个实验都安排了必不可少的【预习知识】,精心设计的【实验步骤】,全面丰富的【思考习…

TCP 通信全流程分析:从连接建立到数据传输的深度探索

目录 一、TCP报头 二、三次握手 三、数据传输 四、四次挥手 本文通过一次TCP通信过程的分析来学习TCP协议 一、TCP报头 如图是一份TCP报文的报头,标准报头是20个字节,还可带有选项报头,也就是TCP报头的最小长度是20字节。以下是对报头的各…

一位入门者关于 JavaScript 单线程的一些思考

人们一提起 JavaScript 就会想起单线程,那么为什么会这样呢?这经得住推敲吗?不同的执行环境又有什么差异呢? 带着这些问题,我通过自问自答的方式,整理了一份关于 Javascript 单线程的知识汇总 整体的思考…

AI学习记录 - gpt如何进行token化,理论知识,以GPT2为举例

AI学习记录已经发了十几篇,大佬们可以看看,如果有帮助动动小手点赞 token入门版,有空会更新具体代码操作,能学到一点东西的话,大佬们点个赞!!! GPT4当中,我们提问问题是…

Webpack构建工具

1 概述 Webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)。 它的主要作用是将多个松散的模块,包括 JavaScript、CSS、图片、字体等资源,按照指定的规则和依赖关系打包成一个或多个优化后的静态资源文件…

基于RHEL7系统搭建PXE技术体系

目录 一、kickstart自动化安装脚本制作 1、实验前提 2、安装图形界面并启动,关闭DHCP服务 3、安装图形化生成kickstart自动安装脚本的工具并启动 二、搭建DHCP服务并测试脚本 1、安装dhcp 2、生成配置文件 3、编辑配置文件 三、搭建pxe网络安装环境实现服务…

centos安装maven

1.下载maven 去官网选择自己需要的版本 Maven – Download Apache Maven 复制链接 2.使用wget下载 先切换到opt文件夹 再将复制的链接使用wget下载 因为wget下载速度很慢,所以这里使用https://mirrors.tuna.tsinghua.edu.cn镜像 cd /opt wget https://mirrors.tu…

交易困境如何克服,可以先浏览Anzo Capital 昂首资本官网

是不是经常有这样的交易员,常因感到“我知道得不够多”而在交易中做出不合逻辑的行为。在这种心态下,交易员总想寻找更优秀的交易者、更佳的买卖时机以及更有效的策略。事实上,这类追求往往陷入过多无用信息的泥潭,让人难以甄别哪…

【系统架构设计师】二十五、大数据架构设计理论与实践③

目录 六、大数据架构设计案例分析 6.1 Lambda架构在某网奥运中的大数据应用 6.2 Lambda架构在某网广告平台的应用与演进 6.2.1 第一版架构 6.2.1 第二版架构 6.2.3 第三版架构 6.3 某证券公司大数据系统 6.4 某电商智能决策大数据系统 六、大数据架构设计案例分析 6.…

centos上传工具

yum install lrzsz 安装完成之后 作用是 输入 rz 可以本地上传文件

【生成式人工智能-八-大型语言模型的能力评估】

语言模型的能力评估 评估难度来自哪里输出没办法确定给出选择题本身就没标准答案 评估方法人力用语言模型来评估语言模型语言模型的偏爱 评估语言模型的数据集评估模型的不同能力阅读长文的能力心智测验道德性测试安全性测试 通常情况下我们想到的语言模型能力评估,…

图神经网络实战(18)——消息传播神经网络

图神经网络实战(18)——消息传播神经网络 0. 前言1. 消息传播神经网络2. 实现 MPNN 框架小结系列链接 0. 前言 我们已经学习了多种图神经网络 (Graph Neural Networks, GNN) 变体,包括图卷积网络 (Graph Convolutional Network, GCN)、图注意…

在macOS平台上通过Jenkins远程打包报错,提示errSecInternalComponent

问题:在macOS平台上通过Jenkins远程打包报错,提示errSecInternalComponent 原因 出现这个问题的主要原因:Jenkins以ssh方式到slave机上,默认是没有账户的,但是访问钥匙串要求必须有用户身份 通过Xcode打包的过程中&am…

Ps:通过 RGB 值计算 HSB 值

在 Photoshop 中,HSB(色相、饱和度和明度)仅作为表达颜色的一种方式而存在,并不是一种颜色模式。 色相/饱和度命令就是基于色彩三要素进行调色的常用命令。 还有一个与 HSB 相关的滤镜:HSB/HSL 滤镜,用于实…