同城双活与异地多活架构分析

2023-11-18

本文首发于 vivo互联网技术 微信公众号
链接:https://mp.weixin.qq.com/s/OjfFcjnGWV5kutxXndtpMg
作者:vivo官网商城开发团队

采用高可用系统架构支持重要系统,为关键业务提供7x24的不间断服务,已经成为众多企业保障业务稳定、持续运转的主要选择。服务多活是高可用架构重要实施手段,本文介绍了一些业界常用的多活手段例如同城双活、两地三中心、异地多活架构设计方案并详述了各种方案的优缺点。

一、为什么要做多活

随着移动互联网的深入发展,用户增长达到一定规模后,不少企业都会面高并发业务和临海量数据的挑战,传统的单机房在机器容量上存在瓶颈。在一些极端场景下,有可能所有服务器都出现故障,例如机房断电、机房火灾、地震等这些不卡抗拒因素会导致系统所有服务器都故障从而导致业务整体瘫痪,而且即使有其他地区的备份,把备份业务系统全部恢复到能够正常提供业务,花费的时间也比较长。为了满足中心业务连续性,增强抗风险能力,多活作为一种可靠的高可用部署架构,成为各大互联网公司的首要选择。

1、多活场景

多活架构的关键点就是指不同地理位置上的系统都能够提供业务服务,这里的“活”是指实时提供服务的意思。与“活”对应的是字是“备”,备是备份,正常情况下对外是不提供服务的,如果需要提供服务,则需要大量的人工干预和操作,花费大量的时间才能让“备”变成“活。单纯从描述来看多活很强大,能够保证在灾难的情况下业务都不受影响,是不是意味着不管什么业务,我们都要去实现多活架构呢?其实不是,实现多活架构都要付出一定的代价,具体表现为:

  • 不同多活方案实现复杂度不一样,随着业务规模和容灾级别的提升,多活方案会给业务系统设计带来更大复杂度。

  • 不管采用哪种多活方案都难以完全避免跨机房甚至是跨地区服务调用带来的耗时增加。

  • 多活会带来成本会上升,毕竟要多在一个或者多个机房搭建独立的一套业务系统。

因此,多活虽然功能很强大,但也不是每个业务都要上多活。例如,企业内部的 IT 系统、管理系统、博客站点等,如果无法承受异地多活带来的复杂度和成本,是可以不做异地多活的,而对于重要的业务例如核心金融、支付、交易等有必要做多活。

2、多活方案

常见的多活方案有同城双活、两地三中心、三地五中心、异地多活等多种技术方案,不同多活方案技术要求、建设成本、运维成本都不一样,下面我们会逐步介绍这几种多活方案并给出每种方案的优点和缺点。选用哪种方案要结合具体业务规模、当前基础建设能力、投入产出比等多种因素来决定。

二、同城双活

同城双活是在同城或相近区域内建立两个机房。同城双机房距离比较近,通信线路质量较好,比较容易实现数据的同步复制 ,保证高度的数据完整性和数据零丢失。同城两个机房各承担一部分流量,一般入口流量完全随机,内部RPC调用尽量通过就近路由闭环在同机房,相当于两个机房镜像部署了两个独立集群,数据仍然是单点写到主机房数据库,然后实时同步到另外一个机房。下图展示了同城双活简单部署架构,当然一般真实部署和考虑问题要远远比下图复杂。

f8a084a5df14a00d82420b3dfdbf129e.webp

服务调用基本在同机房内完成闭环,数据仍然是单点写到主机房数据储存,然后实时同步复制到同城备份机房。当机房A出现问题时候运维人员只需要通过GSLB或者其他方案手动更改路由方式将流量路由到B机房。同城双活可有效用于防范火灾、建筑物破坏、供电故障、计算机系统及人为破坏引起的机房灾难。

1、服务路由

  • zk集群:每个机房都部署一个zk集群,机房之间zk数据进行实时双向同步,每个机房都拥有所有机房zk注册数据。

  • 路由方案:条件路由  > 就近路由 > 跨机房路由,尽量避免跨机房调用。

  • 订阅方案:consumer订阅所有机房服务,provider只向该机房zk集群进行注册。

2、数据双活

  • MySQL:采用MHA部署方案,主从半同步方案保证数据一致性。读写分离、读就近路由到机房内数据节点、写路由到master节点所在机房。

  • Redis:  Redis cluster模式主从同步,就近读、写路由主节点机房。采用原生主从同步跨机房写性能较低,也可以依靠CRDT理论构建多节点双向同步,实现机房就近读写,但是整体实现较为复杂。

