同城多活、两地三中心、单元化

2023-11-22 18:10

本文主要是介绍同城多活、两地三中心、单元化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

首先

1、同城多活

2、两地三中心(冷备意义不大)

3、单元化

着重讲单元化

【此部分转自:单元化架构解决了什么问题 - 知乎】

首先,我们先来看下单元化是什么。

所谓单元,是指一个能完成所有业务操作的自包含集合,在这个集合中包含了所有业务所需的所有服务,以及分配给这个单元的数据。

假如一个业务有30亿数据,采用单元化架构部署的话,我们可以把数据拆解为3份,每份10亿数据,建立3个单元,这三个单元,业务服务一模一样,但是数据库存储的数据不同,分别是10亿数据。

这里根据数据进行单元的拆分,数据需要具备可拆分的属性,比如用户ID等全局唯一标识信息,否则无法拆分单元。

上面拆解的单元其实是逻辑单元的概念,实际部署的时候,每个单元需要遵从常用的部署方案。

比如,常见的部署方案是两地三中心、同城双活、异地多活等容灾方案。

以两地三中心为例,机房建在两个城市、共三个机房,其中一个城市两个机房。

同城的两个机房同时提供服务,细说的话,其实是业务服务双活,数据库仍然是一主一备,主提供读写服务,备提供读服务,主从之间采用强同步,备份机房的业务服务写操作访问的仍然是主服务所在机房的数据库。

当一个机房的业务服务故障的时候,未发生故障的机房承接所有流量,进行主从的切换。

同时在另外一个城市,搭建一个机房,提供一套服务和数据库,但是服务不对外提供服务,数据库也处于冷备状态,同城备份机房异步方式对其进行数据同步。

当双机房所在城市故障时,未发生故障的城市的机房承接所有流量。

还有一点需要说明的是,上面的故障都是机房维度和城市维度的故障考虑。

实际上,每个机房的数据库本身也会分主从数据库,采用异步方式同步。

这里你可能会有疑问,为什么每个机房的备库是异步复制呢?尤其主数据库所在机房与另外机房的数据库是强同步,而与本机房的从库是异步复制。

这里有几个概念需要明确下:

1.强同步的效果:一主多从模式下,即使主设置了与多个从库都是强同步模式,最终的效果其实是只要有一个从库收到了数据,主库就认为强同步结束(请注意:这里描述的是一种常见的实现方式,当然也有其他实现方式),而又因为本机房从库距离本机房主库较近,如果设置了本机房从强同步,大部分时候实现的是本机房从库的强同步,跨机房的库没有实现强同步。

2.跨机房容灾能力更强:主从模式、多机房建立服务目的是为了容灾,因此,如果在跨机房从、本机房从之前选择一个建立强同步的话,很明显,实现跨机房强同步有更好的容灾能力,因为如果本机房挂了或者本机房主挂了,都可以使用跨机房的强同步数据库, 而本机房挂了的情况下,主机房从库起不到容灾作用。

基于1和2,为了达到更好的容灾效果,一般会选择跨机房数据库为强同步。

你可能又会问,本机房的从存在意义又是什么呢?

当然还是容灾考虑,比如,当跨机房挂掉的情况下, 这时候就只有本机房从可以作为容灾数据库了,如果原跨机房数据库提供读能力,那么读的流量会达到本机房从上,并且本机房主与本机房从数据同步方式会由异步改为强同步。

一个逻辑单元实际部署的时候,会按照两地三中心等类似容灾方案部署,如下图。

这里提醒下,本文提到的很多概念,比如多活、数据库主从、上面的部署图等,实际实现方式可能会有很多情况,这里也只是列出其中一种方案,以方便说明单元化的知识,所以如果有相关的疑问,可以不用太纠结。

接下来,我们聊一聊为什么要进行单元化的设计?

单元化设计首先是为了方便扩容。

业务使用量总是在不断增长,为了满足业务需求,业务服务系统、数据库都需要不断的扩容,以支持越来越多的业务数据。

