RabbitMQ 交换机不神秘!类比快递分拣中心,5 分钟搞懂消息路由规则

一文带你弄懂thermal governor IPA 当current temp < target temp时,使用k_pu,当current temp >= target temp时,使用k_po。如果current_temperature = switch_on_temp时,则k_p = k_pu,这时Pmax。如果current_temperature = target_temp时,则k_p = k_po,这时Pmax。2、解析dts,获得switch_on_temp和target_temp。3、初始化k_pu/k_po/k_i/k_d的常数。 阅读详情

基本概念

RabbitMQ 组件快递系统类比核心作用
生产者(Producer)寄件人生成消息(快递)并发送给交换机(分拣中心)。
交换机(Exchange)快递分拣中心根据规则(路由键)将消息(快递)分配到不同的队列(快递柜 / 快递点)。
队列(Queue)快递柜 / 快递点存储消息(快递),供消费者(收件人)读取。
消费者(Consumer)收件人从队列(快递柜)中获取消息(快递)并处理。
路由键(Routing Key)快递面单上的地址 / 电话交换机(分拣中心)根据路由键(地址)判断消息(快递)该流向哪个队列(快递点)。
绑定(Binding)分拣中心到快递柜的配送路线定义交换机(分拣中心)与队列(快递柜)的关联关系(如 “朝阳区包裹送到 A 快递柜”)。
信道(Channel)快递员的配送路线(虚拟管道)在连接(物流公司)上创建的轻量级虚拟连接,用于高效传输消息(快递)。
连接(Connection)物流公司的运输网络生产者 / 消费者(寄件人 / 收件人)与 Broker(快递总站)之间的物理网络连接。
Broker超级快递总站管理所有交换机、队列和连接的 RabbitMQ 服务实例,提供消息传递的基础设施。

交换机:类似快递智能分拣中心

交换机就像一个「智能快递分拣中心」,它从寄件人(生产者)接收包裹(消息)后,根据快递单上的地址(路由键)和预设的分拣规则(交换机类型),决定:

  1. 转发到指定快递柜(绑定队列):例如标注「朝阳区」的包裹会被分到朝阳区的快递柜;

  2. 直接退回 / 销毁(消息丢弃):如果地址错误或无人签收,包裹可能被退回或销毁;

  3. 设置保留时间(消息过期):如生鲜快递(时效性消息)会标注「24 小时内送达」,超时未取则退回

Broker:类似超级快递总站

Broker = 整个快递总站,它包含:

  1. 多个分拣中心(交换机):处理不同类型的包裹(消息);

  2. 大量快递柜(队列):暂存包裹直到被取走;

  3. 传送带和分拣设备(网络和协议):负责包裹的传输和处理。

信道:

  • 类比:同一家物流公司的多个快递员可以共享一条运输路线(连接),每个快递员负责不同区域的配送(信道),提高效率。

  • 技术解释:信道是连接中的虚拟连接,允许多个线程或进程通过同一个 TCP 连接高效地传输消息

绑定(Binding)

  1. 类比:快递公司规定「所有发往朝阳区的包裹都送到 A 快递柜」,这里的「朝阳区 → A 快递柜」就是一个绑定。

  2. 技术解释:绑定是交换机和队列之间的关联,通过路由键或其他条件定义消息的流向。

交换机类型的具体类比

交换机类型快递分拣规则场景示例
Direct按精确地址分拣(如 “朝阳区建国路 88 号”)订单系统中,按订单状态(status=paid)将消息路由到对应队列。
Topic按地址关键词分拣(支持通配符)物联网系统中,按 设备类型.区域 路由消息(如 device.car.beijing)。
Headers按包裹属性分拣(如重量、尺寸)物流系统中,按包裹重量(weight>5kg)路由到不同处理队列。
Fanout广播到所有快递柜系统通知模块,将公告同时发送到所有用户的收件箱。

完整的过程:

