微服务18:微服务治理之异地多活容灾

服务,治理,异地 · 浏览次数 : 48

小编点评

**异地多活及阿里云容灾经验分享** **什么是异地多活?** 异地多活是一种系统高可用的解决方案,通过在多个不同机房建立多个数据中心,并使这多个数据中心都可以同时在线提供服务来避免当出现机房断电、光纤被挖断等场景出现服务不可用的场景。 **阿里云容灾经验分享** 阿里云提供了一系列容灾解决方案,包括两地三中心架构和异地多活。阿里云容灾经验分享中,分享了使用两地三中心架构实现高可用性的成功案例。 **两地三中心架构的优势** * 提高系统可用性 * 提高数据备份和恢复效率 * 降低灾备成本 **两地三中心架构的实现** * 建立多个数据中心 * 在多个数据中心之间进行数据备份和同步 * 当某个数据中心发生故障时,其他数据中心可以提供服务 * CDN+负载均衡 **异地多活的优点** * 提高系统可用性 * 实现服务高可用性 * 降低数据丢失风险 **异地多活的实现** * 建立多个数据中心 * 在多个数据中心之间进行数据备份和同步 * 当某个数据中心发生故障时,其他数据中心可以提供服务 * 监控和管理工具,实时监控数据中心的运行状态

正文

★微服务系列

微服务1:微服务及其演进史
微服务2:微服务全景架构
微服务3:微服务拆分策略
微服务4:服务注册与发现
微服务5:服务注册与发现(实践篇)
微服务6:通信之网关
微服务7:通信之RPC
微服务8:通信之RPC实践篇(附源码)
微服务9:服务治理来保证高可用
微服务10:系统服务熔断、限流
微服务11:熔断、降级的Hystrix实现(附源码)
微服务12:流量策略
微服务13:云基础场景下流量策略实现原理
微服务14:微服务治理之重试
微服务15:微服务治理之超时
微服务16:微服务治理之熔断、限流
微服务17:微服务治理之异常驱逐

1 介绍

互联网行业内在进行微服务高可用建设的时候,不可避免的要考虑一个事情,如何部署才能提高系统的可用性和稳定性。
所以一般情况下,不会只部署一个机房,这样无法完全避免一个机房内网络故障、机房断电,遭受区域网络攻击的风险。
所以有了多机房建设的,但是多机房建设同样也有问题,他们无法近距离的部署,如果部署区域太近(如在同一个城市),依然无法避免区域断电、洪灾、水灾、火灾、地震等灾难情况的发生。
所以业内的大型互联网企业,会耗费大量的人力物理在基础设施建设方面。通过资源的冗余来保证服务的可持续性,这种其实就是资源博弈的过程。

2 高可用架构模型

2.1 两地安中心

两地三中心是一种容灾解决方案,指的是一个生产中心、一个同城灾难备份中心、一个异地灾难备份中心。生产中心的数据同步地复制到同城灾难备份中心,同时,生产中心的数据异步地复制到异地灾难备份中心。同城灾备中心通常具备与生产中心等同业务处理能力,应用可在不丢失数据的情况下切换到同城灾备中心运行,保持业务连续运行。在生产中心和同城容灾中心同时不可用时,可在异地的容灾中心实现业务的恢复,保持业务连续性。
大量案例证明通过这种方案系统能够较快地进行响应和止损,尽可能保全业务数据不丢失,实现更优的RPO和RTO。所以,“两地三中心”容灾解决方案得到了广泛的应用。
具体来说,“两地三中心”具备以下优点:

  1. 提高系统可用性:两个地理位置的数据中心可以同时承担服务,当一个数据中心发生故障时,另一个数据中心可以继续提供服务,保证系统的可用性。
  2. 数据备份与恢复:在“两地三中心”架构中,同城双中心可以相互备份数据,并实时同步数据,减少数据丢失的风险。同时,当一个数据中心发生故障时,异地灾备中心可以用备份数据进行业务的恢复。
  3. 灾备保障:对于一些对数据安全和业务连续性有严格要求的应用,通过“两地三中心”架构可以大大提高灾备保障能力。即使在遭遇自然灾害等不可控因素时,异地灾备中心也可以接管业务,保证业务的连续运行。
  4. 负载均衡与性能优化:通过将数据和业务分布在两个或三个中心,可以平衡负载,提高系统的性能和响应速度。
    因此,“两地三中心”的架构对于那些需要高可用性、数据备份和恢复、灾备保障以及性能优化的系统来说是非常有必要的。在实际应用中,“两地三中心”的架构可以根据实际需求进行灵活调整和扩展。

image

2.2 异地多活

异地多活是一种系统高可用的解决方案,它通过在多个不同机房建立多个数据中心,并且使这多个数据中心都可以同时在线提供服务来避免当出现机房断电、光纤被挖断等场景出现服务不可用的场景,实现服务高可用,同时这多个数据中心之间需要进行数据相互同步来保证数据的最终一致性。

在考虑哪些业务需要异地多活的时候,需要结合业务的重要程度,以及业务是否存在全局逻辑,以及异地多活场景中解决全局逻辑的成本来考虑是否需要做异地多活,同时需要考虑业务是否需要保证数据强一致性。例如,对于登录业务,这是用户中心最重要的业务场景,如果用户登录不了,特别是重度用户,则是非常严重的事故,所以登录需要做异地多活。同时,每个数据中心都有用户的账号和密码信息,故可以做到异地多活。

