本篇主要内容如下:

前言

我们都在讨论分布式,特别是面试的时候,不管是招初级软件工程师还是高级,都会要求懂分布式,甚至要求用过。传得沸沸扬扬的分布式到底是什么东东,有什么优势?

看过火影的同学肯定知道漩涡鸣人的招牌忍术:多重影分身之术

  • 这个术有一个特别厉害的地方,过程和心得:多个分身的感受和经历都是相通的。比如 A 分身去找卡卡西(鸣人的老师)请教问题,那么其他分身也会知道 A 分身问的什么问题。

  • 漩涡鸣人有另外一个超级厉害的忍术,需要由几个影分身完成:风遁·螺旋手里剑。这个忍术是靠三个鸣人一起协作完成的。

这两个忍术和分布式有什么关系?

  • 分布在不同地方的系统或服务,是彼此相互关联的。

  • 分布式系统是分工合作的。

案例:

  • 比如 Redis 的哨兵机制,可以知道集群环境下哪台 Redis 节点挂了。

  • Kafka 的 Leader 选举机制,如果某个节点挂了,会从 follower 中重新选举一个 leader 出来。(leader 作为写数据的入口,follower 作为读的入口)

多重影分身之术有什么缺点?

  • 会消耗大量的查克拉。分布式系统同样具有这个问题,需要几倍的资源来支持。

对分布式的通俗理解

  • 是一种工作方式

  • 若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统

  • 将不同的业务分布在不同的地方

优势可以从两方面考虑:一个是宏观,一个是微观。

  • 宏观层面:多个功能模块糅合在一起的系统进行服务拆分,来解耦服务间的调用。

  • 微观层面:将模块提供的服务分布到不同的机器或容器里,来扩大服务力度。

任何事物有阴必有阳,那分布式又会带来哪些问题呢?

  • 需要更多优质人才懂分布式,人力成本增加

  • 架构设计变得异常复杂,学习成本高

  • 运维部署和维护成本显著增加

  • 多服务间链路变长,开发排查问题难度加大

  • 环境高可靠性问题

  • 数据幂等性问题

  • 数据的顺序问题

  • 等等

讲到分布式不得不知道 CAP 定理和 Base 理论,这里给不知道的同学做一个扫盲。

CAP 定理

在理论计算机科学中,CAP 定理指出对于一个分布式计算系统来说,不可能通是满足以下三点:

  • 一致性(Consistency)

    • 所有节点访问同一份最新的数据副本。

  • 可用性(Availability)

    • 每次请求都能获取到非错的响应,但不保证获取的数据为最新数据

  • 分区容错性(Partition tolerance)

    • 不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在 C 和 A 之间做出选择)

BASE 理论

BASE 是 Basically Available(基本可用)、Soft state(软状态)和 Eventually consistent(最终一致性)三个短语的缩写。BASE 理论是对 CAP 中 AP 的一个扩展,通过牺牲强一致性来获得可用性,当出现故障允许部分不可用但要保证核心功能可用,允许数据在一段时间内是不一致的,但最终达到一致状态。满足 BASE 理论的事务,我们称之为柔性事务

  • 基本可用 : 分布式系统在出现故障时,允许损失部分可用功能,保证核心功能可用。如电商网址交易付款出现问题来,商品依然可以正常浏览。

  • 软状态: 由于不要求强一致性,所以 BASE 允许系统中存在中间状态(也叫软状态),这个状态不影响系统可用性,如订单中的 “支付中”、“数据同步中” 等状态,待数据最终一致后状态改为 “成功” 状态。

  • 最终一致性: 最终一致是指的经过一段时间后,所有节点数据都将会达到一致。如订单的 “支付中” 状态,最终会变为 “支付成功” 或者“支付失败”,使订单状态与实际交易结果达成一致,但需要一定时间的延迟、等待。

一、分布式消息队列的坑

消息队列如何做分布式?

将消息队列里面的消息分摊到多个节点(指某台机器或容器)上,所有节点的消息队列之和就包含了所有消息。

1. 消息队列的坑之非幂等

幂等性概念

所谓幂等性就是无论多少次操作和第一次的操作结果一样。如果消息被多次消费,很有可能造成数据的不一致。而如果消息不可避免地被消费多次,如果我们开发人员能通过技术手段保证数据的前后一致性,那也是可以接受的,这让我想起了 Java 并发编程中的 ABA 问题,如果出现了 [ABA 问题),若能保证所有数据的前后一致性也能接受。

场景分析

RabbitMQRocketMQKafka 消息队列中间件都有可能出现消息重复消费问题。这种问题并不是 MQ 自己保证的,而是需要开发人员来保证。

这几款消息队列中间都是是全球最牛的分布式消息队列,那肯定考虑到了消息的幂等性。我们以 Kafka 为例,看看 Kafka 是怎么保证消息队列的幂等性。

Kafka 有一个 偏移量 的概念,代表着消息的序号,每条消息写到消息队列都会有一个偏移量,消费者消费了数据之后,每过一段固定的时间,就会把消费过的消息的偏移量提交一下,表示已经消费过了,下次消费就从偏移量后面开始消费。

