分布式-单元化架构1

ops/2024/10/25 7:22:48/

一 两地三中心

1.1 两地三中心*

两地指的是两个城市:同城,异地。三中心指的是三个数据中心:生产中心、同城容灾中心、异地容灾中心。

在同一个城市或者临近的城市建设两个相同的系统,双中心具备相当的业务处理能力,机房之间通过高速网络实时同步数据。

在异地建设灾备中心,通过异步传输的方式,将双机房的数据备份至异地灾备中心,以应对城市级别的灾难。

其中两地三中心是同城双活加一个冷备

1.2 两地三中心-冷备模式

这种模式下,多个中心是主备关系,即只有生产中心对外提供服务,同城容灾中心是生产中心的备份,当生产中心无法提供服务时,将流量切换至同城容灾中心。当同城双机房都发生故障时,启用异地灾备中心。

缺点:

1.通过资源的堆砌与冗余来应对不确定事件的发生。

2.对灾难的响应和机房的切换周期非常长,无法实现业务的零中断,对设备资源的利用率低下。

1.3 两地三中心-双活模式

双活模式:使同城双中心同时对外提供服务,节约成本,同时继续保留异地容灾中心。双活不仅仅是将流量切分至两个机房这么简单,更多的是要考虑如何能让用户的请求在一个机房中就能完成,避免跨机房调用带来的延时增加,从而影响客户体验。

对于双活架构,要考虑以下几个方面的因素:

1.业务能否在一个机房内完成整个交易链路上所有处理;

以购买理财为例,请求链条为:互联网网关->理财渠道服务->理财系统->账务系统。如果这些服务部署在不同的机房,则每次请求都要进行跨机房的访问,必然会增加性能损耗,造成资源浪费

2.应用程序如何进行双活;

通常会在互联网网关(或者nginx)上,进行流量的分发,根据相应的规则,将请求分发到指定的机房处理。如下图:

3.中间件如何进行双活;

若要实现redis的主主同步,需自己研发相应的插件,例如可以通过订阅mysql的binlog日志来做缓存数据的同步。通过实现同步组件,监听mysql的binlog日志并解析,将数据同步到两个机房的redis集群中。如下图:

4.数据库能否双活,如何同步。

应用的双活和中间件的双活,最终都依赖于数据如何存放。如果两个机房中各部署一个数据库,那么机房间的数据如何同步呢。

以mysql为例,业界最常用的做法就是利用binlog做数据同步,最具代表性的就是阿里开源的Canal+Otter数据同步方案。Canal可以伪装成一个Mysql Slave,接收binlog文件,获取到Mysql Master的数据变更,如图:

Otter可以将Canal获取的数据,同步到目标数据库,Canal+Otter不仅可以实现同构数据的同步,还能实现异构数据的同步,同时会简化压缩要传输的binlog,减少网络压力,传输速度更快。如图:

1.4 总结

两地三中心的备份模式与双活模式,可以看到,这两种模式下,每个机房的数据量都是全量的,在某个机房故障时,另外一个机房会接管全部的流量

一个好的RPC框架追求的是让远程服务调用像调本地方法一样简单。


http://www.ppmy.cn/ops/128266.html

相关文章

探索CSS动画下的按钮交互美学

效果演示 这段代码通过SVG和CSS动画创建了一个具有视觉吸引力的按钮&#xff0c;当用户与按钮交互时&#xff08;如悬停、聚焦或按下&#xff09;&#xff0c;按钮会显示不同的动画效果。 HTML <button class"button"><div class"dots_border"…

[k8s理论知识]3.docker基础(二)隔离技术

容器其实是一种沙盒技术&#xff0c;其核心是通过约束和修改进程的动态表现&#xff0c;为其创建一个边界。这个边界确保了应用与应用之间不会相互干扰&#xff0c;同时可以方便在不同的环境中迁移&#xff0c;这是PaaS最理想的状态。 程序是代码的可执行镜像&#xff0c;通常…

React 列表 Keys

React 列表 & Keys 在 React 中,处理列表数据是构建用户界面时的常见需求。无论是展示一个待办事项列表,还是显示一组用户信息,理解如何使用列表和键(keys)都是至关重要的。本文将深入探讨 React 中列表和键的概念、用法,以及最佳实践。 列表渲染 在 React 中,渲…

使用flask构建一个简单的文件同步系统

使用Python构建文件同步系统&#xff1a;步骤指南 在当今互联网时代&#xff0c;能够在本地机器和远程服务器之间同步文件的能力变得至关重要。无论是备份重要文档、与团队成员共享大文件&#xff0c;还是在多个设备间保持数据一致性&#xff0c;一个强大的文件同步系统都能发…

Docker加载并运行别人的容器的同时挂在本地其他文件

配置环境失败后迫不得已入坑docker 踩坑1.sudo docker start hunyuandit_new Error response from daemon: could not select device driver "" with capabilities: [[gpu]] Error: failed to start containers: hunyuandit_new 解决方法&#xff1a; 安装Install…

PyQt 入门教程(3)基础知识 | 3.1、使用QtDesigner创建.ui文件

文章目录 一、使用QtDesigner创建.ui文件1、创建.ui文件2、生成.py文件3、使用新生成的.py文件4、编辑新生成的.py文件 一、使用QtDesigner创建.ui文件 1、创建.ui文件 打开PyCharm&#xff0c;使用自定义外部工具QtDesigner创建mydialog.ui文件&#xff0c;如下&#xff1a; …

植物健康,Spring Boot来保障

5系统详细实现 5.1 系统首页 植物健康系统需要登录才可以看到首页。具体界面的展示如图5.1所示。 图5.1 系统首页界面 5.2 咨询专家 可以在咨询专家栏目发布消息。具体界面如图5.2所示。 图5.2 咨询专家界面 5.3 普通植物检查登记 普通员工可以对普通植物检查登记信息进行添…

【深度学习代码调试5】标准化数据集:TensorFlow Datasets (TFDS)自动化数据加载与预处理

【标准化数据集】TensorFlow Datasets、TFDS&#xff1a;自动化数据加载与预处理 写在最前面1. 什么是 TensorFlow Datasets (TFDS)?主要特点&#xff1a; 2. TFDS 的核心 API&#xff1a;tfds.builder 和 download_and_preparetfds.builder&#xff1a;创建数据集构建器示例&…