Redis 高可用:从主从到集群的全面解析

目录

    • 一、主从复制 (基础)
      • 1. 同步复制
        • a. 全量数据同步
        • b. 增量数据同步
        • c. 可能带来的数据不一致
      • 2. 环形缓冲区
        • a. 动态调整槽位
      • 3. runid
      • 4. 主从复制解决单点故障
        • a. 单点故障
        • b. 可用性问题
      • 5. 注意事项
        • a. Replica 主动向 Master 建立连接
        • b. Replica 主动向 Master 拉取数据
    • 二、哨兵模式
      • 1. 主机下线
      • 2. 备机下线
      • 3. 哨兵监控
        • a. 从库为主
        • b. 故障转移
      • 4. 连锁转换节点
      • 5. 如何使用
        • a. 获取主节点地址,并连接
        • b. 龙卷风监控 / 监听模式
      • 6. 缺点
        • a. 没有预设数据交互机制
        • b. 没有高效的"票机制"
      • 7. 几个步骤
        • a. 去中心化
        • b. 主节点对称
        • c. 解决了数据广播
      • 8. 特性
        • a. 客户端自动保持缓存位置,以服务为准,待节点异常后主机广播分配给节点ID
        • b. 可人力效应迁移
    • 三、集群模式 (Cluster)
      • 1. 将集群内托管在一个节点
      • 2. 客户端不在线节点,将初始化找回的命令、鼠标拖拽到节点
      • 3. 流程
        • a. 推动节点响应主机传递的数据交换
        • b. 故障转移(主节点下线)
        • c. 由下线主节点的副本传入数据,交给节点中的负载库作为主节点
        • d. 从布置点下线主节点的副本信息供用,拷贝需接受的负载库状态作为节点
        • e. 备用节点接入副信息传送
      • 4. 缺点
        • a. 因为主从采用同步分离库所以到存储数据尽量大防的端
      • 5. 问题
        • a. 多次错误响应,解决后确认,频率分段,自动解决计算
      • 6. 特性
        • a. 数据分化
        • b. 有容有性
        • c. 高可靠
        • d. 动态扩容性
        • e. 生产调整
        • f. 实际需要 Cluster 模式或高可用以及常规管理
    • 四、分布式延时队列
      • 1. 数据变化化
      • 2. 有存存有
      • 3. 高可靠
      • 4. 动态分配性
      • 5. 生产性调整
      • 6. 实现
        • a. 使用 ZSet 存储延时任务
        • b. 每个子节点多个键——分组处理
    • 五、总结
      • 关键要点
      • 应用建议
      • 参考

Redis 作为一个高性能的内存数据库,支持多种复制和高可用性机制,包括主从复制、哨兵模式、集群模式以及分布式延时队列。本文将根据提供的树状结构,详细展开介绍这些机制的原理、实现、优缺点及应用场景,帮助读者全面理解和应用 Redis 的高级功能。

一、主从复制 (基础)

主从复制是 Redis 实现数据冗余和高可用性的基础机制。通过将数据从主节点(Master)复制到从节点(replica),可以实现数据备份、读写分离以及故障恢复等功能。
在这里插入图片描述

1. 同步复制

同步复制是主从复制的核心,确保从节点的数据与主节点保持一致。同步复制包括全量数据同步和增量数据同步两个阶段。

a. 全量数据同步

在这里插入图片描述

原理:当从节点首次连接到主节点,或者在某些情况下(如主从断开连接后重新连接),需要从主节点获取完整的数据集。这一过程称为全量数据同步。

步骤

  1. 从节点发送 SYNC 命令给主节点,表示希望进行数据同步。
  2. 主节点接收到 SYNC 命令后,创建一个子进程(使用 fork()),子进程负责生成 RDB 快照文件。
  3. 子进程将 RDB 文件发送给从节点,从节点接收并加载数据,确保与主节点的数据一致。
  4. 全量同步完成后,主节点和从节点进入增量同步阶段,继续传输主节点的新写命令。

