本文介绍异地多活的常见问题以及解决方案。
微服务在多活场景下如何解决?
尽可能单元内自封闭,若无法自封闭,可基于Proxy或直连模式,对微服务进行打标,流量打标跨单元调用。
消息在多活场景下如何解决?
消息体打标,在Broker和Consumer侧进行多活处理,消息在单元间同步,避免数据丢失。
Redis等缓存在多活场景下怎么解决?
缓存本身不建议同步,基于数据库Binlog监听变化,使缓存失效,避免数据错乱。若业务需要同步,可考虑通过企业版Redis或DTS进行同步。
分布式调度任务在多活场景下如何解决的?
您可以考虑以下两个方案:
- 双活:2个单元都开启定时任务,捞取全量源数据,使用MSHA-Light-SDK过滤掉非本单元的数据后再执行任务。
- 主备方案:2个单元均开启定时任务,配置中心开关控制任务执行的主、备单元角色,主单元执行全量的定时任务,备单元定时任务忽略业务逻辑处理,仅保持运行状态。
MSHA数据面的性能指标是怎样的?
- MSFE性能可控,平均延迟在6ms~8ms之间。
- Agent RT同城基本没增长,异地场景增大1ms~10ms,与业务场景相关。
是否做好入口流量分发和数据同步,就能快速具备异地多活能力?
否。异地多活核心在于流量控制、数据同步、一站式管控、架构演进四个点。入口流量分发和数据同步仅仅只是完成了四分之一,还有四分之三需要进行建设,否则不具备可用点能力。
基于MSHA的业务改造成本是怎样的?
改造成本核心在于确定分流标示和范围,还包括后续的域名染色、Agent使用,以及Sequence基础改造的成本。
如何做好双活和之前业务的过渡态,如何控制风险?
MSHA具有标准的上线切换流程,简要概述为:
- 按照MSHA多活标准确定分流标和范围。
- 业务做好兼容,完成请求参数携带染色标的改造。
- 微服务、消息等框架组件切换到多活。
- 按标准的日常、预发、线上流程进行上线。