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.rhkb.cn/news/454062.html

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

相关文章

Vue+TypeScript+SpringBoot的WebSocket基础教学

成品图: 对WebSocket的理解(在使用之前建议先了解Tcp,三次握手,四次挥手 ): 首先页面与WebSocket建立连接、向WebSocket发送信息、后端WebSocket向所有连接上WebSoket的客户端发送当前信息。 推荐浏览网站…

【网络原理】HTTP协议

目录 前言 一.什么是HTTP HTTP报文格式 HTTP的请求格式 1.首行 2.请求头(header) 3.空行 4.正文(body) HTTP的响应格式 1.首行 2.响应头 3.空行 4.正文(body) 首行中的方法 GET和POST的区别 …

linux中级wed服务器(https搭建加密服务器)

一。非对称加密算法: 公钥:公共密钥,开放 私钥:私有密钥,保密 1.发送方用自己的公钥加密,接受方用发送方的私钥解密:不可行 2.发送方用接受方的公钥加密,接受方用自己的私钥解密…

基于yolov10的驾驶员抽烟打电话安全带检测系统python源码+pytorch模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv10的驾驶员抽烟、打电话、安全带检测系统是一种先进的驾驶行为监测系统。该系统利用YOLOv10算法的高效性和准确性,实现对驾驶员行为的实时检测与识别。 YOLOv10是一种最新的实时物体检测模型,其通过深度学习技术,如卷…

spark统一内存模型 详解

Apache Spark 是一个用于大规模数据处理的分布式计算框架,它支持多种处理模型(如批处理、流处理、SQL、机器学习等)。为了高效地在分布式环境中处理这些多样化的工作负载,Spark 在 2.x 版本后引入了统一内存管理模型,以…

Mycat2安装配置

安装配置 安装 目前Mycat2下载地址已经不可访问,安装包可从参考资料[1]获取 下载后解压zip文件,将jar放在lib目录下 编辑配置文件 编辑conf文件夹下的prototypeDs.datasource.json 更改数据库相关信息 启动 windows环境下启动Mycat 以管理员身份运行…

Linux重点yum源配置

1.配置在线源 2.配置本地源 3.安装软件包 4.测试yum源配置 5.卸载软件包

Git 完整教程:版本管理、分支操作与远程仓库解析

文章目录 一、引言二、Git原理三、.git目录四、版本回退以及撤销修改五、Git远程控制1、创建仓库2、克隆/下载远程仓库到本地的方法3、本地仓库的修改推送到远程仓库4、拉取远程仓库的修改到本地仓库5、操作标签 六、Git分支1、分支操作(创建、删除、合并&#xff0…

九种排序,一次满足

我们在算法题进行练习提升时,经常会看到题目要求数据从大到小输出,从小到大输出,前一半从小到大输出,后一半从大到小输出等,那么这时候就需要用到排序算法,通过排序算法将数据按照一定的顺序进行排序。本文…

排序02 Multi-gate Mixture-of-Experts (MMoE)

MMoE: 不一定适合业务场景 输入向量(包含四种特征)到三个神经网络(专家),不共享参数。实践中超参数专家神经网络个数需要调,会尝试4个或者8个专家。 左边另一个神经网络softmax输出的向量,三个…

element-plus 官方表格排序问题

element-plus 官方API 默认表格排序存在问题,一个list 被多组排序 修改后: 注意点: 这里一定要使用 sortable"custom",自定义 sort-change 方法 使用 sortable true 的情况排序会冲突,出现莫名奇妙的问题…

Oracle SQL练习题,从小白到入门 - 上

从事DBA以来,越来越认识到自己SQL水平不足,想想sql语句还停留在大二寒假学习的黑马的Mysql《Mysql 十天精通》基础篇进阶篇,将近100集一天就学完了,黑马yyds。 再后来,做项目用Spring的MyBatis是真的香,练…

string类的学习(上)

string类与我们再C语言中接触到的字符串数据相似,但是做出了一些重大的提升,封装为类,实现了总多的接口,丰富了其功能,为简化了字符串的使用,那现在我们就开始深入学习string类吧。 1.什么事string类 C语言…

Java项目:155 springboot酒店管理系统(含论文+ppt+开题报告+说明文档)

作者主页:源码空间codegym 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 ​ 后台: 1.登录:输入账号、密码,即可登录。 2.套房管理:可对房间房型进行管理。 3.入住管…

elk部署安装

elk部署 前提准备1、elasticsearch2、kibana3、logstash 前提准备 1、提前装好docker docker-compose相关命令 2、替换docker仓库地址国内镜像源 cd /etc/docker vi daemon.json # 替换内容 {"registry-mirrors": [ "https://docker.1panel.dev", "ht…

L1练习-鸢尾花数据集处理(分类/聚类)

背景 前文(《AI 自学 Lesson1 - Sklearn(开源Python机器学习包)》)以鸢尾花数据集的处理为例,本文将完善其代码,在使用 sklearn 的部分工具包基础上,增加部分数据预处理、数据分析和数据可视化…

FL Studio 2024 发布,添加 FL Cloud 插件、AI 等功能

作为今年最受期待的音乐制作 DAW 更新之一,FL Studio 2024发布引入了新功能,同时采用了新的命名方式,从现在起将把发布年份纳入其名称中。DAW 的新增功能包括在 FL Cloud 中添加插件、AI 驱动的音乐创作工具和 FL Studio 的新效果。 FL Clou…

Java 解决阿里云OSS服务器私有权限图片通过URL无法预览的问题

简单描述一下此场景的业务: 由于系统中需要将上传的图片在系统中展示(private私有权限不能直接通过url直接展示),不想通过先下载下来然后以流的形式返回给前台展示这种方法很不友好,毕竟现在前台展示方式都是通过图片URL进行展示,所以就上官网查看API文档,果然找到了解决…

视频美颜平台是如何搭建的?基于直播美颜SDK源码的开发技术详解

今天,笔者将详细讲解如何基于直播美颜SDK源码搭建视频美颜平台的技术路径。 一、理解视频美颜技术 视频美颜技术主要通过图像处理算法对视频流进行实时处理,包括肤色优化、瑕疵修复、面部特征增强等。实现这一目标需要高效的图像处理算法和稳定的实时渲…

电脑异常情况总结

文章目录 笔记本无症状息屏黑屏 笔记本无症状息屏黑屏 🍎 问题描述: 息屏导致黑屏;依次操作计算机--》右键--》管理--》事件查看器--》Windows日志--》系统;从息屏到异常黑屏之间出现了很多错误,如下:事件…