异地多活设计4步走

极客时间:《从 0 开始学架构》:异地多活设计4步走

第 1 步:业务分级

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

  • 访问量大的业务
  • 核心业务
  • 产生大量收入的业务

第 2 步:数据分类

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

  • 数据量
    数据量包括总的数据量和新增、修改、删除的量
  • 唯一性
    唯一性指数据是否要求多个异地机房产生的同类数据必须保证唯一
  • 实时性
    实时性指如果在 A 机房修改了数据,要求多长时间必须同步到 B 机房,实时性要求越高,对同步的要求越高,方案越复杂。
  • 可丢失性
    可丢失性指的是数据是否可以丢失。
  • 可恢复性
    可恢复性指数据丢失后,是否可以通过某种手段进行恢复,如果数据可以恢复,至少说明对业务的影响不会那么大,这样可以相应地降低异地多活架构设计的复杂度。

第 3 步:数据同步.

确定数据的特点后,我们可以根据不同的数据设计不同的同步方案。常见的数据同步方案有:

  • 存储系统同步
  • 消息队列同步
    采用独立消息队列进行数据同步,常见的消息队列有 Kafka、ActiveMQ、RocketMQ 等。
    消息队列同步适合无事务性或者无时序性要求的数据。
  • 重复生成
    数据不同步到异地机房,每个机房都可以生成数据,这个方案适合于可以重复生成的数据。例如,登录产生的 cookie、session 数据、缓存数据等

第 4 步:异常处理

异常(如同步延迟、数据丢失、数据不一致等)处理就是假设在出现这些问题时,系统将采取什么措施来应对。
异常处理主要有以下几个目的:

  • 问题发生时,避免少量数据异常导致整体业务不可用
  • 问题恢复后,将异常的数据进行修正
  • 对用户进行安抚,弥补用户损失。

常见的异常处理措施有这几类:

  1. 多通道同步
    多通道同步的含义是采取多种方式来进行数据同步,其中某条通道故障的情况下,系统可以通过其他方式来进行同步,这种方式可以应对同步通道处故障的情况。
    多通道同步设计的方案关键点有:
  • 一般情况下,采取两通道即可,采取更多通道理论上能够降低风险,但付出的成本也会增加很多。
  • 数据库同步通道和消息队列同步通道不能采用相同的网络连接,否则一旦网络故障,两个通道都同时故障;可以一个走公网连接,一个走内网连接。
  • 需要数据是可以重复覆盖的,即无论哪个通道先到哪个通道后到,最终结果是一样的。例如,新建账号数据就符合这个标准,而密码数据则不符合这个标准。
  1. 同步和访问结合
    访问指异地机房通过系统的接口来进行数据访问。
    同步和访问结合方案的设计关键点有:
  • 接口访问通道和数据库同步通道不能采用相同的网络连接,不能让数据库同步和接口访问都走同一条网络通道,可以采用接口访问走公网连接,数据库同步走内网连接这种方式。
  • 数据有路由规则,可以根据数据来推断应该访问哪个机房的接口来读取数据。例如,有 3 个机房 A、B、C,B 机房拿到一个不属于 B 机房的数据后,需要根据路由规则判断是访问 A 机房接口,还是访问 C 机房接口。
  • 由于有同步通道,优先读取本地数据,本地数据无法读取到再通过接口去访问,这样可以大大降低跨机房的异地接口访问数量,适合于实时性要求非常高的数据。
  1. 日志记录
    日志记录主要用于用户故障恢复后对数据进行恢复,其主要方式是每个关键操作前后都记录相关一条日志,然后将日志保存在一个独立的地方,当故障恢复后,拿出日志跟数据进行对比,对数据进行修复。
    常见的日志保存方式有:
  • 服务器上保存日志,数据库中保存数据,这种方式可以应对单台数据库服务器故障或者宕机的情况。
  • 本地独立系统保存日志,这种方式可以应对某业务服务器和数据库同时宕机的情况。
  • 日志异地保存,这种方式可以应对机房宕机的情况。
  1. 用户补偿
    无论采用什么样的异常处理措施,都只能最大限度地降低受到影响的范围和程度,无法完全做到没有任何影响。

PS:业务分级讨论的时候,产品说 A 也很重要,因为影响用户使用;B 也很重要,因为影响公司收入;C 也很重要,因为会导致客户投诉……这种情况下我们该如何处理业务分级?
答:
业务分级我觉得得从如下方面来分析:
1.部门或者公司当期的发力点,如果着重新用户的增长 我觉得顺序应该是ACB,如果着重现有客户满意度,我觉得顺序应该是CBA,如果看重看重收益,那B的优先级最高
2.可通过预期货币价值分析,进行业务分级;大致维度如下:风险发生概率 风险损耗成本 技术改造陈本 技术改造时长(月) 改造后成本节省(月)

posted @   牛犁heart  阅读(149)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示