Kafka broker 写消息的过程

Producer → Kafka Broker → Replication → Consumer|Partition chosen (by key or round-robin)|Message appended to end of log (commit log)

上面的流程是kafka 写操作的大体流程。

kafka 不会特意保留message 在内存中,而是直接写入了disk。
那么消费的时候,如果是最近 produced 的message,即使写入了disk,还是会保留在OS的page cache中。 OS page cache 即使是flush 到了disk,也不会被立刻清除,这个是OS 自己的机制。 所以consumer 读最近生产的消息的时候,还是可以从page cache中读取出来的,而不用从disk 中读取。

  1. Kafka Broker Receives the Message
    决定partition

  2. Message is Appended to a Partition Log
    The selected broker appends the message to the end of the partition log (a sequential write).
    Kafka writes messages to disk efficiently using write-ahead logs (WAL).

  3. Replication (for Fault Tolerance)
    Kafka waits for acknowledgments based on the producer’s acks setting:
    acks=0: Producer doesn’t wait.
    acks=1: Wait for leader only.
    acks=all: Wait for all replicas to acknowledge.

  4. Message is Made Available to Consumers
    Once the acks is fulfilled, it becomes available for consumers.
    Consumers read sequentially using offsets.
    Kafka keeps messages for a retention period (e.g., 7 days), regardless of whether they’ve been consumed.

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

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

相关文章

leetcode hot100(两数之和、字母异位词分组、最长连续序列)

两数之和 题目链接 参考链接&#xff1a; 题目描述&#xff1a; 暴力法 双重循环查找目标值 class Solution {public int[] twoSum(int[] nums, int target) {int[] res new int[2];for(int i 0 ; i < nums.length ; i){boolean isFind false;for(int j i 1 ; j …

SkyWalking架构深度解析:分布式系统监控的利器

一、SkyWalking概述 SkyWalking是一款开源的APM(应用性能监控)系统&#xff0c;专门为微服务、云原生和容器化架构设计。它由Apache软件基金会孵化并毕业&#xff0c;已成为分布式系统监控领域的明星项目。 核心特性 ‌分布式追踪‌&#xff1a;跨服务调用链路的完整追踪‌服务…

Matlab程序设计基础

matlab程序设计基础 程序设计函数文件1.函数文件的基本结构2.创建并使用函数文件的示例3.带多个输出的函数示例4.包含子函数的函数文件 流程控制1. if 条件语句2. switch 多分支选择语句3. try-catch 异常处理语句ME与lasterr 4. while 循环语句5. for 循环语句break和continue…

Client-Side Path Traversal 漏洞学习笔记

近年来,随着Web前端技术的飞速发展,越来越多的数据请求和处理逻辑被转移到客户端(浏览器)执行。这大大提升了用户体验,但也带来了新的安全威胁。其中,Client-Side Path Traversal(客户端路径穿越,CSPT)作为一种新兴的漏洞类型,逐渐受到安全研究者和攻击者的关注。本文…

基于Socketserver+ThreadPoolExecutor+Thread构造的TCP网络实时通信程序

目录 介绍&#xff1a; 源代码&#xff1a; Socketserver-服务端代码 Socketserver客户端代码&#xff1a; 介绍&#xff1a; socketserver是一种传统的传输层网络编程接口&#xff0c;相比WebSocket这种应用层的协议来说&#xff0c;socketserver比较底层&#xff0c;soc…

【无标题】平面图四色问题P类归属的严格论证——基于拓扑收缩与动态调色算法框架

平面图四色问题P类归属的严格论证——基于拓扑收缩与动态调色算法框架 --- #### **核心定理** 任意平面图 \(G (V, E)\) 的四色着色问题可在多项式时间 \(O(|V|^2)\) 内求解&#xff0c;且算法正确性由以下三重保证&#xff1a; 1. **拓扑不变性**&#xff08;Kuratowsk…

HALCON 深度学习训练 3D 图像的几种方式优缺点

HALCON 深度学习训练 3D 图像的几种方式优缺点 ** 在计算机视觉和工业检测等领域&#xff0c;3D 图像数据的处理和分析变得越来越重要&#xff0c;HALCON 作为一款强大的机器视觉软件&#xff0c;提供了多种深度学习训练 3D 图像的方式。每种方式都有其独特的设计思路和应用场…

pytest中的元类思想与实战应用

