本文介绍异地多活的常见问题以及解决方案。

微服务在多活场景下如何解决?

尽可能单元内自封闭,若无法自封闭,可基于Proxy或直连模式,对微服务进行打标,流量打标跨单元调用。

消息在多活场景下如何解决?

消息体打标,在Broker和Consumer侧进行多活处理,消息在单元间同步,避免数据丢失。

Redis等缓存在多活场景下怎么解决?

缓存本身不建议同步,基于数据库Binlog监听变化,使缓存失效,避免数据错乱。若业务需要同步,可考虑通过企业版Redis或DTS进行同步。

分布式调度任务在多活场景下如何解决的?

您可以考虑以下两个方案:

  • 双活:2个单元都开启定时任务,捞取全量源数据,使用MSHA-Lignt-SDK过滤掉非本单元的数据后再执行任务。
  • 主备方案:2个单元均开启定时任务,配置中心开关控制任务执行的主、备单元角色,主单元执行全量的定时任务,备单元定时任务忽略业务逻辑处理,仅保持运行状态。

MSHA数据面的性能指标是怎样的?

  • MSFE性能可控,平均延迟在6 ms~8 ms之间。
  • Agent RT同城基本没增长,异地场景增大1 ms~10 ms,与业务场景相关。

是否做好入口流量分发和数据同步,就能快速具备异地多活能力?

否。异地多活核心在于流量控制、数据同步、一站式管控、架构演进四个点。入口流量分发和数据同步仅仅只是完成了四分之一,还有四分之三需要进行建设,否则不具备可用点能力。

基于MSHA的业务改造成本是怎样的?

改造成本核心在于确定分流标示和范围,还包括后续的域名染色、Agent使用,以及Sequence基础改造的成本。

如何做好双活和之前业务的过渡态,如何控制风险?

MSHA具有标准的上线切换流程,简要概述为:

  • 按照MSHA多活标准确定分流标和范围。
  • 业务做好兼容,完成请求参数携带染色标的改造。
  • 微服务、消息等框架组件切换到多活。
  • 按标准的日常、预发、线上流程进行上线。