异地多活是指在不同城市建立独立的数据中心,以实现数据的多个备份和业务的高可用性。以下是实现异地多活的详细解决方案:

  1. 建立多个数据中心:在不同的地理位置建立多个数据中心,每个数据中心具备相同的业务功能,可以独立承担业务运行。
  2. 数据备份与同步:在多个数据中心之间进行数据备份和同步,保证数据的多个副本存在。当某个数据中心发生故障时,其他数据中心可以提供服务,同时将数据同步到其他数据中心。
  3. CDN+负载均衡:CDN即内容分发网络,其目的是在现有的Internet上增加一层新的网络架构,将网站的内容发布到最接近用户的服务器,使用户可以就近取得所需的内容,提高用户访问网站的响应速度。负载均衡技术,负责将用户请求分发到不同的数据中心,以实现业务的负载均衡和高可用性。
  4. 数据复制:通过数据复制技术,将数据从一个数据中心复制到另一个数据中心,以实现数据的多个副本存在,提高数据的安全性和可靠性。
  5. 数据容灾:在数据中心发生故障时,通过数据容灾技术,将数据备份到其他数据中心,以实现数据的可用性和完整性。
  6. 应用容灾:通过应用容灾技术,将应用程序从一个数据中心迁移到另一个数据中心,以实现应用程序的高可用性和故障恢复能力。
  7. 监控和管理:通过监控和管理工具,实时监控数据中心的运行状态和应用程序的运行情况,以便及时发现和解决问题,提高系统的可用性和可靠性。

以上是实现异地多活的详细解决方案,需要根据具体的业务需求和应用场景进行具体的规划和设计。

image

3 业内主流场景

浅谈异地多活及阿里云容灾经验分享
美团大众点评账号业务高可用进阶之路

与微服务18:微服务治理之异地多活容灾相似的内容:

微服务18:微服务治理之异地多活容灾

★微服务系列 微服务1:微服务及其演进史 微服务2:微服务全景架构 微服务3:微服务拆分策略 微服务4:服务注册与发现 微服务5:服务注册与发现(实践篇) 微服务6:通信之网关 微服务7:通信之RPC 微服务8:通信之RPC实践篇(附源码) 微服务9:服务治理来保证高可用 微服务10:系统服务熔断、

SpringCloud-ZipKin搭建保姆级教程

服务链路追踪 一、服务追踪说明 微服务架构是通过业务来划分服务的,使⽤REST调⽤。对外暴露的⼀个接⼝,可能需要 很多个服务协同才能完成这个接⼝功能,如果链路上任何⼀个服务出现问题或者⽹络超 时,都会形成导致接⼝调⽤失败。 随着业务的不断扩张,服务之间互相调⽤会越来越复杂,它们之间的调⽤关系也许如下

18.基于Consul的服务发现和ConsulManager管理

192.168.10.14 prometheus、consul 192.168.10.100 各类服务 一、基于Consul的服务发现 Consul 是由 HashiCorp 开发的一个支持多数据中心的分布式服务发现和键值对存储服务的开源软件,是一个通用的服务发现和注册中心工具,被大量应用于基于微服

微服务架构必备技术栈:万变不离其宗的奥义!

前言 之前我们说过,微服务是一种软件设计、架构思想。当然,里面也包含了相关技术点要解决当前要务。学习微服务,我们不能空口而谈,一定要落实到具体的技术栈上。 当今使用比较多两个技术体系,一个是Java,另外一个就是Net。 废话不多说,今天我就把相关“微服务架构”所用到的技术栈罗列出来。(以下是微软相

微服务新体验之Aspire初体验

安装aspire 查看vs版本 我这的版本是17.9.7,不支持aspire,所以需要升级 更新VS 点击 帮助->检查更新 点击更新 静等安装升级 创建aspire项目 项目创建成功,如下图 运行Aspire项目 在AspireApp1.AppHost的launchSettings.json文件中

微服务实践k8s&dapr开发部署实验(3)订阅发布

自托管模式运行dapr 新建订阅webapi项目,取名为backend 项目增加docker支持,取消https支持 修改Program.cs var builder = WebApplication.CreateBuilder(args); builder.Services.AddControll

微服务实践k8s&dapr开发部署实验(2)状态管理

新建webapi项目 建项目时取消https支持,勾选docker支持, Program.cs中注释下面语句,这样部署后才能访问Swagger // Configure the HTTP request pipeline. //if (app.Environment.IsDevelopment())

微服务下认证授权框架的探讨

前言 市面上关于认证授权的框架已经比较丰富了,大都是关于单体应用的认证授权,在分布式架构下,使用比较多的方案是--<应用网关>,网关里集中认证,将认证通过的请求再转发给代理的服务,这种中心化的方式并不适用于微服务,这里讨论另一种方案--<认证中心>,利用jwt去中心化的特性,减轻认证中心的压力,有理

微服务实践k8s&dapr开发部署实验(1)服务调用

前置条件 安装docker与dapr: 手把手教你学Dapr - 3. 使用Dapr运行第一个.Net程序 安装k8s dapr 自托管模式运行 新建一个webapi无权限项目 launchSettings.json中applicationUrl端口改成5001,如下: "applicationUr

微服务使用openfeign调用单点的会话失效问题

# 项目Springcloud,认证中心方式实现SSO使用开源框架Sa-Token >本身的单独访问每个客户端服务的单点就没有问题。然后单点通过Fegin调用就不好使了! ##### 主要使用的Sa-Token的微服务单点功能 ##### 使用的依赖如下 ```xml cn.dev33 sa-tok