当前位置: 首页> 文旅> 美景 > 上海装饰公司10排名_网络服务器配置_优化seo方案_百度关键词搜索指数查询

上海装饰公司10排名_网络服务器配置_优化seo方案_百度关键词搜索指数查询

时间:2025/7/9 21:49:18来源:https://blog.csdn.net/yangshangwei/article/details/145969183 浏览次数:1次
上海装饰公司10排名_网络服务器配置_优化seo方案_百度关键词搜索指数查询

文章目录

  • Pre
  • 概述
  • 1. 主从服务器模式
    • 实现原理
    • 优缺点与适用场景
  • 2. 代理服务器模式
    • 实现原理
    • 优缺点与适用场景
  • 3. 多活服务器模式
    • (1)业务层写入模式
    • (2)监听Redis变更事件模式
    • (3)伪装从服务器获取写入命令模式
    • (4)AOF日志信息同步模式
  • 方案选型对比
  • 实践建议
  • 总结

在这里插入图片描述


Pre

Redis-入门到精通

Redis进阶系列

Redis进阶 - Redis主从工作原理详解

Redis-18Redis主从同步

Redis-19Redis哨兵Sentinel模式-Centos6.5上3台主机1主2从3哨兵的配置及通过代码访问哨兵

Redis - 高可用实现方案解析:主从复制与哨兵监控

Redis - 三种Redis集群实现方案之_客户端分片

Redis - 三种Redis集群实现方案之_基于代理的分片


概述

随着业务规模不断扩大,多机房部署成为保障系统高可用性、容灾和低时延访问的重要手段。作为高性能内存数据库的Redis,其跨机房数据同步方案备受关注。本文将详细探讨业界常见的三种数据同步方案:主从服务器模式、代理服务器模式和多活服务器模式,分析各自的实现原理、优缺点以及适用场景,为系统架构设计提供参考。

1. 主从服务器模式

在这里插入图片描述

实现原理

在主从服务器模式中,通过伪装成一个从服务器(即伪从服务器)来利用Redis原生的PSYNC命令完成数据同步。

其基本流程如下:

  • 数据同步:通过实现一个数据同步模块,并且伪装成一个从服务器(伪从服务器),向主服务器发送PSYNC命令,获取全量RDB文件以及增量执行命令,对这些数据进行封装压缩、加密等一系列优化操作,并通过实现自有的数据通信协议进行传输,当另一个机房的同步服务接收到数据之后对其实现解压处理,并且加载到从服务器文件存储路径,同时将增量命令执行写入从服务器。
  • 同步服务高可用:通过一个注册中心来实现同步服务的故障发现,它们有主从备份,如果其中一个同步服务器宕机,可以拉起备用服务节点代替主同步服务。
  • Redis自身高可用:通过主从模式及哨兵模式来实现,哨兵检测到主服务器宕机后,会切换到从服务器来进行替代

种模式只能做到单向数据传输,无法实现数据的双活。

优缺点与适用场景

  • 优点
    • 利用原生PSYNC机制,技术实现相对简单。
    • 可对传输过程进行定制化优化(如压缩与加密)。
  • 缺点
    • 仅支持单向数据传输,无法满足双向数据同步需求。
  • 适用场景
    • 适用于灾备、备份场景或数据传输方向固定的应用。

常见实现包括阿里云Redis&MongoDB团队的 redis-shake 以及携程框架部门的 Xpipe


2. 代理服务器模式

在这里插入图片描述

实现原理

代理服务器模式在每个Redis节点前部署一层代理,该代理层负责拦截所有写入请求并实现数据的转发与同步:

  • 上层业务无需感知数据同步逻辑,所有数据写入同时传递到本地Redis和其他机房的节点。
  • 数据同步通过代理自动完成,保持机房内外数据一致性。

优缺点与适用场景

  • 优点
    • 对业务层完全透明,无需改动应用代码。
    • 自动实现机房内外的数据同步。
  • 缺点
    • 每个节点需要额外部署代理,增加了运维管理复杂性。
    • 写入性能较原生Redis有所下降,尤其是节点数量增加时。
    • 同步策略不够灵活,无法针对性选择部分数据进行同步。
  • 适用场景
    • 适用于对业务透明性要求高、对性能影响可控的场景。

Netflix开源的 Dynomite 是这种模式的代表性实现。


3. 多活服务器模式

多活服务器模式旨在实现跨机房的双向数据写入,即各机房的Redis均可同时读写。常见的实现方式主要有以下几种:

(1)业务层写入模式

在这里插入图片描述

  • 原理:业务在写入Redis的同时,将数据同步写入消息队列,由消息队列自带的机房同步机制实现跨机房数据传递。
  • 优缺点
    • 优点:实现简单、直观。
    • 缺点:对业务有较强侵入性,不同业务间难以共享同步组件。

(2)监听Redis变更事件模式

在这里插入图片描述

  • 原理:利用Redis的数据变更监听机制捕捉写操作,通过消息队列完成数据同步。为防止循环复制,通常在数据中加入标记字段(如source)来区分数据来源。

在这种模式下,数据同步监听Redis的变更操作事件,机房1到机房2有同步,同时机房2到机房1也有同步,这样就会出现双向同步下数据循环复制的问题。那么如何解决这个问题呢?