优缺点

  • 优点
    • 保证从节点与主节点数据的一致性。
    • 简单可靠,适用于初始同步和主从重连场景。
  • 缺点
    • 全量同步需要传输大量数据,可能导致网络带宽占用高。
    • 在数据量大的情况下,同步过程耗时较长,影响系统性能。
b. 增量数据同步

在这里插入图片描述

原理:在全量同步完成后,主节点将接收到的所有写命令实时传输给从节点,确保从节点数据的实时更新。这一过程称为增量数据同步。

步骤

  1. 主节点将所有新的写命令通过发布/订阅机制(Pub/Sub)实时发送给从节点。
  2. 从节点接收到命令后,按照顺序执行这些命令,保持数据一致性。

优缺点

  • 优点
    • 实时性强,确保从节点数据与主节点同步。
    • 增量同步的开销相对较小,仅传输变化的数据。
  • 缺点
    • 在高并发环境下,主节点需要处理大量的命令传输,可能影响性能。
    • 如果增量同步过程中出现网络延迟或中断,可能导致数据不一致。
c. 可能带来的数据不一致

尽管主从复制旨在保持数据一致性,但在某些情况下,可能会出现数据不一致的问题。

原因

  1. 网络延迟或中断:主从之间的网络问题可能导致部分命令未能及时传输,导致数据不同步。
  2. 主节点故障:在主节点发生故障之前,未完成的命令可能未能传输到从节点,导致数据丢失。
  3. 从节点故障恢复:从节点在故障恢复过程中,如果没有正确执行全量和增量同步,可能导致数据不一致。

解决方法

  • 监控与报警:通过 Redis Sentinel 或其他监控工具,及时发现主从复制中的问题。
  • 自动故障转移:在检测到主节点故障时,自动将从节点提升为新的主节点,确保数据服务的持续性。
  • 数据验证:定期对主从节点的数据进行校验,发现不一致时进行修复。

2. 环形缓冲区

环形缓冲区(Circular Buffer)是 Redis 实现高效复制的一种数据结构,用于缓存主节点发送给从节点的命令。

a. 动态调整槽位

原理:环形缓冲区的大小可以动态调整,以适应不同负载下的复制需求。当主节点发送的命令量增加时,缓冲区会自动扩展;当命令量减少时,缓冲区会收缩。

优点

  • 高效性:减少内存分配和释放的频率,提高系统性能。
  • 灵活性:能够适应不同的负载情况,确保复制过程的稳定性。

缺点

  • 复杂性:实现动态调整槽位需要更复杂的逻辑,增加代码的复杂度。
  • 内存管理:需要精细管理缓冲区的内存,避免内存泄漏或溢出。

3. runid

在这里插入图片描述

定义runid 是 Redis 用于唯一标识主从节点之间复制关系的标识符。

功能

  • 标识关联:通过 runid,从节点能够识别并连接到对应的主节点,确保复制过程的正确性。
  • 避免重复:在多节点环境中,确保每个从节点只能复制一个主节点,避免数据冲突。

4. 主从复制解决单点故障

主从复制不仅仅是数据备份机制,更是解决 Redis 单点故障(Single Point of Failure, SPOF)问题的重要手段。

a. 单点故障

定义:单点故障指系统中某个关键组件的失效会导致整个系统不可用。

在 Redis 中的表现

  • 主节点故障:如果主节点宕机,所有的写操作将无法进行,系统服务可能会中断。
b. 可用性问题

通过配置从节点,可以在主节点故障时迅速切换到从节点,保持系统的高可用性。

解决方法

  • 多从节点:配置多个从节点,分散复制负载,提升系统的容错能力。
  • 自动故障转移:结合 Redis Sentinel,实现主节点故障时自动提升从节点为新主节点。

5. 注意事项

在配置和使用主从复制时,需要注意以下几点,以确保复制过程的稳定和高效。

a. Replica 主动向 Master 建立连接

原理:从节点(Replica)主动向主节点(Master)建立连接,确保复制链条的正确性和可靠性。

好处

  • 连接稳定:从节点主动连接主节点,可以更好地管理连接状态,避免连接被动断开。
  • 负载均衡:无论复制链条中的哪个从节点,都能确保从节点主动拉取数据,避免主节点的负载过高。