坑:当消费完消息后,还没来得及提交偏移量,系统就被关机了,那么未提交偏移量的消息则会再次被消费。

如下图所示,队列中的数据 A、B、C,对应的偏移量分别为 100、101、102,都被消费者消费了,但是只有数据 A 的偏移量 100 提交成功,另外 2 个偏移量因系统重启而导致未及时提交。

系统重启,偏移量未提交

重启后,消费者又是拿偏移量 100 以后的数据,从偏移量 101 开始拿消息。所以数据 B 和数据 C 被重复消息。

如下图所示:

重启后,重复消费消息

避坑指南

  • 微信支付结果通知场景

    • 微信官方文档上提到微信支付通知结果可能会推送多次,需要开发者自行保证幂等性。第一次我们可以直接修改订单状态(如支付中 -> 支付成功),第二次就根据订单状态来判断,如果不是支付中,则不进行订单处理逻辑。

  • 插入数据库场景

    • 每次插入数据时,先检查下数据库中是否有这条数据的主键 id,如果有,则进行更新操作。

  • 写 Redis 场景

    • Redis 的 Set 操作天然幂等性,所以不用考虑 Redis 写数据的问题。

  • 其他场景方案

    • 生产者发送每条数据时,增加一个全局唯一 id,类似订单 id。每次消费时,先去 Redis 查下是否有这个 id,如果没有,则进行正常处理消息,且将 id 存到 Redis。如果查到有这个 id,说明之前消费过,则不要进行重复处理这条消息。

    • 不同业务场景,可能会有不同的幂等性方案,大家选择合适的即可,上面的几种方案只是提供常见的解决思路。

2. 消息队列的坑之消息丢失

坑:消息丢失会带来什么问题?如果是订单下单、支付结果通知、扣费相关的消息丢失,则可能造成财务损失,如果量很大,就会给甲方带来巨大损失。

那消息队列是否能保证消息不丢失呢?答案:否。主要有三种场景会导致消息丢失。

消息队列之消息丢失

(1)生产者存放消息的过程中丢失消息

生产者丢失消息

解决方案

  • 事务机制(不推荐,异步方式)

对于 RabbitMQ 来说,生产者发送数据之前开启 RabbitMQ 的事务机制channel.txselect ,如果消息没有进队列,则生产者受到异常报错,并进行回滚 channel.txRollback,然后重试发送消息;如果收到了消息,则可以提交事务 channel.txCommit。但这是一个同步的操作,会影响性能。

  • confirm 机制(推荐,异步方式)

我们可以采用另外一种模式:confirm 模式来解决同步机制的性能问题。每次生产者发送的消息都会分配一个唯一的 id,如果写入到了 RabbitMQ 队列中,则 RabbitMQ 会回传一个 ack消息,说明这个消息接收成功。如果 RabbitMQ 没能处理这个消息,则回调 nack 接口。说明需要重试发送消息。

也可以自定义超时时间 + 消息 id 来实现超时等待后重试机制。但可能出现的问题是调用 ack 接口时失败了,所以会出现消息被发送两次的问题,这个时候就需要保证消费者消费消息的幂等性。

事务模式 和 confirm 模式的区别:

  • 事务机制是同步的,提交事务后悔被阻塞直到提交事务完成后。

  • confirm 模式异步接收通知,但可能接收不到通知。需要考虑接收不到通知的场景。

(2)消息队列丢失消息

消息队列丢失消息

消息队列的消息可以放到内存中,或将内存中的消息转到硬盘(比如数据库)中,一般都是内存和硬盘中都存有消息。如果只是放在内存中,那么当机器重启了,消息就全部丢失了。如果是硬盘中,则可能存在一种极端情况,就是将内存中的数据转换到硬盘的期间中,消息队列出问题了,未能将消息持久化到硬盘。

解决方案

  • 创建 Queue 的时候将其设置为持久化。

  • 发送消息的时候将消息的 deliveryMode 设置为 2 。

  • 开启生产者 confirm 模式,可以重试发送消息。

(3)消费者丢失消息

消费者丢失消息

消费者刚拿到数据,还没开始处理消息,结果进程因为异常退出了,消费者没有机会再次拿到消息。

解决方案

  • 关闭 RabbitMQ 的自动 ack,每次生产者将消息写入消息队列后,就自动回传一个 ack给生产者。

  • 消费者处理完消息再主动 ack,告诉消息队列我处理完了。

问题: 那这种主动 ack 有什么漏洞了?如果 主动 ack 的时候挂了,怎么办?

则可能会被再次消费,这个时候就需要幂等处理了。

问题: 如果这条消息一直被重复消费怎么办?

则需要有加上重试次数的监测,如果超过一定次数则将消息丢失,记录到异常表或发送异常通知给值班人员。

(4)RabbitMQ 消息丢失总结

RabbitMQ 丢失消息的处理方案

(5)Kafka 消息丢失

场景:Kafka 的某个 broker(节点)宕机了,重新选举 leader (写入的节点)。如果 leader 挂了,follower 还有些数据未同步完,则 follower 成为 leader 后,消息队列会丢失一部分数据。

