Kafka 基础快速入门

news2024/11/25 19:35:14

1、生产者

1、生产者发送消息流程

  1. 配置生产者参数属性和创建生产者对象

  2. 构建消息:ProducerRecord

  3. 发送消息:Send

  4. 关闭生产者

2、消费者

1、消费者接受消息流程

  1. 配置消费者参数属性和创建消费者对象

  2. 订阅主题

  3. 拉取消息并进行消费处理

  4. 提交消费偏移量,关闭消费者

2、消费者和消费组

每个消费者都有一个对应的消费组。当消息发布到主题后,只会被投递给订阅它的每个消费组中的一个消费者。

消费者和消费组与分区的关系

如上图,某个主题中共有4个分区(Partition):P0、P1、P2、P3。有两个消费组A和B都订阅了这个主题,消费组A中有4个消费者(C0、C1、C2和C3),消费组B中有2个消费者(C4和C5)。按照 Kafka 默认的规则,最后的分配结果是消费组A中的每一个消费者分配到1个分区,消费组B中的每一个消费者分配到2个分区,两个消费组之间互不影响。每个消费者只能消费所分配到的分区中的消息。换言之,每一个分区只能被一个消费组中的一个消费者所消费。

消费者个数变化所对应的分区分配的变化

假设目前某消费组内只有一个消费者C0,订阅了一个主题,这个主题包含7个分区:P0、P1、P2、P3、P4、P5、P6。也就是说,这个消费者C0订阅了7个分区,如下:

当消费组内又加入了两个新的消费者C1,C2,按照既定的逻辑,需要将原来消费者C0的部分分区分配给消费者C1,C2消费,如下图所示。消费者C0,C1和C2各自负责消费所分配到的分区,彼此之间并无逻辑上的干扰

3、消息投递模式

对于消息中间件而言,一般有两种消息投递模式:点对点(P2P,Point-to-Point)模式和发布/订阅(Pub/Sub)模式。

点对点模式是基于队列的,消息生产者发送消息到队列,消息消费者从队列中接收消息。

发布订阅模式定义了如何向一个内容节点发布和订阅消息,这个内容节点称为主题(Topic),主题可以认为是消息传递的中介,消息发布者将消息发布到某个主题,而消息订阅者从主题中订阅消息。主题使得消息的订阅者和发布者互相保持独立,不需要进行接触即可保证消息的传递,发布/订阅模式在消息的一对多广播时采用。Kafka 同时支持两种消息投递模式,而这正是得益于消费者与消费组模型的契合:

  • 如果所有的消费者都隶属于同一个消费组,那么所有的消息都会被均衡地投递给每一个消费者,即每条消息只会被一个消费者处理,这就相当于点对点模式的应用。

  • 如果所有的消费者都隶属于不同的消费组,那么所有的消息都会被广播给所有的消费者,即每条消息会被所有的消费者处理,这就相当于发布/订阅模式的应用。

消费组是一个逻辑上的概念,它将旗下的消费者归为一类,每一个消费者只隶属于一个消费组。每一个消费组都会有一个固定的名称,消费者在进行消费前需要指定其所属消费组的名称,这个可以通过消费者客户端参数 group.id 来配置,默认值为空字符串。

消费者并非逻辑上的概念,它是实际的应用实例,它可以是一个线程,也可以是一个进程。同一个消费组内的消费者既可以部署在同一台机器上,也可以部署在不同的机器上。

4、参数配置

  • bootstrap.servers:和生产者客户端 KafkaProducer 中的相同,用来指定连接 Kafka 集群所需的 broker 地址清单,具体内容形式为 host1:port1,host2:post,可以设置一个或多个地址,中间用逗号隔开,此参数的默认值为“”。注意这里并非需要设

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

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

相关文章

前后端传参中遇见的问题

前后端传参经常容易出错,本文记录开发springBootMybatis-plusvuecli项目中出现的传参问题及解决办法 1.前后端没有跨域配置,报错 解决方法:后端进行跨域配置,拷贝CorsConfig类 package com.example.xxxx.config;import org.spr…

基于springboot实现的销售评价系统

一、系统架构 前端:html | js | css | jquery 后端:springboot | springdata-jpa | thymeleaf 环境:jdk1.7 | mysql | maven 二、代码及数据库 三、功能介绍 01. 登录页 02. 业务模块-评分结果 03. 业务模块-评分管理 04. 基础模块-…

SLAM学习笔记002

严格意义上讲,ROS只是一套通信框架而已ros的几个特性: 元操作系统分布式通信机制松耦合软件框架丰富的开源功能库等 ros实际上是运行在ubuntu上的亚操作系统,或者说软件框架。但提供硬件抽象、函数调用、进程管理这些类似操作系统的功能ros…

火狐浏览器无法打开有道云笔记网页解决

User-Agent Switcher and Manager 安装插件:User-Agent Switcher and Manager 可以直接在火狐插件管理中搜索,或者打开 https://addons.mozilla.org/zh-CN/firefox/addon/user-agent-string-switcher/?utm_sourceaddons.mozilla.org&utm_mediumre…

华为交换机,配置OSPF与BFD联动示例

OSPF简介 定义 开放式最短路径优先OSPF(Open Shortest Path First)是IETF组织开发的一个基于链路状态的内部网关协议(Interior Gateway Protocol)。 OSPF把自治系统AS(Autonomous System)划分成逻辑意义上…