b. Replica 主动向 Master 拉取数据

原理:从节点主动拉取主节点的数据,确保复制过程中的数据传输顺序和完整性。

好处

  • 数据一致性:从节点按顺序拉取主节点的写命令,确保数据的一致性。
  • 复制效率:从节点主动拉取数据,可以根据自身的处理能力和网络状况,动态调整拉取速度,优化复制效率。

二、哨兵模式

Redis 哨兵(Sentinel)模式是一种高可用性解决方案,负责监控主节点和从节点的状态,并在主节点发生故障时自动进行故障转移。
在这里插入图片描述

1. 主机下线

情景:当主节点由于网络问题、硬件故障或其他原因下线,哨兵需要检测到这一变化,并采取相应的措施。

2. 备机下线

情景:从节点(备机)也可能由于各种原因下线,哨兵需要监控从节点的状态,确保至少有一个从节点可用。

3. 哨兵监控

哨兵通过监控主节点和从节点的状态,决定是否需要进行故障转移。

a. 从库为主

解释:当主节点下线时,哨兵会从现有的从节点中选择一个新的主节点,确保系统的持续可用。

b. 故障转移

步骤

  1. 检测故障:多个哨兵实例通过心跳机制检测到主节点故障。
  2. 达成一致:通过投票机制,确认主节点确实发生故障。
  3. 选举新主:从可用的从节点中选举一个新的主节点。
  4. 更新配置:通知所有从节点指向新的主节点,并通知客户端更新主节点信息。
  5. 恢复旧主:待故障主节点恢复后,将其配置为新的从节点,重新加入复制链条。

4. 连锁转换节点

定义:哨兵在故障转移过程中,负责管理节点之间的关系,确保复制链条的完整性和数据的一致性。

功能

  • 协调节点:协调主从节点之间的转换,确保新主节点能够顺利接管主节点的角色。
  • 通知客户端:通过发布订阅机制,通知客户端更新主节点信息,保证客户端能够连接到新的主节点。

5. 如何使用

a. 获取主节点地址,并连接

步骤

  1. 配置哨兵:在哨兵配置文件中指定主节点的地址和端口,以及需要监控的主节点名称。
  2. 启动哨兵:启动多个哨兵实例,分散在不同的服务器上,避免单点故障。
  3. 连接主节点:哨兵实例通过配置文件连接到主节点,开始监控其状态。
b. 龙卷风监控 / 监听模式

解释:当原主节点失去响应后,哨兵进入监听模式,实时监控主节点的状态变化,并准备进行故障转移。

操作

  • 实时监控:哨兵持续监控主节点的心跳信号,检测主节点是否在线。
  • 触发故障转移:当检测到主节点失联时,哨兵触发故障转移流程,选举新的主节点。

6. 缺点

尽管哨兵模式提供了高可用性,但也存在一些缺点和限制。

a. 没有预设数据交互机制

解释:哨兵模式主要负责监控和故障转移,缺乏数据同步和交互的高级机制,无法保证在故障转移过程中数据的实时同步。

影响

  • 数据一致性:在故障转移过程中,可能会存在短暂的数据不一致情况。
  • 复杂性增加:需要配合其他机制(如复制链条)确保数据的一致性。
b. 没有高效的"票机制"

解释:"票机制"指的是在选举和决策过程中,通过投票方式达成一致的机制。哨兵模式中的投票机制相对简单,缺乏高效的决策流程。

影响

  • 决策效率:在高负载或网络波动情况下,哨兵的决策效率可能下降。
  • 一致性问题:在多个哨兵实例之间,可能会出现决策不一致的情况,影响故障转移的可靠性。

7. 几个步骤

a. 去中心化

定义:哨兵模式采用去中心化的架构,不依赖单一的控制中心,多个哨兵实例共同监控和管理主从节点。

优点

  • 高可靠性:避免单点故障,提高系统的可靠性。
  • 分布式管理:多个哨兵实例可以协同工作,提升监控和故障转移的效率。
b. 主节点对称

