图示例

架构设计图图例

notion image
notion image

接入层

接入层是机房的流量入口,常见实现是流量网关。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云的数据源。切换过程中还具备禁写保护能力,避免产生数据脏写等数据质量问题。
  • 数据双活:异地双活单元化架构下,支持表级别的数据类型定义和禁写控制,避免双写场景下的数据质量问题。

同城多活

notion image

异地双活

notion image

异地多活

notion image
Loading...
文章列表
王小扬博客
云原生
Git
Elasticsearch
Apollo
产品
Think
生活技巧
软件开发
计算机网络
CI
DB
设计
缓存
Docker
Node
操作系统
Java
大前端
Nestjs
其他
PHP
AI