当前位置: 首页 > 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.dtcms.com/a/296035.html

相关文章:

  • pytest官方Tutorial所有示例详解(一)
  • SQL基础⑪ | 约束
  • HTML应用指南:利用GET请求获取全国奈雪的茶门店位置信息
  • 使用exceljs导出luckysheet表格 纯前端 支持离线使用
  • 深度分析Java虚拟机
  • pyarmor加密源代码
  • 「iOS」——RunLoop学习
  • Spring之SSM整合流程详解(Spring+SpringMVC+MyBatis)
  • 教务管理系统学排课教务系统模块设计
  • 使用全局变量访问 Qt UI 组件的方法文档
  • 人工智能时代数据“淘金”:Python数据预处理与特征工程十大技术要点解析
  • 物联网十大应用领域深度解析
  • 【水文水资源] SWAT、AquaCrop模型、HYPE、Aquatox、Delft3D、FVCOM、3s水文、
  • 从“耗电大户”到“节能先锋”:政策驱动下,智慧照明如何改写城市能源格局?
  • Visual Studio 2010-.Net Framework 4.0项目-NPOI安装
  • redis常用数据类型
  • golang 1.24在密码相关领域的改动
  • linux 应用层直接操作GPIO的方法
  • Java 异常处理:从理解到实践的全面指南
  • 项目部署卡脖子?EasyCVR视频汇聚平台5种部署方案适配百变监控需求
  • 线段树学习笔记 - 练习题(2)
  • 教程:如何通过代理服务在国内高效使用 Claude API 并集成到 VSCode
  • LeetCode 23:合并 K 个升序链表
  • QT框架,关于WebEngine打包
  • DPU 是什么?
  • 达梦数据库报错“回滚记录版本太旧,无法获取用户记录”问题根源原理和解决方法
  • JVM原理及其机制(二)
  • Python图像数据处理
  • 浅谈程序运行之编译和链接 - 翻译环境和运行环境
  • go语言基础教程:1. Go 下载安装和设置