vue3引入高德地图报错Uncaught Error: Invalid Object: LngLat(NaN, NaN

问题&#xff1a; 原因&#xff1a;容器高度未设置 解决&#xff1a; 地图容器添加高度。 <style scoped> #map {width: 100%;height: 800px; } </style>

Agilent安捷伦33220A函数信号发生器

是德科技33220A(安捷伦)函数发生器为函数和波形提供了不折不扣的性能。有11个标准波形加上脉冲和任意波形&#xff0c;它是同类产品中频率最稳定和失真最低的函数发生器之一。 前面板允许用一两个键访问所有主要功能。旋钮或数字键盘可用于调整频率、振幅、偏移和其他参数。内…

代码随想录第三十四天(一刷C语言)|不同路径不同路径II

创作目的&#xff1a;为了方便自己后续复习重点&#xff0c;以及养成写博客的习惯。 一、不同路径 思路&#xff1a;参考carl文档 机器人每次只能向下或者向右移动一步&#xff0c;机器人走过的路径可以抽象为一棵二叉树&#xff0c;叶子节点就是终点。 1、确定dp数组&#…

高可用接入层技术演化及集群概述

集群概述 集群的介绍及优势 集群&#xff1a;将多台服务器通过硬件或软件的方式组合起来&#xff0c;完成特定的任务&#xff0c;而这些服务器对外表现为一个整体。集群的优势 高可靠性&#xff1a;利用集群管理软件&#xff0c;当主服务器故障时&#xff0c;备份服务器能够自…

为什么MCU在ADC采样时IO口有毛刺?

大家在使用MCU内部ADC进行信号采样一个静态电压时&#xff0c;可能在IO口上看到这样的波形。这个时候大家一般会认识是信号源有问题&#xff0c;但仔细观察会发现这个毛刺的频率是和ADC触发频率一样的。 那么为什么MCU在ADC采样时IO口会出现毛刺呢&#xff1f;这个毛刺对结果有…

APT80DQ60BG-ASEMI大电流二极管APT80DQ60BG

编辑&#xff1a;ll APT80DQ60BG-ASEMI大电流二极管APT80DQ60BG 型号&#xff1a;APT80DQ60BG 品牌&#xff1a;ASEMI 封装&#xff1a;TO-247 特性&#xff1a;插件、快恢复二极管 最大平均正向电流&#xff1a;80A 最大重复峰值反向电压&#xff1a;600V 恢复时间&am…

使用VBA快速统计词组词频(多单词组合)(2/2)

实例需求&#xff1a;产品清单如A列所示&#xff0c;现在如下统计多单词组合词组词频。 在上一篇博客中《使用VBA快速统计词组词频(多单词组合)&#xff08;1/2&#xff09;》讲解了如何实现双词的词频统计。 本文将讲解如何实现3词的词频统计&#xff0c;掌握实现方法之后&a…

从人的安全价值观看企业的安全发展

文章目录 每日一句正能量前言感受之一&#xff0c;安全价值观是体现个人人生价值的最高境界&#xff0c;是人与企业和谐发展的基本保障&#xff0c;也是企业安全发展的理论导向。感受之二&#xff0c;安全价值观是企业承担社会责任的主要表现&#xff0c;是体现企业价值的根基&…

容器技术:从虚拟机到轻量级容器的革命

一、引言 首先&#xff0c;什么是容器&#xff1f; 容器是一种沙盒技术&#xff0c;主要目的是为了将应用运行在其中&#xff0c;与外界隔离&#xff1b;及方便这个沙盒可以被转移到其它宿主机器。本质上&#xff0c;它是一个特殊的进程。通过名称空间&#xff08;Namespace&a…

Axure RP - 交互设计的强大引擎

目录 前言 1. 交互设计&#xff1a;连接用户与产品的纽带 2. 情景设计&#xff1a;预测用户行为的未来 3. 演示和共享&#xff1a;让设计活起来 我的其他博客 前言 在数字化时代&#xff0c;用户体验的重要性日益突显&#xff0c;而交互设计成为塑造产品与用户互动的关键。…

php-使用wangeditor实现富文本-遇见问题

一、在 PowerShell 中使用 npm install 命令时&#xff0c;命令行解析器可能会将 符号解释为特殊字符&#xff0c;导致出现错误。 报错 解决 方法一&#xff1a;使用反引号&#xff08;&#xff09;将包名括起来&#xff0c;以避免特殊字符的解析。修改命令为&#xff1a; …

对管理的一些思考

记得21年的时候&#xff0c;学习过《初探技术管理》&#xff0c;现在看来仍然是很有价值。 怎么判断自己是否有基础走上管理岗&#xff0c;我觉得最最基础的一点&#xff0c;是判断自己是否成为团队的主程。主程一般意味着对目前的系统有广泛、深入的了解&#xff0c;能够担任中…

VMWare Tools 共享目录设置

vmware tools安装完成后&#xff0c;进入到工项目录设置 点击虚拟机设置->硬件->CD/DVD(SATA) &#xff0c;勾选使用物理驱动器&#xff0c;勾选自动检测 1、windows 操作系统设置 设置共享文件夹时&#xff0c;需要勾选 “ 在windows客户机中映射为网络驱动器”。 设置…

From Human Attention to Computational Attention (1)

”is the taking possession by the mind, in clear and vivid form, of one out of what seem several simultaneously possible objects or trains of thought. It implies withdrawal from some things in order to deal effectively with others“&#xff0c;William Jame…

Python自动化测试之线上流量回放:分析、存储与本地化支持!

在自动化测试中&#xff0c;线上流量回放是一项关键技术&#xff0c;它可以模拟真实用户请求并重现线上场景&#xff0c;验证系统的性能和稳定性。本文将介绍Python自动化测试中的线上流量回放技术&#xff0c;并提供实战代码&#xff0c;帮助你了解日志分割解析、存储至本地My…