3、同城双活方案评估

优势

  • 服务同城双活,数据同城灾备,同城不丢失数据情况下跨机房级别容灾。

  • 架构方案较为简单,核心是解决底层数据双活,由于双机房距离近,通信质量好,底层储存例如mysql可以采用同步复制,有效保证双机房数据一致性。

劣势

  • 数据库写数据存在跨机房调用,在复杂业务以及链路下频繁跨机房调用增加响应时间,影响系统性能和用户体验。

  • 保证同城市地区容灾,当服务所在的城市或者地区网络整体故障、发生不可抗拒的自然灾害时候有服务故障以及丢失数据风险。对于核心金融业务至少要有跨地区级别的灾备能力。

  • 服务规模足够大(例如单体应用超过万台机器),所有机器链接一个主数据库实例会引起连接不足问题。

三、两地三中心架构

所谓两地三中心是指 同城双中心 + 异地灾备中心。异地灾备中心是指在异地的城市建立一个备份的灾备中心,用于双中心的数据备份,数据和服务平时都是冷的,当双中心所在城市或者地区出现异常而都无法对外提供服务的时候,异地灾备中心可以用备份数据进行业务的恢复。

9401b89d35e0b915a21bb95696bc24d8.webp

两地三中心方案评估

优势

  • 服务同城双活,数据同城灾备,同城不丢失数据情况下跨机房级别容灾。
  • 架构方案较为简单,核心是解决底层数据双活,由于双机房距离近,通信质量好,底层储存例如mysql可以采用同步复制,有效保证双机房数据一致性。
  • 灾备中心能防范同城双中心同时出现故障时候利用备份数据进行业务的恢复。

劣势

  • 数据库写数据存在跨机房调用,在复杂业务以及链路下频繁跨机房调用增加响应时间,影响系统性能和用户体验。

  • 服务规模足够大(例如单体应用超过万台机器),所有机器链接一个主数据库实例会引起连接不足问题。

  • 出问题不敢轻易将流量切往异地数据备份中心,异地的备份数据中心是冷的,平时没有流量进入,因此出问题需要较长时间对异地灾备机房进行验证。

同城双活和两地三中心建设方案建设复杂度都不高,两地三中心相比同城双活有效解决了异地数据灾备问题,但是依然不能解决同城双活存在的多处缺点,想要解决这两种架构存在的弊端就要引入更复杂的解决方案去解决这些问题。

四、异地多活

异地多活指分布在异地的多个站点同时对外提供服务的业务场景。异地多活是高可用架构设计的一种,与传统的灾备设计的最主要区别在于“多活”,即所有站点都是同时在对外提供服务的。

1、异地多活挑战

(1)应用要走向异地,首先要面对的便是物理距离带来的延时。如果某个应用请求需要在异地多个单元对同一行记录进行修改,为满足异地单元间数据库数据的一致性和完整性,需要付出高昂的时间成本。

(2)解决异地高延时即要做到单元内数据读写封闭,不能出现不同单元对同一行数据进行修改,所以我们需要找到一个维度去划分单元。

(3)某个单元内访问其他单元数据需要能正确路由到对应的单元,例如A用户给B用户转账,A用户和B用户数据不在一个单元内,对B用户的操作能路由到相应的单元。

(4)面临的数据同步挑战,对于单元封闭的数据需全部同步到对应单元,对于读写分离类型的,我们要把中心的数据同步到单元。

2、单元化

所谓单元(下面我们用RZone代替),是指一个能完成所有业务操作的自包含集合,在这个集合中包含了所有业务所需的所有服务,以及分配给这个单元的数据。

单元化架构就是把单元作为系统部署的基本单位,在全站所有机房中部署数个单元,每个机房里的单元数目不定,任意一个单元都部署了系统所需的所有的应用。单元化架构下,服务仍然是分层的,不同的是每一层中的任意一个节点都属于且仅属于某一个单元,上层调用下层时,仅会选择本单元内的节点。

338e99fdf827bbd9e7c12f74ab853985.webp

