产品架构介绍

多活容灾致力于帮助客户构建多活容灾架构。架构上通常将业务系统自上而下分为接入层、应用层和数据层三层。配合产品提供的管控和数据面组件,实现多活架构的创建和管控。

MSHA产品架构图

image

控制台

控制台是用户侧控制台入口,提供MSFE、HSF、Dubbo、MQ、RDS和DRDS等各类技术架构下的容灾配置及容灾切换。

  • 业务LDC定义与多活实例创建。

  • 接入层、应用层和数据层的各类技术架构容灾配置。

  • 多活架构下的全栈监控。

  • 多活架构下的容灾场景管理与切流。

接入层

接入层是机房的流量入口,常见实现是流量网关。MSHA当前提供一个基于Tengine的流量网关实现,简称MSFE,需要在租户侧ECS上搭建集群,其他流量网关产品正在计划中支持。接入层功能可以概括为以下几点:

  • 机房级流量路由。多活流量必须经过接入层,以便在故障发生时,通过接入层切换入口流量。

    • 比例分流:接入层支持按比例将流量分流到机房。特殊场景下,可以将机房流量切零,从而实现故障情况下的流量切换。

    • 精准路由:接入层支持根据HTTP请求Header/Cookie/Query String Parameters中携带的路由标识,以及配置好的路由规则名单,将流量路由到对应的机房。

    • 由于DNS域名解析的随机性,接入层的路由纠错可以保证准确性与实效性。

  • 应用级流量路由:支持按照不同的域名与URI组合,将流量分流到对应的后端应用。

应用层

应用层是对应用服务的抽象概括,包括微服务、消息、定时任务。

微服务,常见的包括EDAS-HSF服务、Dubbo服务、SpringCloud服务,MSHA提供以下核心能力。

  • 跨云服务同步:MshaSync服务端组件支持对多云的注册中心进行服务信息同步。支持的注册中心有Nacos、ZK。针对Eureka,建议客户迁移到Nacos。

  • 同机房优先路由:支持Consumer优先调用同机房内的Provider,从而减少跨机房调用,同时还能将故障的爆炸半径控制在一个机房内。

  • 故障隔离:当局部Provider出现异常时,支持将异常的Provider进行故障隔离,保证所有机房内的Consumer均不会调用到异常的Provider,实现微服务流量的故障逃逸。

  • 单元化服务寻址:针对异地多活单元化架构,支持按照单元化规则寻址调用Provider。

消息,包括云产品和开源RocketMQ,MSHA提供以下核心能力。

  • 消息同步:支持消息以Topic粒度的跨地域双向同步。

  • 故障隔离:切零单元格内的SUB端不再进行消息的消费,从而实现消费流量的快速逃逸。

  • 消息按需消费:在消息同步的情况下每个单元有两份消息,在异地应用双活架构、异地双活单元化架构下按一定规则消费消息。

定时任务,包括云消息SchedulerX和开源XXL-Job等,MSHA提供以下核心能力。

故障隔离。切零单元格内的定时任务客户端不再运行定时任务,从而实现定时任务的快速逃逸。

数据层

数据层是数据库服务的抽象概括,针对关系型数据库,包括RDS、DRDS(PolarDB-X1.0)、PolarDB-X2.0、PolarDB O、自建MySQL、自建PostgreSQL等,MSHA提供以下核心能力。

  • 数据单向/双向同步:借助DTS等产品能力进行数据同步,特别是对于单向同步链路,支持数据源主备切换过程中的同步链路翻转。

  • 读写分离/读写不分离:读写分离,写主云读本地。读写不分离,读写均在主云。

  • 主备切换:单云故障,支持数据库跨云主备切换,MshaSDK能够将应用原本连接A云的数据源,切换为连接到B云的数据源。切换过程中还具备禁写保护能力,避免产生数据脏写等数据质量问题。

  • 数据双活:异地双活单元化架构下,支持表级别的数据类型定义和禁写控制,避免双写场景下的数据质量问题。