解释:哨兵模式中,主节点和从节点的角色对称化管理,确保每个节点的状态都能被准确监控和管理。

优点

  • 灵活性:主节点和从节点可以动态切换角色,适应不同的业务需求。
  • 负载均衡:通过对称化管理,可以实现主节点和从节点之间的负载均衡,提高系统性能。
c. 解决了数据广播

解释:哨兵模式通过哨兵实例之间的协调,避免了数据广播带来的性能问题和复杂性。

优点

  • 高效性:减少不必要的数据广播,提高系统的整体性能。
  • 稳定性:通过协调机制,确保数据广播的稳定性和可靠性。

8. 特性

a. 客户端自动保持缓存位置,以服务为准,待节点异常后主机广播分配给节点ID

解释:客户端在连接到 Redis 集群时,会自动缓存主节点的位置。当主节点发生故障时,哨兵会广播新的主节点信息,客户端自动更新连接信息,确保服务的连续性。

优点

  • 高可用性:客户端能够自动感知主节点的变化,保证服务的持续性。
  • 简便性:无需手动干预,客户端自动完成连接切换,简化运维工作。
b. 可人力效应迁移

解释:在某些情况下,故障转移可能需要人工干预,例如在自动故障转移失败时,运维人员可以手动进行节点迁移和管理。

优点

  • 灵活性:在自动机制失效时,仍然可以通过人工操作确保系统的高可用性。
  • 控制力:运维人员可以根据具体情况,灵活调整节点的角色和配置,优化系统性能。

三、集群模式 (Cluster)

Redis Cluster 是 Redis 提供的一种分布式解决方案,支持数据分片、故障转移和高可用性,适用于大规模数据和高并发访问的场景。

1. 将集群内托管在一个节点

解释:在 Redis Cluster 中,数据被分片存储在多个节点上,每个节点负责一部分数据的存储和管理。

优点

  • 数据分片:通过分片机制,支持存储海量数据,扩展性强。
  • 负载均衡:数据分布在多个节点上,实现读写负载的均衡,提高系统吞吐量。

2. 客户端不在线节点,将初始化找回的命令、鼠标拖拽到节点

说明:此部分可能存在翻译或表达上的问题。应理解为:客户端在访问集群时,如果某个节点不可用,会自动重新定位数据所在的节点,确保数据访问的连续性。

实现

  • 智能路由:客户端通过集群协议,能够自动发现数据所在的节点,进行请求的路由和转发。
  • 故障恢复:当某个节点下线时,集群能够自动进行故障转移,保证数据的可访问性。

3. 流程

Redis Cluster 的工作流程包括数据分片、故障转移和节点管理等步骤。
在这里插入图片描述

a. 推动节点响应主机传递的数据交换

解释:集群中的每个节点负责接收和处理来自客户端的请求,并与其他节点进行数据交换,确保数据的一致性和完整性。

步骤

  1. 请求处理:客户端发送请求到集群中的任意节点。
  2. 数据路由:节点根据数据分片规则,将请求转发到负责该数据的节点。
  3. 数据交换:节点之间通过内部通信协议,进行数据的同步和交换,确保数据的分布和一致性。
b. 故障转移(主节点下线)

步骤

  1. 检测故障:集群中的节点通过心跳机制,检测到某个主节点下线。
  2. 选举新主:集群中的其他主节点会选举一个从节点提升为新的主节点。
  3. 数据迁移:将原主节点的数据迁移到新主节点,确保数据的完整性和可访问性。
  4. 更新配置:通知客户端和其他节点,更新新的主节点信息,确保后续请求的正确路由。
c. 由下线主节点的副本传入数据,交给节点中的负载库作为主节点

解释:在主节点下线后,其从节点将被提升为新的主节点,承担主节点的角色,继续提供数据服务。

步骤

  1. 提升从节点:选举出新的主节点,从原主节点的从节点中选择一个最优的从节点进行提升。
  2. 数据同步:确保新主节点的数据与其他从节点保持一致,避免数据丢失。
  3. 负载转移:新主节点开始承担主节点的写操作,其他节点继续作为从节点进行数据同步。