解决方案

  • 给 topic 设置 replication.factor 参数,值必须大于 1,要求每个 partition 必须有至少 2 个副本。

  • 给 kafka 服务端设置 min.insyc.replicas 必须大于 1,表示一个 leader 至少一个 follower 还跟自己保持联系。

3. 消息队列的坑之消息乱序

坑: 用户先下单成功,然后取消订单,如果顺序颠倒,则最后数据库里面会有一条下单成功的订单。

RabbitMQ 场景:

  • 生产者向消息队列按照顺序发送了 2 条消息,消息 1:增加数据 A,消息 2:删除数据 A。

  • 期望结果:数据 A 被删除。

  • 但是如果有两个消费者,消费顺序是:消息 2、消息 1。则最后结果是增加了数据 A。

RabbitMQ 消息乱序场景

RabbitMQ 消息乱序场景

RabbitMQ 解决方案:

  • 将 Queue 进行拆分,创建多个内存 Queue,消息 1 和 消息 2 进入同一个 Queue。

  • 创建多个消费者,每一个消费者对应一个 Queue。

RabbitMQ 解决方案

Kafka 场景:

  • 创建了 topic,有 3 个 partition。

  • 创建一条订单记录,订单 id 作为 key,订单相关的消息都丢到同一个 partition 中,同一个生产者创建的消息,顺序是正确的。

  • 为了快速消费消息,会创建多个消费者去处理消息,而为了提高效率,每个消费者可能会创建多个线程来并行的去拿消息及处理消息,处理消息的顺序可能就乱序了。

Kafka 消息丢失场景

Kafka 解决方案:

  • 解决方案和 RabbitMQ 类似,利用多个 内存 Queue,每个线程消费 1 个 Queue。

  • 具有相同 key 的消息 进同一个 Queue。

Kafka 消息乱序解决方案

4. 消息队列的坑之消息积压

消息积压:消息队列里面有很多消息来不及消费。

场景 1: 消费端出了问题,比如消费者都挂了,没有消费者来消费了,导致消息在队列里面不断积压。

场景 2: 消费端出了问题,比如消费者消费的速度太慢了,导致消息不断积压。

坑:比如线上正在做订单活动,下单全部走消息队列,如果消息不断积压,订单都没有下单成功,那么将会损失很多交易。

消息队列之消息积压

解决方案:解铃还须系铃人

  • 修复代码层面消费者的问题,确保后续消费速度恢复或尽可能加快消费的速度。

  • 停掉现有的消费者。

  • 临时建立好原先 5 倍的 Queue 数量。

  • 临时建立好原先 5 倍数量的 消费者。

  • 将堆积的消息全部转入临时的 Queue,消费者来消费这些 Queue。

消息积压解决方案

5. 消息队列的坑之消息过期失效

坑:RabbitMQ 可以设置过期时间,如果消息超过一定的时间还没有被消费,则会被 RabbitMQ 给清理掉。消息就丢失了。

消息过期失效

解决方案:

  • 准备好批量重导的程序

  • 手动将消息闲时批量重导

消息过期失效解决方案

6. 消息队列的坑之队列写满

坑:当消息队列因消息积压导致的队列快写满,所以不能接收更多的消息了。生产者生产的消息将会被丢弃。

解决方案:

  • 判断哪些是无用的消息,RabbitMQ 可以进行 Purge Message 操作。

  • 如果是有用的消息,则需要将消息快速消费,将消息里面的内容转存到数据库。

  • 准备好程序将转存在数据库中的消息再次重导到消息队列。

  • 闲时重导消息到消息队列。

二、分布式缓存的坑

在高频访问数据库的场景中,我们会在业务层和数据层之间加入一套缓存机制,来分担数据库的访问压力,毕竟访问磁盘 I/O 的速度是很慢的。比如利用缓存来查数据,可能 5ms 就能搞定,而去查数据库可能需要 50 ms,差了一个数量级。而在高并发的情况下,数据库还有可能对数据进行加锁,导致访问数据库的速度更慢。

分布式缓存我们用的最多的就是 Redis 了,它可以提供分布式缓存服务。

1. Redis 数据丢失的坑

哨兵机制

Redis 可以实现利用哨兵机制实现集群的高可用。那什么十哨兵机制呢?

  • 英文名:sentinel,中文名:哨兵

  • 集群监控:负责主副进程的正常工作。

  • 消息通知:负责将故障信息报警给运维人员。

  • 故障转移:负责将主节点转移到备用节点上。

  • 配置中心:通知客户端更新主节点地址。

  • 分布式:有多个哨兵分布在每个主备节点上,互相协同工作。

  • 分布式选举:需要大部分哨兵都同意,才能进行主备切换。

  • 高可用:即使部分哨兵节点宕机了,哨兵集群还是能正常工作。

坑: 当主节点发生故障时,需要进行主备切换,可能会导致数据丢失。

异步复制数据导致的数据丢失

主节点异步同步数据给备用节点的过程中,主节点宕机了,导致有部分数据未同步到备用节点。而这个从节点又被选举为主节点,这个时候就有部分数据丢失了。

脑裂导致的数据丢失

