当前位置: 首页 > news >正文

高可用架构模式——异地多活设计步骤

目录

    • 一、步骤1——业务分级
      • 1.1、分级标准
        • 1.1.1、访问量大的业务
        • 1.1.2、核心业务
        • 1.1.3、产生大量收入的业务
    • 二、步骤2——数据分类
      • 2.1、数据特征分析维度
        • 2.1.1、数据量
        • 2.1.2、唯一性
        • 2.1.3、实时性
        • 2.1.4、可丢失性
        • 2.1.5、可恢复性
    • 三、步骤3——数据同步
      • 3.1、数据同步方案
        • 3.1.1、存储系统同步
        • 3.1.2、消息队列同步
        • 3.1.3、重复生成
    • 四、步骤4——异常处理
      • 4.1、异常处理的目的
      • 4.2、常见的异常处理措施
        • 4.2.1、多通道同步
          • 4.2.1.1、多通道同步设计的方案关键点
        • 4.2.2、同步和访问结合
          • 4.2.2.1、同步和访问结合方案的设计关键点
        • 4.2.3、日志记录
          • 4.2.3.1、常见的日志保存方式
        • 4.2.3、用户补偿

本文来源:极客时间vip课程笔记

一、步骤1——业务分级

  • 按照一定的标准将业务进行分级,挑选出核心的业务,只为核心业务设计异地多活,降低方案整体复杂度和实现成本。

1.1、分级标准

1.1.1、访问量大的业务
  • 以用户管理系统为例,业务包括登录、注册、用户信息管理,其中登录的访问量肯定是最大的。
1.1.2、核心业务
  • 以 QQ 为例,QQ 的主场景是聊天,QQ 空间虽然也是重要业务,但和聊天相比,重要性就会低一些,如果要从聊天和 QQ 空间两个业务里面挑选一个做异地多活,那明显聊天要更重要(当然,此类公司如腾讯,应该是两个都实现了异地多活的)。
1.1.3、产生大量收入的业务
  • 同样以 QQ 为例,聊天可能很难为腾讯带来收益,因为聊天没法插入广告;而 QQ 空间反而可能带来更多收益,因为 QQ 空间可以插入很多广告,因此如果从收入的角度来看,QQ 空间做异地多活的优先级反而高于 QQ 聊天了。

二、步骤2——数据分类

  • 挑选出核心业务后,需要对核心业务相关的数据进一步分析,目的在于识别所有的数据及数据特征,这些数据特征会影响后面的方案设计。

2.1、数据特征分析维度

2.1.1、数据量
  • 这里的数据量包括总的数据量和新增、修改、删除的量。对异地多活架构来说,新增、修改、删除的数据就是可能要同步的数据,数据量越大,同步延迟的几率越高,同步方案需要考虑相应的解决方案。
2.1.2、唯一性
  • 唯一性指数据是否要求多个异地机房产生的同类数据必须保证唯一。

    例如用户 ID,如果两个机房的两个不同用户注册后生成了一样的用户 ID,这样业务上就出错了。

  • 数据的唯一性影响业务的多活设计,如果数据不需要唯一,那就说明两个地方都产生同类数据是可能的;如果数据要求必须唯一,要么只能一个中心点产生数据,要么需要设计一个数据唯一生成的算法。

2.1.3、实时性
  • 实时性指如果在 A 机房修改了数据,要求多长时间必须同步到 B 机房,实时性要求越高,对同步的要求越高,方案越复杂。
2.1.4、可丢失性
  • 可丢失性指数据是否可以丢失。例如,写入 A 机房的数据还没有同步到 B 机房,此时 A 机房机器宕机会导致数据丢失,那这部分丢失的数据是否对业务会产生重大影响。

    例如,登录过程中产生的 session 数据就是可丢失的,因为用户只要重新登录就可以生成新的 sessi

http://www.lryc.cn/news/598823.html

相关文章:

  • 物流仓储自动化升级:Modbus TCP与DeviceNet的协议融合实践
  • C++实战:人脸识别7大核心实例
  • 【数据结构初阶】--二叉树(二)
  • FreeSWITCH 简单图形化界面45 - 收集打包的一些TTS
  • 内网IM:BeeWorks私有化部署的安全通讯解决方案
  • 安全插座项目规划书
  • 【VSCode】复制到下一行快捷键
  • 2024年ASOC SCI2区TOP,基于强化学习教与学优化算法RLPS-TLBO+风电场布局优化,深度解析+性能实测
  • Go基础教程 从零到英雄:30分钟掌握Go语言核心精髓
  • Go语言管道Channel通信教程
  • 黑马点评系列问题之p44实战篇商户查询缓存 jmeter如何整
  • 2025.7.24 01背包与动态规划复习总结
  • 【Oracle】Oracle权限迷宫破解指南:2步定位视图依赖与授权关系
  • MySQL常见命令
  • 多线程 Reactor 模式
  • hcip思维导图(1)
  • GaussDB 数据库架构师(八) 等待事件概述-1
  • 阿里云ECS坑之dnf-makecache系统软件更新检测服务
  • 解决postgresql连接数不足
  • 五分钟了解Java 中的锁
  • SQL基础⑪ | 约束
  • JavaScript 中的 structuredClone() 如何彻底改变你的对象复制方式
  • Android LiveData 全面解析:原理、使用与最佳实践
  • Windows 10 远程桌面(RDP)防暴力破解脚本
  • Android 与 Windows 文件路径的设计差异
  • Android Camera createCaptureSession
  • 教程:如何通过代理服务在国内高效使用 Claude API 并集成到 VSCode
  • DGMR压缩技术:让大规模视觉Transformer模型体积减半而性能不减
  • FastAPI中间件
  • iview 部分用法