d. 从布置点下线主节点的副本信息供用,拷贝需接受的负载库状态作为节点

解释:在故障转移过程中,集群需要确保新主节点的数据状态正确,并通知其他节点进行同步和数据迁移。

步骤

  1. 状态同步:新主节点与其他从节点同步数据状态,确保数据一致性。
  2. 通知更新:集群中的所有节点更新新的主节点信息,确保数据请求能够正确路由。
  3. 负载分配:根据新的数据分片规则,重新分配数据负载,优化系统性能。
e. 备用节点接入副信息传送

解释:在故障转移完成后,备用节点(从节点)继续复制新主节点的数据,确保集群的高可用性和数据冗余。

步骤

  1. 重新配置:备用节点重新配置为新的从节点,连接到新的主节点。
  2. 数据同步:备用节点从新的主节点拉取数据,保持数据的一致性。
  3. 监控与维护:继续监控备用节点的状态,确保系统的稳定性和高可用性。

4. 缺点

尽管 Redis Cluster 提供了强大的分布式和高可用性功能,但也存在一些缺点和挑战。

a. 因为主从采用同步分离库所以到存储数据尽量大防的端

解释:由于 Redis Cluster 中主从节点采用同步复制机制,数据分片和存储需要尽量避免单个节点的数据量过大,以防止同步过程中的性能瓶颈和数据不一致。

影响

  • 数据分布不均:如果某个分片的数据量过大,可能导致该节点的性能瓶颈,影响整个集群的性能。
  • 同步开销:大数据量的同步过程会增加网络带宽和磁盘 I/O 的负载,影响系统的整体性能。

5. 问题

a. 多次错误响应,解决后确认,频率分段,自动解决计算

解释:在集群运行过程中,可能会遇到多次错误响应,如节点不可用、数据同步失败等。Redis Cluster 需要具备自动检测和修复这些问题的能力。

解决方法

  • 错误检测:通过心跳机制和错误日志,实时检测集群中的异常状态。
  • 自动修复:在检测到问题后,自动进行故障转移、数据迁移等修复操作,恢复集群的正常运行。
  • 频率控制:控制故障检测和修复的频率,避免过于频繁的操作影响系统稳定性。

6. 特性

Redis Cluster 拥有以下主要特性,确保其在分布式环境中的高效运行和高可用性。

a. 数据分化

定义:通过分片机制,将数据分布在多个节点上,实现数据的水平扩展。

优点

  • 扩展性强:支持大规模数据存储,满足高并发访问需求。
  • 负载均衡:数据分布在多个节点上,实现读写负载的均衡,提升系统性能。
b. 有容有性

定义:集群具备容错能力,能够在部分节点故障的情况下继续提供服务。

优点

  • 高可靠性:部分节点故障不会影响整个集群的可用性,确保系统的持续运行。
  • 数据冗余:通过主从复制,保证数据的冗余备份,防止数据丢失。
c. 高可靠

定义:通过故障转移和数据复制机制,确保数据的可靠存储和高可用性。

优点

  • 数据安全:多副本存储,防止单点故障导致的数据丢失。
  • 持续可用:自动故障转移机制,保证服务的持续可用性。
d. 动态扩容性

定义:支持动态添加和移除节点,实现在线扩容和缩容。

优点

  • 灵活性高:根据业务需求,随时调整集群规模,适应流量变化。
  • 最小化停机:在线扩容和缩容,避免系统停机,保证业务连续性。
e. 生产调整

定义:支持在生产环境中对集群进行实时调整和优化,提升系统性能和稳定性。

优点

  • 实时监控:通过监控工具,实时了解集群状态,及时发现和解决问题。
  • 优化能力:根据业务需求,调整数据分片、节点配置等,优化系统性能。
f. 实际需要 Cluster 模式或高可用以及常规管理

解释:在实际应用中,是否采用 Cluster 模式取决于业务需求和系统规模。

适用场景

  • 大规模数据和高并发访问:需要 Redis Cluster 提供的数据分片和高可用性。
  • 高可用性需求:需要通过主从复制和故障转移机制,确保系统的持续可用性。
  • 常规管理:需要简化集群管理和运维,提高系统的可维护性。

四、分布式延时队列

分布式延时队列是一种基于 Redis 实现的高效任务调度机制,适用于需要定时执行的任务和延时处理的场景。

1. 数据变化化

解释:任务在延时队列中的状态随着时间的推移而变化,从未处理状态逐渐转变为待处理状态,最终被执行。

实现

  • 任务状态管理:通过 Redis 的数据结构,管理任务的不同状态,确保任务按时执行。
  • 状态转移:任务在队列中的状态变化由系统自动触发,确保任务按计划执行。

2. 有存存有

解释:延时队列中的任务被可靠地存储,防止任务丢失,确保任务的高可靠性。

实现

  • 持久化存储:通过 Redis 的持久化机制(RDB、AOF)保存队列中的任务,防止数据丢失。
  • 数据备份:通过主从复制和集群模式,实现任务数据的冗余备份,提高系统的可靠性。

3. 高可靠

解释:分布式延时队列具备高可靠性,确保任务的准确执行和系统的稳定运行。

实现

  • 任务确认机制:任务执行后进行确认,确保任务不会重复执行或遗漏执行。
  • 失败重试机制:任务执行失败时,自动进行重试,确保任务最终执行成功。

4. 动态分配性

解释:延时队列能够根据系统负载和资源情况,动态分配任务到不同的消费者,提高系统的吞吐量和资源利用率。

实现

  • 任务分片:将任务分配到不同的消费者,避免单个消费者的负载过高。
  • 负载均衡:根据消费者的处理能力,动态调整任务的分配,确保系统的高效运行。

5. 生产性调整

解释:系统能够根据业务需求和负载变化,实时调整延时队列的配置和参数,优化任务处理效率。

实现

  • 动态配置:根据系统负载,实时调整队列的参数,如任务的优先级、处理速度等。
  • 实时监控:通过监控工具,实时了解队列的运行状态,及时进行优化调整。

6. 实现

分布式延时队列通常使用 Redis 的有序集合(ZSet)来存储和管理延时任务。

a. 使用 ZSet 存储延时任务

原理:通过 Redis 的有序集合,将任务的执行时间作为分数(score),任务标识作为成员(member),实现任务的按时排序和管理。

步骤

  1. 构建多个 ZSet:为不同的任务类型或消费者构建多个有序集合,每个 ZSet 负责存储特定类型的延时任务。
  2. 每个 ZSet 对应一个消费者:每个消费者负责处理一个或多个 ZSet 中的任务,确保任务的均衡处理。
  3. 生产者推送到某个 ZSet 中生产延时:生产者根据任务类型或负载情况,将任务添加到相应的 ZSet 中,并设置任务的执行时间。
b. 每个子节点多个键——分组处理

解释:通过将任务分组到不同的键中,实现任务的分布式处理和高效管理。

实现

  • 任务分组:根据任务类型或优先级,将任务分组到不同的 ZSet 中,方便不同消费者进行分组处理。
  • 并行处理:多个消费者并行处理不同的 ZSet,提高任务处理的吞吐量和系统的整体性能。

示例

假设有多个任务类型,如邮件发送、短信发送和数据处理,可以为每种任务类型创建一个 ZSet:

ZADD email_queue 1672531199 "email_task_1"
ZADD sms_queue 1672531199 "sms_task_1"
ZADD data_processing_queue 1672531199 "data_task_1"

消费者分别监听并处理各自的队列:

# 处理邮件任务的消费者
ZREM email_queue "email_task_1"# 处理短信任务的消费者
ZREM sms_queue "sms_task_1"# 处理数据任务的消费者
ZREM data_processing_queue "data_task_1"

五、总结

本文详细介绍了 Redis 的主从复制、哨兵模式、集群模式以及分布式延时队列的原理、实现、优缺点及应用场景。这些机制共同构建了 Redis 高性能、高可用和高可靠性的基础,适用于各种复杂的业务场景。通过合理配置和优化这些机制,用户可以充分发挥 Redis 的优势,保障系统的稳定运行和数据的可靠性。

