多活容灾是由架构加管控组合而成的产品解决方案。架构上将业务分为接入层、应用层、数据层三层,应用层又可以细分为微服务调用、消息等多个功能域,每一层都会有相应的多活组件,管控在各层组件的基础上具备全栈的多活管控能力。

MSHA产品架构如下图所示。

产品架构

控制台

控制台提供多活配置及运维闭环的功能:

  • 接入层、应用层、数据层的各层接入多活的初始化操作和日常运维。
  • 多活场景下的数据监控。
  • 灾难场景的切流操作。
  • 多活切分规则的展示及查看。

接入层

接⼊层是一个基于Tengine的多活组件,简称为MSFE。MSFE需要多单元部署,能承接所有的单元前端流量,并按照路由规则路由到正确单元的后端应⽤。多活控制台同时提供MSFE集群新建、扩容、缩容等常规运维能力。

应用层

应⽤层是应用服务的抽象概括,对应RPC服务和消息,包含但不仅限于以下组件:

  • EDAS:EDAS提供微服务RPC能力,借助EDAS多活组件可以实现RPC多活,接入时需要稍作代码改造以及升级EDAS容器版本。
  • MQ:云产品消息MQ,借助MQ多活组件可以实现消息多活,接⼊时需要稍作代码改造以及在控制台配置消息多活属性。

数据层

数据层是数据库服务的抽象概括,包括但不限于以下组件:

  • 多活数据Driver:由MSHA提供的多活读写数据库组件,负责处理多活场景下的数据禁写逻辑。
  • 数据同步DTS:基于DTS的单/双向同步能力,与多活管控共同配合完成多活容灾的数据同步控制逻辑处理。