选择什么维度来进行流量切分,要从业务本身入手去分析。例如电商业务和金融的业务,最重要的流程即下单、支付、交易流程,通过对用户id进行数据切分拆分是最好的选择,买家的相关操作都会在买家所在的本单元内完成。对于商家相关操作则无法进行单元化,需要按照下面介绍的非单元化模式去部署。当然用户操作业务并非完全能避免跨单元甚至是跨机房调用,例如两个买家A和B转账业务,A和B所属数据单元不一致的时候,对B进行操作就需要跨单元去完成,后面我们会介绍跨单元调用服务路由问题。

3、非单元化应用和数据

对于无法单元化的业务和应用,会存在下面两种可能性:

(1)延时不铭感但是对数据一致性非常铭感,这类应用只能按照同城双活方式部署。其他应用调用该类应用的时候会存在跨地区调用可能性,要能容忍延时,这类应用我们称为MZone应用。

(2)对数据调用延时铭感但是可以容忍数据短时间不一致,这类应用和数据可以保持一个机房一份全量数据,机房之间以增量的方式实时同步,这类应用我们暂时称为QZone。

加上两种以上非单元化应用我们的机房部署可能是下面这样,每个机房有两个RZone,MZone保持类似两地三中心部署方式,异地机房调用MZone服务需要跨地区、跨机房调用。而QZone每个机房都保持一份完整数据,机房之间通过数据链路实时相互同步。

c7b0822ad32f28faf90ede1ab8ebafbb.webp

4、请求路由

(1)Api入口网关

为了保证用户请求能正确进入自己所属单元,每一个机房都会部署流量入口网关集群。当用户请求到达进入机房内最先进入到流量网关,流量网关能感知全局的流量分片情况,计算用户所处流量单元并将流量转发到对应的单元,这样就可以将用户请求路由到对应的单元内。

fca9f27eda5b9e8017200a90d842a6b0.webp

采用GateWayr转发方式可以确定用户单元从而将用户流量路由到正确位置,但是HTTP转发也会造成一定性能损耗。为了减少HTTP流量转发量,可以在在用户请求返回的时候在cookie上带上该用户的路由标识信息。当用户下次在请求的时候请求的时候可以提前获取到路由标识直接请求到对应的单元,这种方式可以大幅度减少HTTP流量转发。

(2)服务路由

虽然应用已经进行了单元化,但是依然无法避免跨单元调用,例如A用户给B用户转账,如果A和B所处单元不同,对B用户操作需要跨单元去调用,这个时候需要能将请求路由到B用户数据所在的单元。异地多活情况下RPC、MQ、DB等等中间件都需要提供路由能力,将请求能正确路由到对应的单元。下面以RPC路由为例说明异地多活下中间件是如何进行路由的,对于其他中间件(数据库中间件、缓存中间、消息中间件等)也是一样方法。

public interface ManualInterventionFacade {
    @ZoneRoute(zoneType= ZoneType.RZone,uidClass = UidParseClass.class)
    ManualRecommendResponse getManualRecommendCommodity(ManualRecommendRequest request);
}

上面展示了多活下的RPC接口定义方法,需要注明该RPC类型,如果是RZone服务必须要提供解析uid方法。下图展示了RPC注册中心路由寻址过程,和同城双活有一定的差异性。

5、数据同步

(1)QZone类型数据:这种数据只需要保证最终一致性,对于短暂不一致无影响,但是对延时非常铭感,例如一些算法、风控、配置等数据。这类数据基本上都是每个机房部署一套QZone,然后机房之间相互同步。

(2)MZone数据:这类数据对一致性非常铭感,不能出现不一致,只能采用同城双活部署方式,业务需要能容忍异地调用延时。

(3)RZone数据:这类数据每个Zone都有自己的主节点,如果数据不在该单元内需要路由到对应的节点去写。这类数据部署情况像下面这样

6、方案评估

优势

  • 容灾能力大幅度提高,服务异地多活,数据异地多活。

  • 理论上系统服务可以水平扩展,异地多机房突破大幅度提升整体容量,理论上不会有性能担忧。

  • 将用户流量切分到多个机房和地区去,有效能减少机房和地区级别的故障影响范围。

劣势

  • 架构非常复杂,部署和运维成本很高,需要对公司依赖的中间件、储存做多方面能力改造。

  • 对业务系统有一定的侵入性,由于单元化影响服务调用或者写入数据要路由到对应的单元,业务系统需要设置路由标识(例如uid)。

  • 无法完全避免跨单元、跨地区调用服务,例如上面的转账业务。我们要做的是尽力避免跨地区的服务调用。