主节点所在机器脱离了集群网络,实际上自身还是运行着的。但哨兵选举出了备用节点作为主节点,这个时候就有两个主节点都在运行,相当于两个大脑在指挥这个集群干活,但到底听谁的呢?这个就是脑裂。

那怎么脑裂怎么会导致数据丢失呢?如果发生脑裂后,客户端还没来得及切换到新的主节点,连的还是第一个主节点,那么有些数据还是写入到了第一个主节点里面,新的主节点没有这些数据。那等到第一个主节点恢复后,会被作为备用节点连到集群环境,而且自身数据会被清空,重新从新的主节点复制数据。而新的主节点因没有客户端之前写入的数据,所以导致数据丢失了一部分。

避坑指南

  • 配置 min-slaves-to-write 1,表示至少有一个备用节点。

  • 配置 min-slaves-max-lag 10,表示数据复制和同步的延迟不能超过 10 秒。最多丢失 10 秒的数据

注意:缓存雪崩缓存穿透缓存击穿并不是分布式所独有的,单机的时候也会出现。所以不在分布式的坑之列。

三、分库分表的坑

1. 分库分表的坑之扩容

分库、分表、垂直拆分和水平拆分

  • 分库: 因一个数据库支持的最高并发访问数是有限的,可以将一个数据库的数据拆分到多个库中,来增加最高并发访问数。

  • 分表: 因一张表的数据量太大,用索引来查询数据都搞不定了,所以可以将一张表的数据拆分到多张表,查询时,只用查拆分后的某一张表,SQL 语句的查询性能得到提升。

  • 分库分表优势:分库分表后,承受的并发增加了多倍;磁盘使用率大大降低;单表数据量减少,SQL 执行效率明显提升。

  • 水平拆分: 把一个表的数据拆分到多个数据库,每个数据库中的表结构不变。用多个库抗更高的并发。比如订单表每个月有 500 万条数据累计,每个月都可以进行水平拆分,将上个月的数据放到另外一个数据库。

  • 垂直拆分: 把一个有很多字段的表,拆分成多张表到同一个库或多个库上面。高频访问字段放到一张表,低频访问的字段放到另外一张表。利用数据库缓存来缓存高频访问的行数据。比如将一张很多字段的订单表拆分成几张表分别存不同的字段(可以有冗余字段)。

  • 分库、分表的方式:

    • 根据租户来分库、分表。

    • 利用时间范围来分库、分表。

    • 利用 ID 取模来分库、分表。

坑:分库分表是一个运维层面需要做的事情,有时会采取凌晨宕机开始升级。可能熬夜到天亮,结果升级失败,则需要回滚,其实对技术团队都是一种煎熬。

怎么做成自动的来节省分库分表的时间?

  • 双写迁移方案:迁移时,新数据的增删改操作在新库和老库都做一遍。

  • 使用分库分表工具 Sharding-jdbc  来完成分库分表的累活。

  • 使用程序来对比两个库的数据是否一致,直到数据一致。

坑: 分库分表看似光鲜亮丽,但分库分表会引入什么新的问题呢?

垂直拆分带来的问题

  • 依然存在单表数据量过大的问题。

  • 部分表无法关联查询,只能通过接口聚合方式解决,提升了开发的复杂度。

  • 分布式事处理复杂。

水平拆分带来的问题

  • 跨库的关联查询性能差。

  • 数据多次扩容和维护量大。

  • 跨分片的事务一致性难以保证。

2. 分库分表的坑之唯一 ID

为什么分库分表需要唯一 ID

  • 如果要做分库分表,则必须得考虑表主键 ID 是全局唯一的,比如有一张订单表,被分到 A 库和 B 库。如果 两张订单表都是从 1 开始递增,那查询订单数据时就错乱了,很多订单 ID 都是重复的,而这些订单其实不是同一个订单。

  • 分库的一个期望结果就是将访问数据的次数分摊到其他库,有些场景是需要均匀分摊的,那么数据插入到多个数据库的时候就需要交替生成唯一的 ID 来保证请求均匀分摊到所有数据库。

坑: 唯一 ID 的生成方式有 n 种,各有各的用途,别用错了。

生成唯一 ID 的原则

  • 全局唯一性

  • 趋势递增

  • 单调递增

  • 信息安全

生成唯一 ID 的几种方式

基本原理和优缺点:

