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