五、总结

本文讨论了一些多活建设的大体思路以及一些关键技术点的解决方案,各种不同方案对比。要建立起完整的异地多活能力远远比上面讨论的要复杂的多,需要对依赖的各种中间件、储存等做相应的单元化改造并配套完整的流量调度和运维管控能力 。

由于篇幅限制本文并未详细介绍各种储存(例如Redis、MySQL)在多活下数据同步复制以及高可用方案,有兴趣的同学可以去深入了解这方面知识。

更多内容敬请关注vivo 互联网技术微信公众号

注:转载文章请先与微信号:Labs2020联系

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

同城双活与异地多活架构分析 的相关文章

  • 中台战略下的保险订单销售模式设计

    作者在 保险趋势分析与保险中台数字化转型 文章里提到了保险业务系统中台化后保险商品化和订单化的销售模式 本文主要通过购物车 订单中心 微前端以及产品通道等技术手段 对保险企业实施中台战略后的保险订单化销售模式进行设计 形成可实施的方案 微前
  • Flume系统搭建和使用的一些经验总结-搭建篇

    对于很多公司来说 日志的收集和集中管理是一个必然要经历的阶段 我们公司在经历了一拖再拖之后 终于不得不开始搭建日志收集系统了 对于日志收集系统 我们的首选就是Flume 为何这么坚决呢 难道没有其他工具能做个这个事情么 当然有 不过 考虑到
  • 系统设计和机器学习算法

    LAMDA 机器学习书与数据挖掘研究所 算法训练网站 提供了大量可以练习的网站 1 Leetcode 2 Geeksforgeeks 3 Hackerrank 4 Lintcode paddlepaddle 系统设计 关注 系统设计 面向对
  • 【实践篇】DDD脚手架及编码规范

    一 背景介绍 我们团队一直在持续推进业务系统的体系化治理工作 在这个过程中我们沉淀了自己的DDD脚手架项目 脚手架项目是体系化治理过程中比较重要的一环 它的作用有两点 1 可以对新建的项目进行统一的规范 2 对于指导老项目进行DDD的改造提
  • 也谈系统设计的一些原则

    在进行系统设计时 不仅要考虑软件的功能性需求 还要考虑非功能性需求 比如软件的性能 Performance 可扩展性 Scalability 系统的稳定性 Reliability 部署 Deployment 和更新 Upgrade 可维护性
  • 为什么企业需要私有化专属大模型

    编者按 8月29日凌晨 OpenAI在官网宣布 推出企业版ChatGPT ChatGPT Enterprise 前不久 OpenAI又刚刚发布了针对企业的GPT 3 5 Turbo微调功能 因而引发了一场热烈的讨论 是否仍需要私有化的大模型
  • 架构设计(数据层)

    架构设计 数据层 关系数据库 关系数据库 需要事先定义表 读写数据时 表中字段不可动态变更 表中的每个行记录代表一个关系 1 海贼王 20 2 瓜田李下 20 表与表之间也可建立关联关系 一对一 一对多 多对一 多对多 关系型数据库进行读写
  • 一图看懂架构划分原则:技术划分 OR 领域划分?

    架构划分原则 技术划分 描述 按技术用途组织系统组件 典型示例 分层 多层 架构 组件按技术层组织 用户界面 与用户直接交互的部分 业务规则和核心处理 逻辑和算法 与数据库交互 数据存取和查询 数据库层 数据存储和管理 优点 当大部分更改与
  • 基于springCloud的微服务架构设计

    Spring Cloud作为一套微服务治理的框架 几乎考虑到了微服务治理的方方面面 之前也写过一些关于Spring Cloud文章 主要偏重各组件的使用 本次分享主要解答这两个问题 Spring Cloud在微服务的架构中都做了哪些事情 S
  • 长大后会发现,学习其实就是因为自己想知道

    简单总结 01 习惯 看不懂的名词 第一时间google 02 注释 注释一些思路 把注释嵌入到工作和生活 像现在的记录 03 随记 关注身边的细节 及时回应别人 明白自己想说什么 选择好时机去说 04 务实方法 ETC Easier to
  • Access、SQLite、HSQLDB、Sybase、MySQL、DB4O比较

    本文转自 http blog sina com cn s blog 465bc6c90100eums html 一 Access 数据类型有些另类 而且密码太容易被攻破 性能不高 只能用在Windows程序上 一般说来 单个表不超过10万少
  • 设计模式SOLID

    一 单一职责原则 一个类或者一个模块只完成一个功能 class UserInfo userId username email telephone 二 开闭原则 对扩展开放 对修改关闭 class Alert void check error
  • 腾讯高性能RPC开发框架Tars实现服务治理(微服务)

    Github https github com Tencent Tars 1 介绍 Tars是基于名字服务使用Tars协议的高性能RPC开发框架 同时配套一体化的服务治理平台 帮助个人或者企业快速的以微服务的方式构建自己稳定可靠的分布式应用
  • 阿里巴巴 cola设计架构

    https github com alibaba COLA
  • 落地领域大模型应知必会(2): 轻量化微调

    编者按 在实际部署大模型的过程中可能会面临资源限制的问题 通过轻量化大模型微调技术 可以将大型预训练语言模型适配到特定领域 特定任务 并减小其模型尺寸和计算量需求 提高性能和效率 在上一篇文章中 我们分享了大语言模型的主要微调技术总览 接下
  • 思考:如何保证服务稳定性?

    最近一直在忙618大促的全链路压测 稳定性保障相关工作 结果618还未开始 生产环境就出了几次生产故障 且大多都是和系统稳定性 性能相关的bad case 生产全链路压测终于告一段落 抽出时间将个人收集的稳定性相关资料整理review了一遍
  • 架构设计之道【精】

    一 本质 在了解架构本质之前先了解下架构的定义 百度百科对架构的定义 架构又名软件架构 是有关软件整体结构与组件的抽象描述 用于指导大型软件系统各个方面的设计 从定义中我们提炼出几个关键字 组件 结构 关系 组件 也可以称为软件元素或者是架
  • Weblogic 12c 集群部署和session复制

    在上一篇Weblogic12c集群搭建的基础上 这一篇介绍Weblogic12c集群应用的部署和session复制 1 启动服务 首先在weblogic12c控制台 启动受托管服务server1 server2 server3 2 将要部署
  • 同城双活与异地多活架构分析

    本文首发于 vivo互联网技术 微信公众号 链接 https mp weixin qq com s OjfFcjnGWV5kutxXndtpMg 作者 vivo官网商城开发团队 采用高可用系统架构支持重要系统 为关键业务提供7x24的不间断
  • kubeadm集群化部署多master节点(生产环境适用)

    一 背景介绍 k8s通过master集中式管理worknode的容器编排系统 而在生产环境为了维护高可用性 master的地位起到举无轻重的作用 一旦master节点失守 则会导致整个集群服务不可用 因此配置多master集群在生产环境非常