图片来源于美团

  • 数据库自增 ID。每个数据库每增加一条记录,自己的 ID 自增 1。

    • 多个库的 ID 可能重复,这个方案可以直接否掉了,不适合分库分表后的 ID 生成。

    • 信息不安全

    • 缺点

  • 适用 UUID 唯一 ID。

    • UUID 太长、占用空间大。

    • 不具有有序性,作为主键时,在写入数据时,不能产生有顺序的 append 操作,只能进行 insert 操作,导致读取整个 B+ 树节点到内存,插入记录后将整个节点写回磁盘,当记录占用空间很大的时候,性能很差。

    • 缺点

  • 获取系统当前时间作为唯一 ID。

    • 高并发时,1 ms 内可能有多个相同的 ID。

    • 信息不安全

    • 缺点

  • Twitter 的 snowflake(雪花算法):Twitter 开源的分布式 id 生成算法,64 位的 long 型的 id,分为 4 部分

    snowflake 算法

    • 1 bit:不用,统一为 0

    • 41 bits:毫秒时间戳,可以表示 69 年的时间。

    • 10 bits:5 bits 代表机房 id,5 个 bits 代表机器 id。最多代表 32 个机房,每个机房最多代表 32 台机器。

    • 12 bits:同一毫秒内的 id,最多 4096 个不同 id,自增模式。

    • 优点:

      • 毫秒数在高位,自增序列在低位,整个 ID 都是趋势递增的。

      • 不依赖数据库等第三方系统,以服务的方式部署,稳定性更高,生成 ID 的性能也是非常高的。

      • 可以根据自身业务特性分配 bit 位,非常灵活。

    • 缺点:

      • 强依赖机器时钟,如果机器上时钟回拨(可以搜索 2017 年闰秒 7:59:60),会导致发号重复或者服务会处于不可用状态。

  • 百度的 UIDGenerator 算法。

    UIDGenerator 算法

    • 基于 Snowflake 的优化算法。

    • 借用未来时间和双 Buffer 来解决时间回拨与生成性能等问题,同时结合 MySQL 进行 ID 分配。

    • 优点:解决了时间回拨和生成性能问题。

    • 缺点:依赖 MySQL 数据库。

  • 美团的 Leaf-Snowflake 算法。

    • 获取 id 是通过代理服务访问数据库获取一批 id(号段)。

    • 双缓冲:当前一批的 id 使用 10% 时,再访问数据库获取新的一批 id 缓存起来,等上批的 id 用完后直接用。

    • 优点:

      • Leaf 服务可以很方便的线性扩展,性能完全能够支撑大多数业务场景。

      • ID 号码是趋势递增的 8byte 的 64 位数字,满足上述数据库存储的主键要求。

      • 容灾性高:Leaf 服务内部有号段缓存,即使 DB 宕机,短时间内 Leaf 仍能正常对外提供服务。

      • 可以自定义 max_id 的大小,非常方便业务从原有的 ID 方式上迁移过来。

      • 即使 DB 宕机,Leaf 仍能持续发号一段时间。

      • 偶尔的网络抖动不会影响下个号段的更新。

    • 缺点:

      • ID 号码不够随机,能够泄露发号数量的信息,不太安全。

怎么选择:一般自己的内部系统,雪花算法足够,如果还要更加安全可靠,可以选择百度或美团的生成唯一 ID 的方案。

四、分布式事务的坑

怎么理解事务?

  • 事务可以简单理解为要么这件事情全部做完,要么这件事情一点都没做,跟没发生一样。

  • 在分布式的世界中,存在着各个服务之间相互调用,链路可能很长,如果有任何一方执行出错,则需要回滚涉及到的其他服务的相关操作。比如订单服务下单成功,然后调用营销中心发券接口发了一张代金券,但是微信支付扣款失败,则需要退回发的那张券,且需要将订单状态改为异常订单。

:如何保证分布式中的事务正确执行,是个大难题。

分布式事务的几种主要方式

  • XA 方案(两阶段提交方案)

  • TCC 方案(try、confirm、cancel)

  • SAGA 方案

  • 可靠消息最终一致性方案

  • 最大努力通知方案

XA 方案原理

XA 方案

  • 事务管理器负责协调多个数据库的事务,先问问各个数据库准备好了吗?如果准备好了,则在数据库执行操作,如果任一数据库没有准备,则回滚事务。

  • 适合单体应用,不适合微服务架构。因为每个服务只能访问自己的数据库,不允许交叉访问其他微服务的数据库。

TCC 方案

  • Try 阶段:对各个服务的资源做检测以及对资源进行锁定或者预留。

  • Confirm 阶段:各个服务中执行实际的操作。

  • Cancel 阶段:如果任何一个服务的业务方法执行出错,需要将之前操作成功的步骤进行回滚。

应用场景:

  • 跟支付、交易打交道,必须保证资金正确的场景。

  • 对于一致性要求高。

缺点:

  • 但因为要写很多补偿逻辑的代码,且不易维护,所以其他场景建议不要这么做。

Sega 方案

基本原理:

  • 业务流程中的每个步骤若有一个失败了,则补偿前面操作成功的步骤。

适用场景:

  • 业务流程长、业务流程多。

  • 参与者包含其他公司或遗留系统服务。

优势:

  • 第一个阶段提交本地事务、无锁、高性能。

  • 参与者可异步执行、高吞吐。

  • 补偿服务易于实现。

缺点:

  • 不保证事务的隔离性。

可靠消息一致性方案

可靠消息一致性方案