1. 用户触发订单(生产者发送消息)
  • 快递流程:用户在电商平台下单,填写收货地址、联系方式等信息,包裹被打包并贴上快递单。

  • RabbitMQ:生产者(Producer)创建一条消息,包含:

    • 消息体(Body):实际数据(如订单信息)。

    • 路由键(Routing Key):类似快递单上的“地址”(如 order.payment)。

    • 属性(Properties):类似快递单的附加信息(如优先级、过期时间)。

  • 技术细节:

    • 生产者通过 AMQP 协议将消息发送到 Broker 的指定交换机(Exchange)。

    • 消息可能设置 TTL(Time-To-Live),类似生鲜包裹的“24小时内送达”标签。

2. 消息到达 Broker(快递总站)
  • 快递流程:包裹被运输到快递公司的中央分拣中心(总站),准备分拣。

  • RabbitMQ:

    • Broker 是 RabbitMQ 服务实例,包含交换机、队列、虚拟主机等组件。

    • 消息首先到达指定的交换机(类似分拣中心入口)。

  • 技术细节:

    • Broker 可能部署为集群(类似多个分拣中心协同工作)。

    • 消息会经过虚拟主机(Virtual Host)隔离,类似快递总站的不同分区(如“国内件区”和“国际件区”)。

在这里插入图片描述
在这里插入图片描述

3. 交换机路由消息(分拣中心处理)
  • 快递流程:分拣中心根据快递单地址和分拣规则,将包裹分到对应区域的传送带。

  • RabbitMQ:交换机根据类型和绑定规则决定消息去向:

    • 交换机类型:

      • Direct(直连):精确匹配路由键,类似“仅配送朝阳区望京路1号”。

      • Fanout(广播):无视路由键,发到所有绑定队列,类似“小区广播通知”。

      • Topic(主题):模糊匹配路由键(如 order.*),类似“配送所有以‘order’开头的地址”。

      • Headers(头部匹配):忽略路由键,通过消息头属性匹配,类似“根据包裹特殊标签分拣”。

    • 绑定(Binding):交换机与队列的关联规则(如路由键 order.payment 绑定到 payment_queue)。

  • 技术细节:

    • 若消息无匹配队列,可能被丢弃(需设置 mandatory 标志决定是否返回生产者)。

    • 可设置备用交换机(Alternate Exchange)处理无法路由的消息,类似“地址错误的包裹转到异常处理中心”。

4. 消息存入队列(包裹进入快递柜)
  • 快递流程:分拣后的包裹被暂存到对应区域的快递柜,等待配送员取件。

  • RabbitMQ:

    • 队列(Queue)是消息的缓冲区,消费者从中获取消息。

    • 队列属性:

      • 持久化(Durable):快递柜断电不丢件(重启后消息保留)。

      • 独占(Exclusive):仅允许一个消费者使用,类似“VIP专属快递柜”。

      • 自动删除(Auto-delete):无消费者时自动销毁,类似“临时寄存柜”。

  • 技术细节:

    • 队列可设置长度限制(x-max-length),类似快递柜满时拒收新包裹。

    • 消息在队列中遵循 FIFO(默认)或优先级规则。

5. 消费者处理消息(快递员配送)
  • 快递流程:快递员从快递柜取件,配送到用户手中,用户签收后流程结束。

  • RabbitMQ:

    • 消费者(Consumer)从队列拉取(Pull)或订阅(Push)消息。

    • 处理方式:

      • 手动应答(ACK):消费者处理成功后显式确认,类似“用户签收后快递员反馈系统”。

      • 自动应答(Auto-ACK):消息被取出即视为成功,风险类似“包裹放门口即算送达”。

      • 拒绝(Reject/NACK):处理失败时可重新入队或丢弃,类似“用户拒收后退回或销毁”。

  • 技术细节:

    • 消费者可设置 QoS(预取计数),限制未确认消息数,类似“快递员一次最多拿5个包裹”。

    • 消息可能因超时(TTL)或死信队列(DLX)机制转入异常处理。