关键要点

  • 主从复制:实现数据冗余和高可用性,通过同步复制确保数据一致性。
  • 哨兵模式:提供自动故障转移和监控功能,确保系统的持续可用性。
  • 集群模式:支持数据分片和动态扩展,适用于大规模数据和高并发访问的场景。
  • 分布式延时队列:实现高效的任务调度和延时处理,适用于需要定时执行的任务。

应用建议

  • 选择合适的复制机制:根据业务需求和系统规模,选择主从复制、哨兵模式或集群模式,确保数据的高可用性和系统的稳定性。
  • 优化延时队列:通过合理配置 ZSet 和消费者,提升延时任务的处理效率和系统的整体性能。
  • 监控与维护:通过监控工具,实时了解系统的运行状态,及时发现和解决问题,确保 Redis 系统的高效运行。

通过深入理解和合理应用 Redis 的这些高级功能,可以有效提升系统的性能、可靠性和可扩展性,满足各种复杂业务场景的需求。

参考

0voice · GitHub

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

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

相关文章

STM32传感器模块编程实践(八) HX711压力传感器称重模块简介及驱动源码

文章目录 一.概要二.HX711主要技术指标三.HX711模块参考原理图四.模块接线说明五.模块工作原理介绍六.模块通讯协议介绍七.STM32单片机与HX711模块实现重量测量实验1.硬件准备2.软件工程3.软件主要代码4.实验效果 八.小结 一.概要 电子秤是将检测与转换技术、计算机技术、信息…

Python网络爬虫从入门到实战

目录 引言 一、网络爬虫的概念 二、 网络爬虫的基本工作流程 (一)过程: (二)安装requests模块和beautifulsoup4模块 (三)requests库的使用 1、requests库的基本介绍 2、导入requests库的…

一款零依赖、跨平台的流媒体协议处理工具,支持 RTSP、WebRTC、RTMP 等视频流协议的处理

大家好,今天给大家分享一款功能强大的流媒体协议处理工具go2rtc,支持多种协议和操作系统,具有零依赖、零配置、低延迟等特点。 项目介绍 go2rtc可以从各种来源获取流,包括 RTSP、WebRTC、HomeKit、FFmpeg、RTMP 等,并…

学习文档10/16

MySQL 字符集: MySQL 支持很多种字符集的方式,比如 GB2312、GBK、BIG5、多种 Unicode 字符集(UTF-8 编码、UTF-16 编码、UCS-2 编码、UTF-32 编码等等)。 查看支持的字符集 你可以通过 SHOW CHARSET 命令来查看,支持…

ARINC 429总线协议

一、概述 ARINC 是美国航空无线电公司英文字头的缩写, 该公司1977年7月21日出版了“ARINC 429规范”一书,429规范就是飞机电子系统之间数字式数据传输的标准格式,在飞机上使用429总线的电子设备均应遵守这个规范,这样才能保证电子…

Redis应用高频面试题

Redis 作为一个高性能的分布式缓存系统,广泛应用于后端开发中,因此在后端研发面试中,关于 Redis 的问题十分常见。 本文整理了30个常见的 Redis 面试题目,涵盖了 Redis 的源码、数据结构、原理、集群模式等方面的知识,并附上简要的回答,帮助大家更好地准备相关的面试。 …

2024年【N2观光车和观光列车司机】及N2观光车和观光列车司机模拟考试题

题库来源:安全生产模拟考试一点通公众号小程序 N2观光车和观光列车司机考前必练!安全生产模拟考试一点通每个月更新N2观光车和观光列车司机模拟考试题题目及答案!多做几遍,其实通过N2观光车和观光列车司机操作证考试很简单。 1、…

LabVIEW提高开发效率技巧----用户权限控制

在LabVIEW开发中,用户权限控制是一个重要的设计模块,尤其在多用户系统中,它可以确保数据安全并控制不同用户的操作权限。为了实现用户权限控制,可以通过角色与权限管理模块来进行设计和实施。以下将从多个角度详细说明如何在LabVI…

Sentinel 快速入门