基本原理:

  • 利用消息中间件 RocketMQ 来实现消息事务。

  • 第一步:A 系统发送一个消息到 MQ,MQ 将消息状态标记为 prepared(预备状态,半消息),该消息无法被订阅。

  • 第二步:MQ 响应 A 系统,告诉 A 系统已经接收到消息了。

  • 第三步:A 系统执行本地事务。

  • 第四步:若 A 系统执行本地事务成功,将 prepared 消息改为 commit(提交事务消息),B 系统就可以订阅到消息了。

  • 第五步:MQ 也会定时轮询所有 prepared的消息,回调 A 系统,让 A 系统告诉 MQ 本地事务处理得怎么样了,是继续等待还是回滚。

  • 第六步:A 系统检查本地事务的执行结果。

  • 第七步:若 A 系统执行本地事务失败,则 MQ 收到 Rollback 信号,丢弃消息。若执行本地事务成功,则 MQ 收到 Commit 信号。

  • B 系统收到消息后,开始执行本地事务,如果执行失败,则自动不断重试直到成功。或 B 系统采取回滚的方式,同时要通过其他方式通知 A 系统也进行回滚。

  • B 系统需要保证幂等性。

最大努力通知方案

基本原理:

  • 系统 A 本地事务执行完之后,发送消息到 MQ。

  • MQ 将消息持久化。

  • 系统 B 如果执行本地事务失败,则最大努力服务会定时尝试重新调用系统 B,尽自己最大的努力让系统 B 重试,重试多次后,还是不行就只能放弃了。转到开发人员去排查以及后续人工补偿。

几种方案如何选择

  • 跟支付、交易打交道,优先 TCC。

  • 大型系统,但要求不那么严格,考虑 消息事务或 SAGA 方案。

  • 单体应用,建议 XA 两阶段提交就可以了。

  • 最大努力通知方案建议都加上,毕竟不可能一出问题就交给开发排查,先重试几次看能不能成功。

 

转自公众号悟空聊架构:https://mp.weixin.qq.com/s/kifv23_FPMUDQxY20oubeQ

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. java连接阿里云物联网(服务器端)

    java连接阿里云物联网(服务器端) 配置信息类 参考配置信息 public interface DeviceInfoData {//这些信息要去阿里云平台获取String REGION_ID "cn-shanghai";String ACCESS_KEY "";String ACCESS_SECRET "";//三元…...

    2024/4/20 11:35:37
  2. 嵌入式——Linux系统开发第一章读书笔记

    嵌入式系统 说到底嵌入式系统它还是一种计算机系统,只不过是一种专门为特定设备服务的软件和硬件部分可裁剪的计算机服务系统(可裁剪也就是可编程)。它的特点是体积小,功能方面单一,然后是软硬件可裁剪。 思考和追溯嵌…...

    2024/5/5 9:20:11
  3. 3.在Xcode中创建第一个类

    学习类的时候,我们首先需要知道如何来创建一个类。 我们先来创建一个Student类,如图,选择文件按下右键,选择New File… 接下来选择创建的文件类型,目前跟着我的脚步来就行了 然后输入类名 点击next后,选…...

    2024/4/13 15:45:08
  4. HTML5的基础标签

    <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>基础标签</title><!--<base href"" target"_blank"> <base>全局链接跳转&#xff0c;写在head标签里 target新窗口跳转…...

    2024/4/28 12:27:04
  5. 【LeetCode刷题(简单程度)】剑指 Offer 30. 包含min函数的栈

    定义栈的数据结构&#xff0c;请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中&#xff0c;调用 min、push 及 pop 的时间复杂度都是 O(1)。 示例: MinStack minStack new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.min…...

    2024/5/6 20:51:26
  6. SpringCloud系列之Sleuth服务追踪【待完善】

    1....

    2024/4/12 20:30:28
  7. 20200924- docker容器的学习及命令介绍

    Docker 的启动和停止 启动docker systemctl start docker停止docker systemctl stop docker重启docker systemctl restart docker查看docker状态 systemctl status docker查看docker docker info常用指令 查看镜像 docker images搜索镜像 docker search 镜像名称拉取…...

    2024/4/22 4:37:33
  8. 二、JAVA-常用变量介绍

    一、变量分类 1.按所属数据类型划分&#xff1a;①基本数据类型变量。②引用数据类型变量。 2.按被声明的位置划分&#xff1a;①局部变量&#xff1a;方法或语句块内部定义的变量。②成员变量&#xff1a;方法外部&#xff0c;类的内部变量。//变量分类示例&#xff1a; publ…...

    2024/5/3 3:16:03
  9. 使用阿里云短信服务发送短信

    1、注册一个阿里云账号&#xff0c;创建一个签名和一个模板&#xff0c;并生成AccessKey. 2、创建一个普通的maven工程&#xff0c;并加入依赖&#xff1a; <!-- https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-core --><dependency><groupId&…...

    2024/4/13 4:03:06
  10. MariaDB离线环境集群搭建

    环境版本说明 系统&#xff1a;CentOS 7.6 MariaDB: 10.5.5 MariaDB安装 1. 卸载原先的mariadb:rpm -e XXX 2. rpm -ivh MariaDB-compat-10.5.5-1.el7.centos.x86_64.rpm --nodeps 3. rpm -ivh MariaDB-common-10.5.5-1.el7.centos.x86_64.rpm rpm -ivh MariaDB-common-1…...

    2024/4/25 18:16:50
  11. Docker之学习安装zookeeper 3.5.8 集群

    环境&#xff1a; docker : 从https://hub.docker.com/官网获取zookeeper版本 一、拉取镜像 docker pull zookeeper:3.5.8 二、docker容器之间的通信 Docker有三种网络模式&#xff0c;bridge、host、none&#xff0c;在你创建容器的时候&#xff0c;不指定--network默认是…...

    2024/4/12 22:34:47
  12. # 2020-09-24 #「Front End」- 使用 XPath 选择元素

    XPath&#xff0c;是在 XSLT 标准中的主要元素&#xff0c;用于在 XML 文档中选择元素&#xff0c;我们可以理解为元素选择器&#xff08;功能上与 CSS Selectors 类似&#xff09;。 我们感觉XPath 比 CSS Selector 好用&#xff0c;也可能是我们不熟悉 CSS 选择器&#xff0c…...

    2024/4/21 15:52:41
  13. 前端秋招笔试(6)- 完美世界

    今天很残酷&#xff0c;明天更残酷&#xff0c;后天很美好&#xff0c;但是绝大数人都死在了明天晚上&#xff0c;看不到后天的太阳。加油&#xff01; 考试时间&#xff1a;2020年9月24日7&#xff1a;00 时常90分钟&#xff08;够用的&#xff09; 考试题型&#xff1a;单…...

    2024/5/2 7:48:25
  14. HDU-1257-最少拦截系统

    HDU-1257-最少拦截系统 传送门 这道题是LIS&#xff0c;最长递增子序列。 中文题目&#xff0c;我就不多说啦。 dp代码思想: 模拟计算过程&#xff1a; 1.从第一个数开始&#xff0c;找一个最长的递减子序列&#xff0c;即第一个拦截系统X&#xff0c;在样例中式{389&#x…...

    2024/4/26 18:58:11
  15. ubuntu 虚拟机 新建硬盘 并 挂载

    新增硬盘 1、虚拟机设置–》添加–》硬盘–》一直next到完成。 新硬盘的名字 sudo fdisk -l 我的是 /dev/sdb&#xff0c; 后续命令就用这个参数了 分区 sudo fdisk /dev/sdb 安装 mkfs.xfs 因为是给mongodb用的&#xff0c;所以我用 xfs 格式&#xff0c; 要安装下 x…...

    2024/4/11 11:14:49
  16. (三)redis数据存储类型介绍,及应用场景分析

    redis数据存储类型介绍 业务数据的特殊性 作为缓存使用 1、原始业务功能设计 秒杀&#xff0c;618活动&#xff0c;双11活动&#xff0c;排队购票 2、运营平台监控到的突发高频访问数据 突发时政要闻&#xff0c;被强势关注围观&#xff1b; 3、高频、复杂的统计数据 在…...

    2024/4/21 5:55:27
  17. 常见的web性能优化方法

    前端优化的目的 从用户角度而言&#xff0c;优化能够让页面加载得更快、对用户的操作响应得更及时&#xff0c;能够给用户提供更为友好的体验。从服务商角度而言&#xff0c;优化能够减少页面请求数、或者减小请求所占带宽&#xff0c;能够节省可观的资源。 常见的优化方法 …...

    2024/4/19 1:57:49
  18. 同步锁 synchronized

    synchronized(this) {…… 要顺序执行的代码}...

    2024/4/26 7:27:51
  19. PHP学习记录【php流程控制之if else语法】

    PHP 条件语句 在您编写代码时&#xff0c;经常会希望为不同的决定执行不同的动作。您可以在代码中使用条件语句来实现这一点。 在 PHP 中&#xff0c;我们可以使用以下条件语句&#xff1a; if 语句 - 如果指定条件为真&#xff0c;则执行代码if…else 语句 - 如果条件为 tr…...

    2024/4/28 19:51:06
  20. 组件简介与使用蓝图类扩展代码---在C++中创建静态网格组件

    本篇文章是我学习UE4的笔记 学习地址如下: http://www.sikiedu.com/my/course/518 参考地址如下: 官方文档 因本人才疏学浅&#xff0c;如有错误之处&#xff0c;还请见谅 文章目录前提开始操作C创建静态网格组件前提 组件的定义:是可以添加到Actor上的一项功能,组件无法…...

    2024/4/25 7:59:08

最新文章

  1. redis stream 作为消息队列的最详细的命令说明文档

    简介 stream 作为消息队列&#xff0c;支持多次消费&#xff0c;重复消费&#xff0c;ack机制&#xff0c;消息异常处理机制。 涉及到以下几个概念&#xff0c;消息流&#xff0c;消费者组&#xff0c;消费者。 涉及到以下命令 # 添加消息到流中 XADD key [NOMKSTREAM] [&…...

    2024/5/7 2:44:30
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/6 9:38:23
  3. 阿里云8核32G云服务器租用优惠价格表,包括腾讯云和京东云

    8核32G云服务器租用优惠价格表&#xff0c;云服务器吧yunfuwuqiba.com整理阿里云8核32G服务器、腾讯云8核32G和京东云8C32G云主机配置报价&#xff0c;腾讯云和京东云是轻量应用服务器&#xff0c;阿里云是云服务器ECS&#xff1a; 阿里云8核32G服务器 阿里云8核32G服务器价格…...

    2024/5/6 18:16:31
  4. spark on hive

    由于spark不存在元数据管理模块&#xff0c;为了能方便地通过sql操作hdfs数据&#xff0c;我们可以通过借助hive的元数据管理模块实现。对于hive来说&#xff0c;核心组件包含两个&#xff1a; sql优化翻译器&#xff0c;翻译sql到mapreduce并提交到yarn执行metastore&#xf…...

    2024/5/5 3:54:38
  5. 416. 分割等和子集问题(动态规划)

    题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义&#xff1a;dp[i][j]表示当背包容量为j&#xff0c;用前i个物品是否正好可以将背包填满&#xff…...

    2024/5/6 18:23:10
  6. 【Java】ExcelWriter自适应宽度工具类(支持中文)

    工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...

    2024/5/6 18:40:38
  7. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

    LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon&#xff0c;直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件&#xff0c;我们讨论Spring负载均衡以Spring Cloud2020之后版本为主&#xff0c;学习Spring Cloud LoadBalance&#xff0c;暂不讨论Ribbon…...

    2024/5/6 23:37:19
  8. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

    一、背景需求分析 在工业产业园、化工园或生产制造园区中&#xff0c;周界防范意义重大&#xff0c;对园区的安全起到重要的作用。常规的安防方式是采用人员巡查&#xff0c;人力投入成本大而且效率低。周界一旦被破坏或入侵&#xff0c;会影响园区人员和资产安全&#xff0c;…...

    2024/5/6 7:24:07
  9. VB.net WebBrowser网页元素抓取分析方法

    在用WebBrowser编程实现网页操作自动化时&#xff0c;常要分析网页Html&#xff0c;例如网页在加载数据时&#xff0c;常会显示“系统处理中&#xff0c;请稍候..”&#xff0c;我们需要在数据加载完成后才能继续下一步操作&#xff0c;如何抓取这个信息的网页html元素变化&…...

    2024/5/7 0:32:52
  10. 【Objective-C】Objective-C汇总

    方法定义 参考&#xff1a;https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...

    2024/5/6 6:01:13
  11. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    &#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格…...

    2024/5/6 7:24:06
  12. 【ES6.0】- 扩展运算符(...)

    【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数&#xff0…...

    2024/5/7 1:54:46
  13. 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?

    文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕&#xff0c;各大品牌纷纷晒出优异的成绩单&#xff0c;摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称&#xff0c;在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁&#xff0c;多个平台数据都表现出极度异常…...

    2024/5/6 20:04:22
  14. Go语言常用命令详解(二)

    文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令&#xff0c;这些命令可以帮助您在Go开发中进行编译、测试、运行和…...

    2024/5/7 0:32:51
  15. 用欧拉路径判断图同构推出reverse合法性:1116T4

    http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b&#xff0c;我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边&#xff0c; b b b 同理&#xff0c;则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…...

    2024/5/6 7:24:04
  16. 【NGINX--1】基础知识

    1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息&#xff0c;并安装一些有助于配置官方 NGINX 软件包仓库的软件包&#xff1a; apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

    2024/5/6 7:24:04
  17. Hive默认分割符、存储格式与数据压缩

    目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限&#xff08;ROW FORMAT&#xff09;配置标准HQL为&#xff1a; ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...

    2024/5/6 19:38:16
  18. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

    文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中&#xff0c;传感器和控制器产生大量周…...

    2024/5/6 7:24:03
  19. --max-old-space-size=8192报错

    vue项目运行时&#xff0c;如果经常运行慢&#xff0c;崩溃停止服务&#xff0c;报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中&#xff0c;通过JavaScript使用内存时只能使用部分内存&#xff08;64位系统&…...

    2024/5/7 0:32:49
  20. 基于深度学习的恶意软件检测

    恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞&#xff0c;例如可以被劫持的合法软件&#xff08;例如浏览器或 Web 应用程序插件&#xff09;中的错误。 恶意软件渗透可能会造成灾难性的后果&#xff0c;包括数据被盗、勒索或网…...

    2024/5/6 21:25:34
  21. JS原型对象prototype

    让我简单的为大家介绍一下原型对象prototype吧&#xff01; 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定&#xff0c;每一个构造函数都有一个 prototype 属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象…...

    2024/5/6 7:24:02
  22. C++中只能有一个实例的单例类

    C中只能有一个实例的单例类 前面讨论的 President 类很不错&#xff0c;但存在一个缺陷&#xff1a;无法禁止通过实例化多个对象来创建多名总统&#xff1a; President One, Two, Three; 由于复制构造函数是私有的&#xff0c;其中每个对象都是不可复制的&#xff0c;但您的目…...

    2024/5/6 7:24:01
  23. python django 小程序图书借阅源码

    开发工具&#xff1a; PyCharm&#xff0c;mysql5.7&#xff0c;微信开发者工具 技术说明&#xff1a; python django html 小程序 功能介绍&#xff1a; 用户端&#xff1a; 登录注册&#xff08;含授权登录&#xff09; 首页显示搜索图书&#xff0c;轮播图&#xff0…...

    2024/5/7 0:32:47
  24. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

    C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...

    2024/5/6 16:50:57
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57