Springboot整合rabbitmq

1. 添加 RabbitMQ 依赖

在 pom.xml 中引入 Spring Boot AMQP starter:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
  • 该依赖包含了 RabbitMQ Java 客户端(com.rabbitmq:amqp-client)和 Spring 对 AMQP 的封装工具。
2. 配置 RabbitMQ 连接信息

在 application.yml 或 application.properties 中配置服务器地址、认证信息等:

spring:
  rabbitmq:
    addresses: localhost:5672       # RabbitMQ 服务器地址(支持多地址,用逗号分隔)
    username: guest                # 用户名(默认 guest)
    password: guest                # 密码(默认 guest)
    virtual-host: /                 # 虚拟主机(默认 /)
    # 可选配置:
    # listener.simple.concurrency: 10  # 监听容器的并发数
    # publisher-confirm-type: correlated  # 开启发布确认机制
  • 配置项说明:

  • addresses:RabbitMQ 服务的 IP 和端口(默认端口 5672)。

  • virtual-host:相当于逻辑隔离的 “数据库”,不同虚拟主机中的队列、交换机相互隔离。

  • username/password:访问 RabbitMQ 的账号密码(需与服务器配置一致)。

3. Spring 自动创建连接工厂(ConnectionFactory)
  • 核心类:Spring Boot 会自动创建 CachingConnectionFactory(ConnectionFactory 的子类),用于管理与 RabbitMQ 服务器的物理连接。

  • CachingConnectionFactory 支持连接池和通道缓存,避免频繁创建连接 / 通道带来的性能开销。

  • 自动配置逻辑:

  • Spring 通过 RabbitAutoConfiguration 类读取 spring.rabbitmq 配置,初始 化 CachingConnectionFactory。

  • 若未自定义 ConnectionFactory,则使用默认配置;若自定义,则覆盖默认 Bean。

4.Spring Boot AMQP(自动连接)

通过依赖注入直接使用 AmqpTemplate 或 RabbitTemplate:

springboot直接扫描 application.yml中的配置文件进行注入,直接读取

@Resource
private AmqpTemplate amqpTemplate;  // 由 Spring 自动配置并注入

public void sendMessage(long orderId, long delayTimes) {
    // 直接使用注入的模板发送消息,无需手动管理连接
    amqpTemplate.convertAndSend(...);
}
// 原生 RabbitMQ 客户端连接方式
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
factory.setUsername("guest");
factory.setPassword("guest");
try (Connection connection = factory.newConnection();
     Channel channel = connection.createChannel()) {
    // 声明队列、发送消息等操作
}

此配置不需要了

5. 声明队列、交换机和绑定(自动或手动)

Spring Boot 提供两种方式声明 RabbitMQ 组件:

方式一:自动声明(推荐)

通过 @Bean 在配置类中手动声明队列、交换机和绑定关系(如代码中的 RabbitConfig):

@Configuration
public class RabbitConfig {
    // 声明交换机
    @Bean
    public DirectExchange orderCancelDirectExchange() {
        return new DirectExchange("order-cancel-exchange", true, false); // 持久化交换机
    }

    // 声明队列(绑定死信队列)
    @Bean
    public Queue orderCancelQueue() {
        return QueueBuilder.durable("order-cancel-queue") // 持久化队列
                .deadLetterExchange("order-cancel-ttl-exchange") // 设置死信交换机
                .deadLetterRoutingKey("order-cancel-ttl-route-key") // 设置死信路由键
                .build();
    }

    // 声明绑定关系
    @Bean
    public Binding orderCancelBinding() {
        return BindingBuilder.bind(orderCancelQueue())
                .to(orderCancelDirectExchange())
                .with("order-cancel-route-key"); // 路由键匹配
    }
}
1. Binding 的概念
  • 定义:Binding 是 RabbitMQ 中交换机 (Exchange) 与队列 (Queue) 之间的关联关系

  • 作用:决定消息如何从交换机路由到队列

  • 类比:类似于数据库中的外键约束,定义表与表之间的关系