前置推荐阅读:Sentinel 介绍-CSDN博客 前置推荐阅读:Nacos快速入门-CSDN博客 快速开始 欢迎来到 Sentinel 的世界!这篇新手指南将指引您快速入门 Sentinel。 Sentinel 的使用可以分为两个部分: 核心库(Java 客户端)&#xff1a…

新版vs code + Vue高亮、语法自动补全插件

vs code 版本或及以上 安装以下三个插件插件 Vetur Vue语法支持。包括语法高亮、语法代码提示、语法lint检测 ESLint语法纠错 Prettier 2.左下角设置 3.进行配置 配置内容: {"editor.fontSize": 20,"window.zoomLevel": 1,"workben…

Windows】【DevOps】Windows Server 2022 采用WinSW 启动一个会创建新的控制台程序窗口的程序行为分析

WinSW使用参考 【Windows】【DevOps】Windows Server 2022 采用WinSW将一个控制台应用程序作为服务启动(方便)-CSDN博客 源码 调整ConsoleApp1程序源代码如下: using System; using System.Diagnostics; using System.IO; using System.R…

软件生存期和软件过程

软件生存周期 软件生存周期(Software Life Cycle):一个软件项目从问题提出开始,直到软件产品最终退役(废弃不用)为止。 软件生存周期分为三个时期:计划、开发和维护 整个软件生存周期划分为多…

王爽汇编语言第三版实验3

实验任务 将下面的程序保存为t1.asm,将其生成可执行文件t1.exe 用Vscode编写源程序t1.asm 用脚本一键生成可执行文件t1.exe 成功运行 查看资源管理器,成功生成T1.obj与t1.exe文件‘ 用debug跟踪t1.exe的执行过程,写出每一步执行后&#xff…

大模型生图安全疫苗注入——进阶解决方案与系统优化(DataWhale组队学习)

引言 大家好,我是GISer Liu😁,上篇博客中,我们基于DataWhale 2024年10月大模型生图安全疫苗注入赛道的任务,介绍了攻击与防御的基本策略,如通过上下文稀释法、隐喻替换等绕过检测机制,并提出了多…

win10远程桌面打开后,其他主机访问时会报错:发生内部错误;关闭远程桌面,则报无法连接;

win10远程桌面打开后,其他主机访问时会报错:发生内部错误;关闭远程桌面,则报无法连接; 该问题困扰两天,最后这篇文章找到解决方法,成功连上了:https://www.zun.com/zx/yunwei/4798.h…

三维指纹定位,MATLAB编写的代码

文章目录 介绍:三维指纹定位系统产品概述主要特点技术细节适用场景代码 运行结果代码截图与程序结构 介绍:三维指纹定位系统 产品概述 此三维指纹定位系统采用先进的 K N N KNN KNN(K-最近邻)算法,结合四个基站的信号…

Python画笔案例-086 turtle 多线程绘画

1、turtle 多线程绘画 通过 python 的turtle 库 多线程绘画,如下图: 2、实现代码 turtle 库 多线程绘画,以下为实现代码: """多线程绘画.py """ from random import random,randint from turtle import Turtle,Screen from threading

力扣66~70题

题66(简单): python代码: class Solution:def plusOne(self, digits: List[int]) -> List[int]:s_str.join([str(i) for i in digits])nstr(int(s_str)1)n_strlist(n)res[int(i) for i in n_str]return res题67(简…

018_FEA_Structure_Static_in_Matlab三维结构静力学分析

刹车变形分析 本示例展示了如何使用 MATLAB 软件进行刹车变形分析。 这个例子是Matlab官方PDE工具箱的第一个例子,所需要的数据文件都由Matlab提供,包括CAD模型文件。 步骤 1: 导入 CAD 模型 导入 CAD 模型,这里使用的是一个带有孔的支架模…

C# 实操高并发分布式缓存解决方案

1. CAP 原则 CAP 原则也称为布鲁尔定理,由 Eric Brewer 在 2000 年提出,描述了分布式系统中的三个核心属性:一致性(Consistency)、可用性(Availability)、分区容错性(Partition Tol…