大连企业网站建设/0元免费做代理

大连企业网站建设,0元免费做代理,增城建设网站,ups国际快递网站建设一、RocketMQ 核心架构概述 ​1. 主要组件 ​Name Server: 集群的「中枢神经」,负责 Topic 元数据管理(如 Topic 分区分布、Broker 节点状态监控)。 ​Broker: 消息存储与流转的核心节点,负责消息的持久化…

一、RocketMQ 核心架构概述

在这里插入图片描述

​1. 主要组件

​Name Server: 集群的「中枢神经」,负责 Topic 元数据管理(如 Topic 分区分布、Broker 节点状态监控)。
​Broker: 消息存储与流转的核心节点,负责消息的持久化、读写请求处理。
​Producer: 消息生产者,负责将消息投递到指定的 Topic。
​Consumer: 消息消费者,从 Broker 拉取消息并处理。

​2. 集群部署模式

​Name Server 集群: 通常部署 2-3 个节点,通过 ​Raft 协议实现高可用,保障元数据一致性。
​Broker 集群: 至少部署 2 个 Broker(主从或异步复制),支持横向扩展,每个 Broker 可管理多个 Partition。

​二、Partition 分区机制

​1. 设计目的

​水平扩展: 通过增加 Partition 数量提升并行处理能力。
​负载均衡: 消费者可以分散到不同 Partition 消费,避免单点瓶颈。
​顺序性保障: 单个 Partition 内的消息按生产顺序严格递增,满足事务性场景需求。

​2. 实现细节

​Topic 与 Partition:
每个 Topic 可划分为多个 ​Ordered Partition​(顺序分区)和 ​Unordered Partition​(无序分区)。
默认情况下为 Ordered Partition,需显式配置 unordered=true 启用无序模式。
​分区分配策略:
​Hash 分布:根据 Message Key 的哈希值均匀分配到各个 Partition。
​Round Robin:无 Key 时轮询分配,适用于广播场景。
​数据存储:
每个 Partition 对应一个 ​CommitLog​(提交日志),所有消息按顺序追加写入。
​IndexFile:索引文件,记录消息在 CommitLog 中的物理偏移量,加速随机读取。

​3. 示例场景

Topic: ORDER_EVENT (4 Partitions)
Partition 0: 消息 1,3,5,7...
Partition 1: 消息 2,4,6,8...
Partition 2: 消息 9,11,13...
Partition 3: 消息 10,12,14...

三、不丢消息的实现机制

1. 持久化保障

​CommitLog 设计:
所有消息先写入 CommitLog,顺序追加保证原子性。
​刷盘策略: 支持同步刷盘(SyncFlush)和异步刷盘(AsyncFlush)。
​同步刷盘: 写入 CommitLog 后立即刷盘到磁盘(默认),牺牲性能换取零数据丢失。
​异步刷盘: 周期性批量刷盘,提升吞吐但存在极小丢数据风险(可配置 flushDiskType)。
​多副本机制:
​同步复制(SyncReplicate)​: 主 Broker 写入成功后,至少等待一个从 Broker 复制确认才返回生产者(default)。
​异步复制(AsyncReplicate)​: 主 Broker 立即返回,从 Broker 异步同步(适用于对一致性要求低的场景)。

2. 生产者端可靠性

​重试与幂等性:
生产者发送消息失败后自动重试(maxRetryTimes 配置)。
支持幂等消息(通过 MessageId 或 SequenceId 避免重复消费)。
​事务消息:
通过 ​本地事务 + RocketMQ 事务消息 实现最终一致性(如订单扣减与消息发送原子性)。

​3. 消费者端可靠性

​ACK 机制:
消费者拉取消息后需手动提交 Offset(enableAutoCommit=false 关闭自动提交)。
​消费失败重试:结合 RetryPolicy 实现自动重试或死信队列处理。
​Exactly-Once 语义:
通过 ​事务消息 + 消费者 Offset 管理 实现精确一次消费(如支付成功后消息不重复)。

4. 监控与告警

​Broker 监控: 监控磁盘使用率、网络延迟、请求堆积等指标,触发异常告警。
​SLA 策略: 配置副本同步超时时间(replicaSyncTimeoutMs),超时节点自动隔离。