2. 代码解析

2.1 BindingBuilder.bind(orderCancelQueue())

  • 功能:指定要绑定的目标队列

  • 参数:

  • orderCancelQueue():通过方法引用获取队列 Bean

  • 对应配置中的队列名称:order-cancel-queue

  • 注意:

  • 队列必须先通过@Bean声明

  • 绑定的队列必须与交换机类型兼容

2.2 .to(orderCancelDirectExchange())

  • 功能:指定绑定的目标交换机

  • 参数:

  • orderCancelDirectExchange():通过方法引用获取交换机 Bean

  • 对应配置中的交换机名称:order-cancel-exchange

  • 注意:

  • 交换机必须先通过@Bean声明

  • 不同类型交换机的绑定规则不同

2.3 .with(“order-cancel-route-key”)

  • 功能:指定绑定的路由键 (Routing Key)

  • 路由键作用:

  • 对于 DirectExchange:消息根据路由键精确匹配

  • 对于 TopicExchange:支持通配符匹配

  • 对于 FanoutExchange:忽略路由键,直接广播到所有绑定队列

  • 匹配规则:

  • 当消息的路由键等于order-cancel-route-key时

  • 消息会从order-cancel-exchange交换机路由到order-cancel-queue队列

  • 关键注解:

  • @Bean:告诉 Spring 容器创建并管理这些组件。

  • QueueBuilder.durable():设置队列持久化,避免 RabbitMQ 重启后数据丢失。

方式二:自动创建(基于注解)

若在配置中开启 spring.rabbitmq.listener.simple.auto-startup=true(默认 true),Spring 会根据监听注解(如 @RabbitListener)自动创建队列。

6. 发送与接收消息

通过 AmqpTemplate 的 convertAndSend 方法发送消息,自动使用配置好的连接工厂:

public void sendMessage(long orderId, long delayTimes) {
    amqpTemplate.convertAndSend(
        "order-cancel-exchange",       // 交换机名称
        "order-cancel-route-key",      // 路由键
        orderId,                       // 消息内容(可序列化对象)
        message -> {
            message.getMessageProperties().setExpiration(String.valueOf(delayTimes)); // 设置消息 TTL
            return message;
        }
    );
}

接收消息通过 @RabbitListener 注解监听队列,Spring 自动从连接工厂获取通道并消费消息

@RabbitListener(queues = "order-cancel-ttl-queue") // 监听死信队列
public class CancelOrderReceiver {
    @RabbitHandler // 处理消息的方法(可省略,默认用参数为消息体的方法)
    public void handle(Long orderId) {
        // 处理订单取消逻辑
    }
}

核心组件与自动配置类

1. 关键 Bean
Bean 名称类型作用描述
connectionFactoryCachingConnectionFactory管理与 RabbitMQ 的物理连接,支持连接池
rabbitTemplateRabbitTemplate发送 / 接收消息的核心模板类
rabbitAdminRabbitAdmin管理队列、交换机的声明与绑定
simpleRabbitListenerContainerFactorySimpleRabbitListenerContainerFactory监听容器工厂,创建消息监听容器
2. 自动配置类
  • RabbitAutoConfiguration:核心自动配置类,负责创建 ConnectionFactory、RabbitTemplate 等 Bean。

  • RabbitListenerAnnotationBeanPostProcessor:处理 @RabbitListener 注解,自动创建监听容器。

接收消息

通过 @RabbitListener 注解监听队列,Spring 自动从连接工厂获取通道并消费消息:

@RabbitListener(queues = "order-cancel-ttl-queue") // 监听死信队列
public class CancelOrderReceiver {
    @RabbitHandler // 处理消息的方法(可省略,默认用参数为消息体的方法)
    public void handle(Long orderId) {
        // 处理订单取消逻辑
    }
}
利用ADS建立MIPI D-PHY链路仿真流程 由于MIPI D-PHY的速率并不算高,因此,PCB设计难度通常不大,主要做好差分线的等长、阻抗的连续性、端口处的阻抗优化以及控制好走线的长度,拿到满意的结果还是较为轻松的,最后,建立流程化的仿真工程文件,可以保存为模板,方便日后的设计复用,非常方便。 阅读详情

相关推荐

手把手教你用STM32CubeMX配置Bootloader:从分区设置到跳转逻辑详解(含完整代码示例)

本文详细介绍了如何使用STM32CubeMX配置STM32 Bootloader,从基础概念到完整实现。涵盖Flash分区设置、跳转逻辑、固件升级协议设计等关键步骤,并提供完整代码示例。适合嵌入式开发者快速掌握Bootloader开发技巧,提升STM32固件升级能力。

weixin_29169505的博客 284

RabbitMQ 消息怎么路由

在 RabbitMQ 中,消息路由是消息从生产者到消费者之间传递的核心机制。消息路由主要通过交换器(Exchange)实现。生产者将消息发送到交换器,交换器根据绑定的路由规则决定将消息传递到哪个或哪些队列中。消费者从队列中获取消息进行处理。RabbitMQ 提供了多种交换器类型,每种类型的交换器都有不同的路由逻辑。Direct Exchange(直接交换器)Fanout Exchange(扇出交换器)Topic Exchange(主题交换器)Headers Exchange(头交换器)

Flying_Fish_roe的博客 1174

【免费】最新区块链钱包和私钥的助记词碰撞器,使用python开发

最新钱包私钥助记词碰撞器,搏一搏单车变摩托!

weixin_48529185的博客 1万+

rabbitmq原理介绍(转载)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34221775的博客 356

Unity3d移动端性能优化

以下条目主要针对移动端,大部分也适合PC端 一、Profiler的使用 1.性能优化应贯穿项目开发的全过程,如需求(性能能不能达到要求)、设计、开发、测试等。不能开发结束才优化性能。 2.官方推荐的优化工具是【Window】->【Profiler】 3.确认瓶颈是CPU-bound(Gfx.WaitForCommands)还是CPU-bound(Gfx.WaitForPresent) 4.内存分析使用Memory Profiler 二、内存优作 5.减少内存收集的影...

zouxin_88的专栏 3060

低功耗蓝牙技术 > GAP和GATT介绍

GAP和GATT作为蓝牙协议栈中的关键协议,为BLE设备之间的通信提供了标准和框架。GAP主要负责设备的连接、广播和角色定义,而GATT则定义了BLE设备之间的具体通信方式,通过Services和Characteristics实现数据的传输和交换。在蓝牙技术的发展中,GAP和GATT两个协议扮演着关键的角色,为BLE(低功耗蓝牙)设备之间的通信提供了规范和框架。GATT连接是建立在GAP协议之上的,是一种独占连接,一个BLE外设同时只能连接一个中心设备。连接建立后,通信是双向的,不同于GAP的单向通信。

DL_62532的专栏 4031

rabbitMQ五种消息发送模式——路由模式

紧接上一篇:https://blog.youkuaiyun.com/qq_36357242/article/details/107686056 本篇介绍路由模式 路由模式 路由模式是可以根据路由键选择性给多个消费者发送消息的模式,它包含一个生产者、两个消费者、两个队列和一个交换机。两个消费者同时绑定到不同的队列上去,两个队列通过路由键绑定到交换机上去,生产者发送消息到交换机,交换机通过路由键转发到不同队列,队列绑定的消费者接收并消费消息。 声明交换机和队列 //声明路由模式交换机 @Bean

答案的博客 1642

Reeds-Shepp曲线公式推导及代码实现-第二部分(共三部分)