【为什么要进行单元化】正常情况下,为了提升业务服务能力,业务服务一般都是分布式部署,同时对外提供服务,而数据库由于数据量很大,也会进行分片存储,每个业务服务可能访问所有的数据库。

这种情况存在的问题是,每个业务服务都需要与每个数据库建立连接,当业务服务数量随着业务量逐渐增多的时候,需要建立的连接数越来越多,而每个数据库可以承接的连接数是有限的,当超过数据库连接数上限的时候,再增加业务服务也无法实现扩容。

这里,我解释下,为什么数据库已经进行了拆分,每个数据库只会接收该分片数据的请求,为什么还会出现随着业务服务的扩容,连接数越来越多的问题。

通常架构设计的时候,建立一个数据库连接可以持续处理很多请求,所以假如请求来自一个业务服务,那么可以简单认为只需要建立一个连接即可(实际上会更多)。

当这个请求可能来自于任何一个服务,因此,就需要数据库建立与所有服务的连接。

上面我们提到,随着业务服务的扩容,越来越多的服务建立与数据库的连接,这就会导致数据库连接数增加。

解决这个问题的关键就是:如何实现随着业务服务的扩容,保持数据库连接数不变。

如果,我们在业务服务层面就可以对流量进行切分,切分方式同数据库,那么,某分片数据库只需要与该业务服务建立连接即可,同时,当业务量增加的时候,只需要,同步新增相同的业务服务和对应的分片数据库,新的业务访问走新增的服务即可,这就可以解决上面的问题。

这里,只接收特定请求的业务服务+分片数据库组成一个单元,这个单元内就可以完成该范围用户的一切操作,系统扩容按照单元粒度逐渐扩容。

这就是为什么需要单元化的一个原因。

要达到单元化的目标,业务需要具备的条件是:业务数据是可以水平切分的;业务相关所有服务都可以按照同一个规则切分,比如都按照用户ID切分,只有这样,才能实现不同的业务服务访问同一个分区数据库的小闭环。

再来聊聊容灾。

首先,容灾能力主要靠两地三中心,数据库主从等方式来实现的。

其次,由于某个单元服务或者数据库出现问题,只会影响该单元的请求,可以实现单元粒度的故障隔离,因此从容灾角度看,单元化也是非常好的。

并非所有的服务都可以单元化,实际上,一个业务即使实现了单元化,最终的效果也一定是部分服务的单元化,不能单元化的服务仍然按照传统方式设计。

这篇关于同城多活、两地三中心、单元化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/411968

相关文章

跨国公司撤出在华研发中心的启示:中国IT产业的挑战与机遇

近日,IBM中国宣布撤出在华的两大研发中心,这一决定在IT行业引发了广泛的讨论和关注。跨国公司在华研发中心的撤出,不仅对众多IT从业者的职业发展带来了直接的冲击,也引发了人们对全球化背景下中国IT产业竞争力和未来发展方向的深思。面对这一突如其来的变化,我们应如何看待跨国公司的决策?中国IT人才又该如何应对?中国IT产业将何去何从?本文将围绕这些问题展开探讨。 跨国公司撤出的背景与

模具要不要建设3D打印中心

随着3D打印技术的日益成熟与广泛应用,模具企业迎来了自建3D打印中心的热潮。这一举措不仅为企业带来了前所未有的发展机遇,同时也伴随着一系列需要克服的挑战,如何看待企业引进增材制造,小编为您全面分析。 机遇篇: 加速产品创新:3D打印技术如同一把钥匙,为模具企业解锁了快速迭代产品设计的可能。企业能够迅速将创意转化为实体模型,缩短产品从设计到市场的周期,抢占市场先机。 强化定制化服务:面

Nacos Config 配置中心支持配置共享