​四、读写性能优化

​1. 写入性能优化

​批量压缩:
启用 compressEnable=true 和 compressAlgorithm=lz4,减少网络传输和磁盘占用。
​适用场景:文本类消息(如 JSON)压缩率可达 50%+。
​零拷贝技术:
​Netty 零拷贝:直接操作 ByteBuf,避免数据在 Java 内存与 Native 内存间多次拷贝。
​文件通道:通过 MappedByteBuffer 直接映射磁盘文件,提升 IO 效率。
​多线程写入:
Broker 使用 ​多线程模型​(默认 16 个线程)处理生产者请求,充分利用 CPU 资源。

​2. 读取性能优化

​批量拉取:
消费者单次拉取消息数量可配置(pullBatchSize),减少网络 round trip。
​多消费者并行消费:
同一 Partition 的多个消费者实例通过 ​Consumer Group 并行消费,提升吞吐量。
​索引加速:
​IndexFile 二分查找消息 Offset,将随机读取复杂度从 O(n) 降至 O(log n)。

3. 网络与存储优化

​TCP 协议优化:
使用 ​长连接 减少握手开销,启用 tcpNoDelay=true 禁用 Nagle 算法。
​SSD 存储:
Broker 数据盘部署 SSD,对比 HDD,IO 延迟降低 5-10 倍。
​分区策略优化:
根据负载动态扩容 Partition(需结合客户端版本支持)。

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

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

相关文章

单片机学完开发板,如何继续提升自己的技能?

很多人学完开发板后都会卡在一个尴尬的阶段:觉得自己会的东西不少,但又不知道下一步该干啥。会点C语言,能烧录程序,能点亮LED,玩转按键,搞定串口等等,能用开发板做点小玩意儿,但面对…

olmOCR大模型:支持结构化精准提取复杂PDF文件内容

基于streamlit与olmOCR大模型实现的pdf提取工具 import os import json import subprocess import pandas as pd from pathlib import Path import shutil import time import re import streamlit as st# 创建工作目录 WORKSPACE_DIR "olmocr_workspace" os.maked…

五模型对比!Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型多变量时间序列预测

目录 预测效果基本介绍程序设计参考资料 预测效果 基本介绍 光伏功率预测!五模型对比!Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型多变量时间序列预测(Matlab2023b 多输入单输出) 1.程序已经调试好,替换数据集后,仅运…

SQLMesh 系列教程:Airbnb数据分析项目实战