文章目录2. Reeds-Shepp求解2.1 L+S+L+L^+S^+L^+L+S+L+2.2 L+S+R+L^+S^+R^+L+S+R+2.3 L+R−L+L^+R^-L^+L+R−L+2.4 L+R−L−L^+R^-L^-L+R−L−2.5 L+R+L−L^+R^+L^-L+R+L−2.6 L+Rβ+Lβ−R−L^+R_{\beta}^+L_{\beta}^-R^-L+Rβ+​Lβ−​R−2.7 L+Rβ−Lβ−R+L^+R_{\beta}^-L_{\beta}^-R^+L+Rβ−​Lβ−​R+2.8

jianmo的博客 1213

RabbitMQ的消息路由基本讲解

RabbitMQ是AMQP(高级消息队列协议)协议的一种实现,RabbitMQ的基本讲解也就是围绕着AMQP协议的讲解。首先我们需要介绍的几个基本角色:消息代理(message brokers):大家可以理解为RabbitMQ服务器,起到了消息接收,持久化和转发等作用。发布者(publishers)或生产者(producers):消息的产生来源,具有生产消息的角色。消费者(consumers):消息

qbian的博客 3880

CLAHE 算法学习 matlab

概念可参考: CLAHE (Contrast Limited Adaptive Histogram Equalization)算法学习CLAHE具体实现主要包括6个步骤。1):分块。将输入图像划分为大小相等的不重叠子块,每个子块含有的像素数为M。参考示例为8×8块。 2):计算子块直方图。 3):计算剪切阈值clipLimit 4):像素点重分配。对每个子块,使用步骤三中多余的像素重新分配。 5):直方图均衡。 6):像素点灰度值重构。(源码中采用了双线性插值) http://www.realtimer

baidu_34971492的博客 4253

32、高光谱遥感技术在军事领域的应用解析

高光谱遥感技术凭借其高分辨率和精细光谱分析能力,在军事领域广泛应用于战场详细侦察、伪装目标识别及目标实际温度与发射率的检测,显著提升了目标识别精度和作战支持能力。同时,该技术在内陆水体成分反演、海洋环境监测和农业管理等领域也展现出巨大潜力。尽管面临数据量大、处理复杂、技术融合不足和仪器性能限制等挑战,未来通过人工智能融合、高效算法研发和先进仪器开发,高光谱遥感技术将在多领域实现更深入应用与发展。

blue的专栏 230

7.用DockerCompose接入RabbitMQ实现异步推理

本文介绍如何用 Docker Compose 部署 RabbitMQ,结合 FastAPI 与 Worker 实现异步推理。通过消息队列解耦任务提交与执行,确保大文件、视频等耗时任务不阻塞 HTTP 请求。关键实践包括:使用小体积消息传递任务标识、启用持久化与确认机制、手动 ACK 防止丢失、配置重试与死信队列、保障幂等性,并通过 PostgreSQL 管理任务状态。强调异步系统需兼顾消息可靠性、结果可查与容错能力,为算法工程化落地提供完整链路参考。

像风一样自由的博客 382

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

消息队列入门:RabbitMQ 与 Kafka 核心概念与运维要点

BIOS→GRUB→内核→systemd→target 全链路解读,root 密码忘了解锁、文件系统损坏修复、单用户模式与救援模式实战,服务器起不来时的救命指南。

2502_91473995的博客 377

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

RabbitMQ 消费端幂等:唯一索引、条件更新、Redis 去重三种方案的真实代价

MQ 只承诺至少投递一次,重复消息只能消费端自己吃掉。这篇对比唯一索引、条件更新、Redis 短路三种去重方案在 AI 任务场景下的实际代价,附三个踩过的坑。

zhangpan 215

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

基于RabbitMQ实现延迟队列

通过TTL与DLX实现RabbitMQ延迟消息:生产者发送消息至设置过期时间(x-message-ttl)和死信交换机(x-dead-letter-exchange)的缓冲队列,消息到期后变为死信,自动路由至指定交换机并投递到业务队列,消费者监听后实现延迟消费。也可使用rabbitmq-delayed-message-exchange插件,直接创建延迟交换机,配置延迟参数,更便捷地实现延迟消息功能。