随机推荐

  • dracut 基本介绍

    dracut 基本介绍 dracut 维基 https dracut wiki kernel org index php Main Page http www 360doc com content 13 0428 09 12139495 2
  • 计算机网络系列五 -- 运输层详解

    1 运输层 1 1 运输层的定义 运输层是 OSI 七层参考模型的第四层 主要功能为应用层提供通信服务 它即是面向通信的最高层 也是用户功能的最底层 在计算机网络中 真正进行数据通信的是两个主机的进程 由于一个主机中有多个进程同时在通信 而
  • vc++画线段的函数_word2vec的损失函数

    虽然word2vec常被当作无监督 但是其训练过程跟有监督基本差不多 原始的word2vec暂时不考虑负采样和huffman tree 其损失函数就是多元交叉熵 多元交叉熵的公式 以传统机器学习来说 这里的Zj就是某个类别的预测概率 yj
  • 物联网嵌入式学习路线发展方向(表格一目了然)

    文章目录 一 学习路线 二 各种分类 1 软件硬件分类 2 发展方向 技术类型 对应岗位分类 2 1 芯片方向 2 2 Linux方向 3 常见板子芯片内核 4 嵌入式公司 对于小白 不知道嵌入式整个体系 学什么 顺序是什么 可以找什么工作
  • Review-MyBatis

    MyBatis 1 学习方法 MyBatis框架功能与Hibernate一样 都是持久化框架 都是操作JDBC 做ORM框架 1 MyBatis框架比Hibernate小 2 做的是针对SQL语句查询结果进行封装 2 MyBatis框架是什
  • 服务器磁盘性能多少分正常,服务器内存使用率多少为正常

    服务器内存使用率多少为正常 内容精选 换一换 当您发现云服务器的运行速度变慢或云服务器突然出现网络断开现象 则可能是云服务器的带宽和CPU使用率过高导致 如果您已经通过云监控服务创建过告警任务 当CPU或带宽利用率高时 系统会自动发送告警给
  • 微弱直流电压/电流信号的采样电路 --滤波跟随放大

    要求将待测的电压 1mV 1000mV 电流 1mA 100mA 采样出来传给单片机 我的思路是 电压采样先用放大电路放大 再进行滤波 把50Hz的交流电干扰滤除 然后再进行模数转换传给单片机 电流的话用一个采样电阻 然后对其电压采样后推算
  • 信息学奥赛一本通【1034:计算三角形面积】

    题目描述 平面上有一个三角形 它的三个顶点坐标分别为 x1 y1 x2 y2 x3 y3 x1 y1 x2 y2 x3 y3 那么请问这个三角形的面积是多少 精确到小数点后两位 输入 输入仅一行 包括66个单精度浮点数 分别对应x1 y1
  • 关于git的一些命令,实验记录

    1 下载moduleA项目代码 命令 git clone https github com wangyanan52121 moduleA git 因网络问题 可能会下载失败 多试几次 2 查看当前项目 查看tag命令 字符串排序 git C
  • 语言深入理解指针(非常详细)(三)

    目录 数组名的理解 使用指针访问数组 一维数组传参的本质 二级指针 指针数组 指针数组模拟二维数组 数组名的理解 在上 个章节我们在使用指针访问数组的内容时 有这样的代码 int arr 10 1 2 3 4 5 6 7 8 9 10 in
  • mysql如何一秒插入10万条数据

    当我们需要批量插入或者更新记录时 可以采用Java的批量更新机制 该机制允许多条语句甚至一次性提交给数据库处理 通常情况下比一句一提交处理更有效率 jdbc处理批量提交有三个方法 需要注意的是 这三种方法都要和PreparedStateme
  • Rx与Async Task的简单对比

    有关Reactive Extensions的介绍可见https rx codeplex com 总的来说 你可以当它是又一个异步编程的框架 它以观察者模式实现了对数据流的的 订阅 一个列表 一个事件 一个耗时操作的方法 等等 都可以Obse
  • C++ 多线程std::async

    std async 对于线程的创建 我们可以直接用thread 但是这会有很多的不便 比如获取子进程的返回值 解决方案是定义一个变量 然后将变量的指针传入到子进程中 然后对其进行赋值 但终归是不便 除此之外我们可以用std async函数来
  • 如何正确理解开漏输出和推挽输出

    作者 知乎用户 链接 https www zhihu com question 28512432 answer 41217074 来源 知乎 著作权归作者所有 商业转载请联系作者获得授权 非商业转载请注明出处 我觉得下面这个 网上资料 还是
  • java项目如何实现数据恢复_Java web 项目中对数据库备份和恢复

    说白了 还是去调用cmd实现数据库的备份和还原功能 备份 mysqldump hserverUrl uusername ppassword dbname gt savePath 还原 mysql hserverUrl uusername p
  • 一文读懂SpringCloud全家桶

    一 云原生应用 SpringCloud是对Springboot使用的分布式解决方案 适合分布式 中大型的项目架构开发 现在也逐渐成为Java服务端的主流框架 使用Spring Cloud开发的应用程序非常适合在Docker和PaaS 比如P
  • C# 提交报错:Validation of viewstate MAC failed 解决办法

    出现以下报错 验证视图状态 MAC 失败 如果此应用程序由网络场或群集承载 请确保
  • 【STM32】SPI初步使用 读写FLASH W25Q64

    硬件连接 1 SS Slave Select 从设备选择信号线 常称为片选信号线 每个从设备都有独立的这一条 NSS 信号线 当主机要选择从设备时 把该从设备的 NSS 信号线设置为低电平 该从设备即被选中 即片选有效 接着主机开始与被选中
  • MySQL 8.0 多实例的配置应用

    文章目录 同版本多实例 配置 部署 启动 连接 不同版本多实例 配置 初始化 initialize insecure 含义 启动 同版本多实例 配置 mkdir p data 330 7 9 data chown R mysql mysql
  • 同城双活与异地多活架构分析

    本文首发于 vivo互联网技术 微信公众号 链接 https mp weixin qq com s OjfFcjnGWV5kutxXndtpMg 作者 vivo官网商城开发团队 采用高可用系统架构支持重要系统 为关键业务提供7x24的不间断