在本文中,我们将探讨如何利用dbt项目的代码库来实现一个简单的SQLMesh项目。本文的基础是基于Udemy讲师为dbt课程创建的示例项目,可以在这个GitHub repo中获得。这个dbt项目是相对完整的示例,我们将使用它作为模板来演示SQLMesh(下…

单片机写的小液晶屏驱动+汉字滚屏

单片机写的小液晶屏驱动汉字滚屏 stm32f401freertos内置HZK16 单片机汉字滚屏

【Golang那些事】go1.22和1.23 更新重点及测评

好久没有写文章了,攒了一年的Golang版本特性的技术点以及踩过的坑,那就在新年第一篇的文章中做一个总结吧: 一、关于迭代器 (一)迭代器去掉了共享共享内存 一个经典的面试题 说到Golang经典的面试题,大家可能都刷到过很多&…

【大模型实战篇】使用GPTQ量化QwQ-32B微调后的推理模型

1. 量化背景 之所以做量化,就是希望在现有的硬件条件下,提升性能。量化能将模型权重从高精度(如FP32)转换为低精度(如INT8/FP16),内存占用可减少50%~75%。低精度运算(如INT8&#xf…

【MySQL】架构

MySQL架构 和其它数据库相比,MySQL有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离。这种架构可以根据业务的需求和实…

国内首台太空采矿机器人亮相,宇宙资源开发迈入新阶段

随着地球资源的日益枯竭,人类将目光投向了浩瀚的宇宙。太空采矿作为一项前沿科技,正逐步从科幻走向现实。近日,中国矿业大学成功研制出国内首台太空采矿机器人,标志着我国在太空资源开发领域迈出了重要一步。 太空采矿并非新鲜概念…

Kubeasz工具快速部署K8Sv1.27版本集群(二进制方式)

文章目录 一、基本信息二、服务器初始化操作三、使用Kubeasz部署K8S集群四、验证集群 一、基本信息 1、部署需要满足前提条件: 注意1:确保各节点时区设置一致、时间同步;注意2:确保在干净的系统上开始安装;注意3&…

Java 文件和IO流基础(生动形象版)

系列文章目录 Java文件和IO流基础部分 文件VSIO流 文章目录 系列文章目录前言一、文件的定义和理解: 1.专业定义: 2.文件系统和路径: 二、IO流的定义和分类 1.定义:2.流的分类:修饰器模式的核心作用:基础结…

Linux驱动学习笔记(四)

高级字符设备进阶 1.一个完整的IO过程包含以下几个步骤:1应用程序向操作系统发起IO调用请求(系统调用);2操作系统准备数据,把IO设备的数据加载到内核缓冲区;3操作系统拷贝数据,把内核缓冲区的数据从内核空间拷贝到应用…

2025年,电脑还需要分区吗?

随着2025年的到来,电脑存储空间已经不像以前那么金贵,固态硬盘(SSD)容量更大、速度更快,云存储也成了日常标配。许多人开始质疑:电脑还需要像以前那样分区吗? 一、分区到底是什么意思&#xff…

Springboot项目集成maven-assembly-plugin进行打包

通常我们将应用部署到服务器的某个目录下,一般情况下我们会提供像target(存放应用jar包),bin(项目启动/停止脚本),config(项目配置文件),logs(项目…

鸿蒙NEXT项目实战-百得知识库01

代码仓地址,大家记得点个star IbestKnowTeach: 百得知识库基于鸿蒙NEXT稳定版实现的一款企业级开发项目案例。 本案例涉及到多个鸿蒙相关技术知识点: 1、布局 2、配置文件 3、组件的封装和使用 4、路由的使用 5、请求响应拦截器的封装 6、位置服务 7、三…

【DeepSeek应用】本地部署deepseek模型后,如何在vscode中调用该模型进行代码撰写,检视和优化?

若已成功在本地部署了 DeepSeek 模型(例如通过 vscode-llm、ollama 或私有 API 服务),在 VS Code 中调用本地模型进行代码撰写、检视和优化的完整流程如下: 1. 准备工作:确认本地模型服务状态 模型服务类型: 若使用 HTTP API 服务(如 FastAPI/Flask 封装),假设服务地址…

jenkins 配置邮件问题整理

版本:Jenkins 2.492.1 插件: A.jenkins自带的, B.安装功能强大的插件 配置流程: 1. jenkins->系统配置->Jenkins Location 此处的”系统管理员邮件地址“,是配置之后发件人的email。 2.配置系统自带的邮件A…

Android Coil3阶梯preload批量Bitmap拼接扁平宽图,Kotlin

Android Coil3阶梯preload批量Bitmap拼接扁平宽图&#xff0c;Kotlin <uses-permission android:name"android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name"android.permission.READ_EXTERNAL_STORAGE" /><uses-p…

C++基础 [八] - list的使用与模拟实现

目录 list的介绍 List的迭代器失效问题 List中sort的效率测试 list 容器的模拟实现思想 模块分析 作用分析 list_node类设计 list 的迭代器类设计 迭代器类--存在的意义 迭代器类--模拟实现 模板参数 和 成员变量 构造函数 * 运算符的重载 运算符的重载 -- 运…

【系统架构设计师】操作系统 - 特殊操作系统 ③ ( 微内核操作系统 | 单体内核 操作系统 | 内核态 | 用户态 | 单体内核 与 微内核 对比 )

文章目录 一、微内核操作系统1、单体内核 操作系统2、微内核操作系统 引入3、微内核操作系统 概念4、微内核操作系统 案例 二、单体内核 与 微内核 对比1、功能对比2、单体内核 优缺点3、微内核 优缺点 一、微内核操作系统 1、单体内核 操作系统 单体内核 操作系统 工作状态 : …