Pniubi的博客 297

AI分布式Token中转站网关底层实现-东方仙盟

在终端优先同步架构下,所有终端智能体请求不再直连上游 MaaS 平台(千帆、百炼、DeepSeek 等),全部经由分布式 Token 中转站网关统一中继。网关承担虚拟客户密钥签发、上游子账号路由、前置内容安全审计、事务路由调度、可控网络震荡多上游链路容灾、SSE 流式透传、用量记账、封禁熔断、原始 IP 封包签名溯源等核心职责。本文基于 Go 实现分布式网关核心底座,复用架构原有无状态 Token 穿透、事务 ID 幂等、链路探活、多节点中继能力;区分两层密钥体系:面向终端客户的虚拟 Key。

cybersnow精通 28 门计算机语言,凭借其超凡的技术能力,成功开发过上万个应用,广泛涉及政府、商业、个人等众多领域,甚至在检察院、环保局、公安局等专业场景中也大放异彩。不仅熟练掌握单片机和物联网开发,在软件架构设计方面更是独树一帜,自创了跨平台软件 245

HarmonyOS 分布式深度:跨端迁移、数据对象与多设备协同

本文深入解析鸿蒙分布式能力实战,聚焦跨端迁移、协同与共享三大形态,详解权限配置、设备发现、onContinue状态管理及分布式数据对象、KV同步机制。强调“先分清场景”“前置条件必全”“数据需重验”,揭示迁移失败、同步失效等七大常见坑,指导开发者规避陷阱,实现真实可用的多设备协同。

信息安全领域优质创作者|操作系统领域专家 109

EtherCAT从站实现(三):DC同步机制与分布式时钟实现

本文详解EtherCAT伺服从站DC同步机制,解决高精度控制中因主站抖动与传播延迟导致的相位偏差问题。通过ESC硬件维护1ns分辨率全局时间,实现从站自主同步,确保PDO更新与控制环采样精准对齐。核心流程包括传播延迟测量、时钟初始化、漂移补偿及SYNC0/SYNC1信号生成。从站需正确配置DC能力与同步模式,主站则通过DCM机制保障发送周期稳定。调试建议结合示波器与寄存器监控,分阶段验证时序关系,确保多轴协同无误。

yangmu3203的博客 123

Cloudflare Durable Objects 支持自动重试:分布式调用如何避免重复执行?

在分布式系统中,远程调用失败可能导致操作状态不确定。Cloudflare 为 Durable Objects 引入自动重试机制,仅对可重试错误进行智能重试,并通过 retryable() 明确标记幂等操作,避免重复执行。该机制不保证全局精确一次,仍需业务层实现去重,如使用请求标识或幂等键。核心在于区分“未执行”与“已执行但响应丢失”,从而在保障可靠性的同时防止数据错乱。

weixin_47502228的博客 399

分布式管控系统技术架构深度拆解:从编解码协议到SM4硬件级安全

支持音视频同步及异步切换、最大16路混音输出这些能力,在方案阶段是参数,在调试阶段是测试项。具备工程替代价值的节点应集成4路IR红外、2路RS232、4路I/O、2路继电器及1路RS485,这一档配置使节点具备直接驱动声、光、电及环境控制回路的能力,在中小型会议室场景中可以替代独立中控主机。H.265/H.264双标准支持是基础,每路视频的主码流与双码流独立控制(VBR/CBR)才是影响带宽规划的关键——双码流的意义在于将本地存储与远端预览的码率策略解耦,全局单一码率在多路并发场景下很难兼顾画质和带宽。

2603_95485477的博客 145

集中式与分布式怎么选:从订单读写看 KingbaseES 的架构边界