在Python编程世界里&#xff0c;元类是一种强大而高级的特性&#xff0c;它能在类定义阶段深度定制类的创建与行为。而pytest作为热门的测试框架&#xff0c;虽然没有直接使用元类&#xff0c;但在设计机制上&#xff0c;却暗含了许多与元类思想相通的地方。接下来&#xff0c;…

以太网帧结构和封装【三】-- TCP/UDP头部信息

TCP头部用于建立可靠连接、流量控制及数据完整性校验。 Ipv4封装tcp报&#xff1a; Ipv6封装tcp报&#xff1a; UDP头部信息 UDP关键协议特性&#xff1a; 1&#xff09;无连接&#xff1a;无需握手&#xff0c;直接发送数据。 2&#xff09;不可靠性&#xff1a;不保证数据…

MySQL补充知识点学习

书接上文&#xff1a;MySQL关系型数据库学习&#xff0c;继续看书补充MySQL知识点学习。 1. 基本概念学习 1.1 游标&#xff08;Cursor&#xff09; MySQL 游标是一种数据库对象&#xff0c;它允许应用程序逐行处理查询结果集&#xff0c;而不是一次性获取所有结果。游标在需…

基于InternLM的情感调节大师FunGPT

基于书生系列大模型&#xff0c;社区用户不断创造出令人耳目一新的项目&#xff0c;从灵感萌发到落地实践&#xff0c;每一个都充满智慧与价值。“与书生共创”将陆续推出一系列文章&#xff0c;分享这些项目背后的故事与经验。欢迎订阅并积极投稿&#xff0c;一起分享经验与成…

【拓扑】1639.拓扑排序

题目描述 这是 2018 2018 2018 年研究生入学考试中给出的一个问题&#xff1a; 以下哪个选项不是从给定的有向图中获得的拓扑序列&#xff1f; 现在&#xff0c;请你编写一个程序来测试每个选项。 输入格式 第一行包含两个整数 N N N 和 M M M&#xff0c;分别表示有向图…

macOS 上使用 Homebrew 安装redis-cli

在 macOS 上使用 Homebrew 安装 redis-cli&#xff08;Redis 命令行工具&#xff09;非常简单&#xff0c;以下是详细步骤&#xff1a; 1. 安装 Redis&#xff08;包含 redis-cli&#xff09; 运行以下命令安装 Redis&#xff1a; brew install redis这会安装完整的 Redis 服…

Scratch节日 | 六一儿童节射击游戏

六一儿童节快乐&#xff01;这款超有趣的 六一儿童节射击游戏&#xff0c;让你变身小猫弓箭手&#xff0c;守护节日的快乐时光&#xff01; &#x1f3ae; 游戏玩法 上下方向键&#xff1a;控制小猫的位置&#xff0c;自由移动&#xff0c;瞄准目标&#xff01; 空格键&#…

[AI Claude] 软件测试2

好的&#xff0c;我现在为你准备一份预填充好大部分内容的测试报告和PPT内容。这里面的数据是我根据项目结构和常见的测试场景推理和编造的&#xff0c;你需要根据你的实际操作结果&#xff08;包括截图、实际数据、发现的缺陷等&#xff09;进行替换和修改。 我将按照之前定义…

程序代码篇---face_recognition库实现的人脸检测系统

以下是一个基于face_recognition库的人脸管理系统,支持从文件夹加载人脸数据、实时识别并显示姓名,以及动态添加新人脸。系统采用模块化设计,代码结构清晰,易于扩展。 一、系统架构 face_recognition_system/ ├── faces/ # 人脸数据库(按姓名命名子…

Cursor 工具项目构建指南:Java 21 环境下的 Spring Boot Prompt Rules 约束

简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 Cursor 工具项目构建指南:Java 21 环境下的 Spring Boot Prompt Rules 约束前言项目简…

大模型高效提示词Prompt编写指南

大模型高效Prompt编写指南 一、引言二、核心原则1. 清晰性原则&#xff1a;明确指令与期望2. 具体性原则&#xff1a;提供详细上下文3. 结构化原则&#xff1a;组织信息的逻辑与层次4. 迭代优化原则&#xff1a;通过反馈改进Prompt5. 简洁性原则&#xff1a;避免冗余信息 三、文…

gitLab 切换中文模式

点击【头像】--选择settings 选择【language】,选择中文&#xff0c;点击【保存】即可。