文章目录 一、什么是配置中心二、Nacos Config2.1 Nacos Config 工作原理 (★)2.2 Nacos Config 的使用2.3 动态刷新2.4 配置共享2.4.1 同一个微服务的不同环境之间共享配置2.4.2 不同微服务中间共享配置 一、什么是配置中心 微服务架构下关于配置文件的存在以下问题: 配置文件相对分散。在一个微服务架构下,配置文件会随

ELK+Spring Cloud搭建分布式日志中心

ELK+Spring Cloud搭建分布式日志中心 1.ELK简介2.资源包下载3.Elasticsearch安装3.1 解压Elasticsearch3.2 修改Elasticsearch的配置文件3.3 修改系统配置3.4 启动Elasticsearch 4.ElasticSearch-head插件安装5.Logstash安装6.Kibana安装7.SpringCloud集成logsta

软件中心哪家强?

方德软件中心体验版全新上线: 更贴心的软件分类,用户可以快速地从软件仓库中找到自己喜爱的软件。对Linux爱好者来说,可以充分感受到和Windows系统一样的便利和无障碍的操作习惯。 与同类产品相比,在软件数量更多、选择余地更大的同时,推出定制化的截图软件、压缩软件等,并且我们还在源源不断更新哟,另外考虑到部分Linux初级用户,还在软件中心首页中加入了软件的常用搭配和装机必备等定制主题,

吐血整理nacos 作为springcloud的配置中心和注册中心

吐血整理nacos 作为配置中心和注册中心 环境版本nacos 版本 nacos启动单机模式启动配置数据库 Spring cloud 连接注册Nacos配置中心导入依赖 注册中心 环境版本 SpringBoot版本SpringCloud版本cloud Alibaba版本2.6.132021.0.52021.0.5.0 参照依据 spring-cloud-alibab 对应

数字经济时代,零售企业如何实现以消费者为中心的数字化转型?

在数字经济时代,零售企业正面临着前所未有的挑战与机遇。随着消费者行为的数字化和多样化,传统的零售模式已难以满足市场需求。为了在激烈的市场竞争中立于不败之地,零售企业必须实现以消费者为中心的数字化转型。这一转型不仅仅是技术的升级,更是一场涉及企业战略、组织结构、运营模式和人才管理的深刻变革。本文将探讨零售企业在数字化转型过程中遇到的难点,并提出相应的解决策略,通过实际案例分析,展示如何通过综合措施进

图特征工程实践指南:从节点中心性到全局拓扑的多尺度特征提取

图结构在多个领域中扮演着重要角色,它能有效地模拟实体间的连接关系,通过从图中提取有意义的特征,可以获得宝贵的信息提升机器学习算法的性能。 本文将介绍如何利用NetworkX在不同层面(节点、边和整体图)提取重要的图特征。 本文将以NetworkX库中提供的Zachary网络作为示例。这个广为人知的数据集代表了一个大学空手道俱乐部的社交网络,是理解图特征提取的理想起点。 我们先定义一些辅助函数

【kubernetes】配置管理中心Configmap运用

一,介绍 Configmap(简写 cm)是k8s中的资源对象,用于保存非机密性的配置的,数据可以用key/value键值对的形式保存,也可通过文件的形式保存。 【局限性】:在ConfigMap不是用来保存大量数据的,其数据量不可超过1 MiB。 kubectl get cm 二,功能 Configmap资源对象,可以有一个或者多个Configmap,通过 volume 形式映射到容器

Anroid BLE蓝牙(手机分别作为中心设备和外围设备)

蓝牙是一种短距的无线通讯技术,可实现固定设备、移动设备之间的数据交换。一般将蓝牙3.0之前的BR/EDR蓝牙称为传统蓝牙,而将蓝牙4.0规范下的LE蓝牙称为低功耗蓝牙。  BLE蓝牙模块主要应用领域     1、移动扩展设备     2、汽车电子设备     3、健康医疗用品:心跳带、血压计等     4、定位应用:室内定位、井下定位等     5、近距离数据采集:无线