以订单系统为例,一笔付款会扣账户余额、写一条流水、更新订单状态;月末报表则可能按日期统计所有租户的订单。前者要求几项变更一起提交,后者关心查询会覆盖多大范围。讨论集中式与分布式,先把读写请求分开,比先数数据库节点更容易看清问题。KingbaseES 核心数据库是集中式关系数据库。KES RAC 和 KES TDC 也都可以部署为多节点形态,但它们的数据组织方式并不相同。

todoitbo的博客 1万+

粮库分布式温湿度采集系统,基于环境数据的粮食霉变预警开发实战

本方案构建基于分布式温湿度采集的粮食霉变预警系统,针对传统粮库监测滞后、误报率高等痛点,通过分层布设传感节点、边缘计算网关与时序数据平台,融合温升速率、露点判别、多因子耦合等算法,实现从“静态监测”到“动态预警”的升级。系统支持平房仓、浅圆仓等多场景部署,具备国产化适配、断网续传、联动通风互锁等功能,结合工单闭环与模型迭代机制,显著提升储粮安全水平,为智慧粮库建设提供可复制的工程范式。

306

从零搭建一个 AI Infra 实验室㉑:llm-d——从单个 vLLM 走向分布式推理

本篇深入 llm-d 分布式推理架构,解析负载感知路由、前缀缓存感知、KV Cache 本地性与 Prefill/Decode 分离。基于单节点 Kubernetes 和 LLM Simulator,实测智能路由与多 Pod 请求分布,理解从单个 vLLM 走向分布式推理的关键设计与挑战。

mosespaul的博客 322

基于分布式软总线的鸿蒙跨端数据同步与冲突合并机制

更恐怖的是,有时候平板上修改的记录,连带把手机上的最新数据给直接抹除了。这就导致了灾难性的数据覆盖。假设用户的手机系统时间比平板快了五分钟,那么在这五分钟的窗口期内,用户在平板上做出的任何修改,在同步时都会被手机上的老旧数据无情覆盖。版本号相同但内容不同时,通过业务层的自定义策略进行合并,这才是分布式应用应有的数据一致性保障。痛定思痛,我们放弃了最粗暴的覆盖式同步,全面重构了基于底层分布式数据管理的冲突解决机制。),这样不仅同步极快,发生冲突时,也只会影响单条记录,而不会导致全局覆写。

2502_91284977的博客 259

跨端数据漫游,分布式 KVStore 冲突与合并

等两台设备联网同步后,手机上的清单里只剩下了面包,牛奶凭空蒸发了。这就是典型的分布式数据同步冲突,系统底层的默认策略把你坑了。这就导致了惨剧:如果手机时间比平板快了 5 分钟,那么手机上产生的任何数据,在同步时都会无条件覆盖平板上修改的数据。总的来说,分布式同步不能全靠系统,业务层的版本控制和冲突合并才是数据一致性的定海神针。系统默认的同步策略是 Last-Write-Wins(最后写入者胜出),判断标准是设备的系统时间。要解决这个问题,绝不能依赖底层的时间戳,必须在业务层引入版本号(乐观锁)。

2502_91284977的博客 156

分布式设备列表拿到了,数据通道选错照样传不过去

分布式协作的设计顺序应该是:先确定数据的一致性语义(状态最终一致 vs 操作恰好一次),再选通道(DDO / KV / RPC / 文件),最后把标识和内容分开。离线期间手机加了三个附件,平板重连后 DDO 会把最终的字段列表对齐,中间某一条“附件关联”的副作用如果涉及独立写入,不会因为 DDO 对齐而自动补执行。的 RPC 通道,这四条路解决的是不同的问题。的场景(扣库存、审批、附件关联),DDO 只能承载最终状态,操作序列需要应用层自己的 outbox 和确认水位来兜底。

2602_97267507的博客 385
上一篇: ES(Elasticsearch) 基本概念(一)
下一篇: 工厂模式 vs 策略模式:设计模式中的 “创建者” 与 “决策者”
梵高的代码色盘
博客等级 码龄5年 188粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值