可以采取添加数据源标记的方式来解决,例如添加source字段,通过该字段标记数据从哪个机房同步过来,如果机房1发现数据是从机房2同步过来的则接收,如果数据标记字段是机房1,说明产生了循环复制,则丢弃此次同步的数据。Redis 监听事件的模式的最大弊端在于处理的性能有限。由于Redis监听事件通知性能有限,因此使用这种模式需要谨慎评估线上数据对时延的容忍度,如果业务对时延的容忍度很低,那么这种模式不太适合。

  • 优缺点
    • 优点:独立于业务层,减少业务侵入性。
    • 缺点:Redis事件监听机制在高并发下性能有限,可能无法满足极低延时要求。

(3)伪装从服务器获取写入命令模式

在这里插入图片描述

  • 原理:与主从模式类似,通过伪装成从服务器获取全量RDB及增量命令。解析后,通过消息队列传递到目标机房,写入时可利用时间戳确保顺序正确,同时通过数据标记避免循环复制问题。

基于伪从服务器的Redis多活同步过程包含以下几点。

  • 拉取服务:伪装成一个Redis的从服务器(图3-17中的伪从服务器),并对主服务器发送PSYNC命令,发送这个命令之后,伪从服务器首先会获取到一个全量同步的RDB(Redis DataBase)文件,之后就依据runid offset获取增量操作的命令进行增量同步。

  • 解析服务:解析服务主要是解析RDB文件,RDB文件是以二进制格式存储的,按照文件存储的格式进行读取,RDB的文件格式以及解析在这里限于篇幅不详述,可以参考开源工具,推荐通过redis-rdb-tools来了解具体的解析逻辑。

  • 回放服务:回放服务是将已经解析的Redis命令写入目的Redis集群,这里有一个问题,由于采取消息队列(message queue,MQ)进行传输,并且是多活写入,因此存在数据回放的顺序问题,可以在写入消息队列的时候带上时间戳,通过时间戳的先后顺序进行覆盖。

  • 发送/接收服务:将解析后的数据写入消息队列,以及从消息队列接收数据传递给回放服务。另外消息队列多向同步仍然会遇到数据循环复制的问题,解决方案和前面介绍的一致,这里不赘述。

  • 优缺点

    • 优点:借助PSYNC机制,可以较容易实现数据同步。
    • 缺点:数据解析和命令回放流程较为复杂,存在性能瓶颈风险。

(4)AOF日志信息同步模式

在这里插入图片描述

  • 原理:利用Redis的AOF日志,每条操作日志扩展为包含全局唯一ID和逻辑时钟信息的操作记录。通过消息队列传递后,在目标机房利用CRDT(无冲突复制数据类型)策略进行数据合并,确保“exactly once”同步及数据最终一致性。

基于AOF的Redis多活实现方案要解决的一些核心问题如下。

  • 日志同步:把每一条AOF格式日志信息扩展为操作日志,以方便对操作信息的写入、对操作日志的同步,并保障同步操作是exactly once。-

  • 唯一标识:每条oplog包含一个全局唯一ID,ID又包含两部分,一部分是Redis实例ID,用于解决循环同步的问题,另一部分是递增数字,保证有序和唯一。

  • 数据最终一致性:操作日志包含逻辑时钟信息,在目标端Redis执行合并时,使用无冲突复制数据类型(conflict-free replicated data type,CRDT)策略解决数据一致性问题。

  • 优缺点

    • 优点:能有效保证数据一致性,适用于复杂的多活场景。
    • 缺点:实现过程较为复杂,对系统性能和设计要求较高。

阿里云ApsaraDB for Redis的多活实现便采用了类似方案。


方案选型对比

方案数据方向性能影响运维复杂度典型场景
主从模式单向灾备、读写分离
代理模式双向小规模多活
多活-伪从双向通用多活场景
多活-AOF同步双向强一致性要求场景

实践建议

  1. 防循环复制:所有方案需通过标记字段(如机房ID)过滤本地数据。
  2. 数据一致性:优先选择支持CRDT或时间戳覆盖的同步策略。
  3. 性能优化
    • 批量压缩传输降低网络开销
    • 异步回放减少写入延迟
  4. 监控体系:需建设同步延迟、数据差异等核心指标监控。

总结

  • 主从服务器模式:利用PSYNC实现数据单向传输,技术实现简单,适用于备份与灾备场景,但不支持双向数据同步。
  • 代理服务器模式:通过部署代理层实现数据透明同步,适合对业务无侵入要求的场景,但运维和性能上存在一定挑战。
  • 多活服务器模式:提供双向写入能力,通过业务层写入、事件监听、伪从服务器模式及AOF日志同步等多种方式实现数据同步,各有优缺点,需根据具体业务需求进行权衡。

以上各种模式的解决方案可以相互借鉴,例如消息的唯一标识、数据防止循环复制、数据最终一致性处理等。数据同步通道也不一定是消息队列,本节只是为了大家理解和使用方便,因此以消息队列来说明,原则上任意数据传输服务(data transmission service,DTS)都是可行的

随着Redis 7.0推出的ACL增强和复制协议优化,未来跨机房同步将朝着更安全、更高效的方向持续演进。

在这里插入图片描述

关键字:上海装饰公司10排名_网络服务器配置_优化seo方案_百度关键词搜索指数查询

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: