本来想系统回顾下 ZooKeeper的,可是网上没找到一篇合自己胃口的文章,写的差不多的,感觉大部分都是基于《从Paxos到ZooKeeper 分布式一致性原理与实践》写的,所以自己读了一遍,加上项目中的使用,做个整理。加油,奥利给!

前言
面试常常被要求「熟悉分布式技术」,当年搞 “XXX管理系统” 的时候,我都不知道分布式系统是个啥。分布式系统是一个硬件或软件组件分布在不同的网络计算机中上,彼此之间仅仅通过消息传递进行通信和协调的系统。

计算机系统从集中式到分布式的变革伴随着包括分布式网络、分布式事务、分布式数据一致性等在内的一系列问题和挑战,同时也催生了一大批诸如ACID、CAP和 BASE 等经典理论的快速发展。

为了解决分布式一致性问题,涌现出了一大批经典的一致性协议和算法,最为著名的就是二阶段提交协议(2PC),三阶段提交协议(3PC)和Paxos算法。Zookeeper的一致性是通过基于 Paxos 算法的 ZAB 协议完成的。一致性协议之前的文章也由介绍:「走进分布式一致性协议」从2PC、3PC、Paxos 到 ZAB,这里就不再说了。

  1. 概述
    1.1 定义
    ZooKeeper 官网是这么介绍的:”Apache ZooKeeper 致力于开发和维护一个支持高度可靠的分布式协调的开源服务器“

1.2 ZooKeeper是个啥
ZooKeeper 是 Apache 软件基金会的一个软件项目,它为大型「分布式计算」提供开源的分布式配置服务、同步服务和命名注册。

Zookeeper 最早起源于雅虎研究院的一个研究小组。在当时,研究人员发现,在雅虎内部很多大型系统基本都需要依赖一个类似的系统来进行分布式协调,但是这些系统往往都存在分布式单点问题。所以,雅虎的开发人员就试图开发一个通用的无单点问题的分布式协调框架,以便让开发人员将精力集中在处理业务逻辑上,Zookeeper 就这样诞生了。后来捐赠给了Apache ,现已成为 Apache 顶级项目。

关于“ZooKeeper”这个项目的名字,其实也有一段趣闻。在立项初期,考虑到之前内部很多项目都是使用动物的名字来命名的(例如著名的Pig项目),雅虎的工程师希望给这个项目也取一个动物的名字。时任研究院的首席科学家 RaghuRamakrishnan 开玩笑地说:“再这样下去,我们这儿就变成动物园了!”此话一出,大家纷纷表示就叫动物园管理员吧一一一因为各个以动物命名的分布式组件放在一起,雅虎的整个分布式系统看上去就像一个大型的动物园了,而 Zookeeper 正好要用来进行分布式环境的协调一一于是,Zookeeper 的名字也就由此诞生了。

ZooKeeper 是用于维护配置信息,命名,提供分布式同步和提供组服务的集中式服务。所有这些类型的服务都以某种形式被分布式应用程序使用。每次实施它们时,都会进行很多工作来修复不可避免的 bug 和竞争条件。由于难以实现这类服务,因此应用程序最初通常会跳过它们,这会使它们在存在更改的情况下变得脆弱并且难以管理。即使部署正确,这些服务的不同实现也会导致管理复杂。

ZooKeeper 的目标是将这些不同服务的精华提炼为一个非常简单的接口,用于集中协调服务。服务本身是分布式的,并且高度可靠。服务将实现共识,组管理和状态协议,因此应用程序不需要自己实现它们。

1.3 ZooKeeper工作机制
ZooKeeper 从设计模式角度来理解:就是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,ZK 就将负责通知已经在 ZK 上注册的那些观察者做出相应的反应,从而实现集群中类似 Master/Slave 管理模式。

1.4 特性

图片来源:官网wiki

ZooKeeper:一个领导者(leader),多个跟随者(follower)组成的集群。
Leader 负责进行投票的发起和决议,更新系统状态。
Follower 用于接收客户请求并向客户端返回结果,在选举 Leader 过程中参与投票。
集群中只要有半数以上节点存活,Zookeeper 集群就能正常服务。
全局数据一致(单一视图):每个 Server 保存一份相同的数据副本,Client 无论连接到哪个 Server,数据都是一致的。
顺序一致性: 从同一客户端发起的事务请求,最终将会严格地按照顺序被应用到 ZooKeeper 中去。
原子性: 所有事务请求的处理结果在整个集群中所有机器上的应用情况是一致的,也就是说,要么整个集群中所有的机器都成功应用了某一个事务,要么都没有应用。
实时性,在一定时间范围内,client 能读到最新数据。
可靠性: 一旦一次更改请求被应用,更改的结果就会被持久化,直到被下一次更改覆盖。
1.5 设计目标
简单的数据结构 :Zookeeper 使得分布式程序能够通过一个共享的树形结构的名字空间来进行相互协调,即Zookeeper 服务器内存中的数据模型由一系列被称为ZNode的数据节点组成,Zookeeper 将全量的数据存储在内存中,以此来提高服务器吞吐、减少延迟的目的。
可以构建集群 :Zookeeper 集群通常由一组机器构成,组成 Zookeeper 集群的每台机器都会在内存中维护当前服务器状态,并且每台机器之间都相互通信。
顺序访问 :对于来自客户端的每个更新请求,Zookeeper 都会分配一个全局唯一的递增编号,这个编号反映了所有事务操作的先后顺序。
高性能 :Zookeeper 和 Redis 一样全量数据存储在内存中,100% 读请求压测 QPS 12-13W
1.6 数据结构
Zookeeper 数据模型的结构与 Unix 文件系统的结构相似,整体上可以看做是一棵树,每个节点称作一个 「ZNode」。每个 ZNode 默认能存储 1MB 的数据,每个 ZNode 都可以通过其路径唯一标识。

1.7 应用场景
ZooKeeper 是一个典型的分布式数据一致性解决方案,分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能

统一命名服务

在分布式系统中,通过使用命名服务,客户端应用能够根据指定名字来获取资源或服务的地址,提供者等信息。被命名的实体通常可以是集群中的机器,提供的服务地址,进程对象等等——这些我们都可以统称他们为名字(Name)。其中较为常见的就是一些分布式服务框架(如RPC、RMI)中的服务地址列表。通过调用 Zookeeper 提供的创建节点的 API,能够很容易创建一个全局唯一的 path,这个 path 就可以作为一个名称。

阿里巴巴开源的分布式服务框架 Dubbo 就使用 ZooKeeper 来作为其命名服务,维护全局的服务地址列表。

数据发布与订阅(配置中心)

发布与订阅模型,即所谓的配置中心,顾名思义就是发布者将数据发布到 ZooKeeper 节点上,供订阅者动态获取数据,实现配置信息的集中式管理和动态更新。例如全局的配置信息,服务式服务框架的服务地址列表等就非常适合使用。

分布式环境下,配置文件管理和同步是一个常见问题
一个集群中,所有节点的配置信息是一致的,比如 Hadoop 集群、集群中的数据库配置信息等全局配置
对配置文件修改后,希望能够快速同步到各个节点上。
配置管理可交由 ZooKeeper 实现
可将配置信息写入 ZooKeeper 上的一个 Znode
各个节点监听这个 Znode
一旦 Znode 中的数据被修改,ZooKeeper 将通知各个节点

统一集群管理

所谓集群管理无在乎两点:是否有机器退出和加入、选举 Master。

管理节点

分布式环境中,实时掌握每个节点的状态是必要的,比如我们要知道集群中各机器状态、收集各个机器的运行时状态数据、服务器动态上下线等。
交由 ZooKeeper 实现的方式
可将节点信息写入 ZooKeeper 上的一个 Znode
监听这个 Znode 可获取它的实时状态变化
典型应用:HBase 中 Master 状态监控和选举。(TODO:图应该是注册和Register and watch)

Master选举

在分布式环境中,相同的业务应用分布在不同的机器上,有些业务逻辑(例如一些耗时的计算,网络I/O处理),往往只需要让整个集群中的某一台机器进行执行,其余机器可以共享这个结果,这样可以大大减少重复劳动,提高性能,于是这个master选举便是这种场景下的碰到的主要问题。

利用 Zookeeper 的强一致性,能够很好的保证在分布式高并发情况下节点的创建一定是全局唯一的,即:同时有多个客户端请求创建 /currentMaster 节点,最终一定只有一个客户端请求能够创建成功。Zookeeper 通过这种节点唯一的特性,可以创建一个 Master 节点,其他客户端 Watcher 监控当前 Master 是否存活,一旦 Master 挂了,其他机器再创建这样的一个 Master 节点,用来重新选举。

软负载均衡

分布式系统中,负载均衡是一种很普遍的技术,为了保证高可用性,通常同一个应用或同一个服务的提供方都会部署多份,达到对等服务。可以是硬件的负载均衡,如 F5,也可以是软件的负载,我们熟知的 Nginx,或者这里介绍的 Zookeeper。

分布式协调/通知

Zookeeper 中特有的 「Watcher」 注册与异步通知机制,能够很好的实现分布式环境下不同机器,甚至不同系统之间的协调和通知,从而实现对数据变更的实时处理。

使用方法通常是不同系统都对 ZK 上同一个 znode 进行注册,监听 znode 的变化(包括 znode 本身内容及子节点的),其中一个系统 update 了 znode,那么另一个系统能够收到通知,并作出相应处理。

心跳检测中可以让检测系统和被检测系统之间并不直接关联起来,而是通过 ZK 上某个节点关联,减少系统耦合;
系统调度模式中,假设某系统有控制台和推送系统两部分组成,控制台的职责是控制推送系统进行相应的推送工作。管理人员在控制台作的一些操作,实际上是修改了 ZK 上某些节点的状态,而 ZK 就把这些变化通知给他们注册 Watcher 的客户端,即推送系统,于是,作出相应的推送任务。
分布式锁

分布式锁,这个主要得益于 ZooKeeper 为我们保证了数据的强一致性。

锁服务可以分为两类,一个是保持独占,另一个是控制时序。

所谓保持独占,就是所有试图来获取这个锁的客户端,最终只有一个可以成功获得这把锁。通常的做法是把 zk 上的一个 znode 看作是一把锁,通过 create znode 的方式来实现。所有客户端都去创建 /distribute_lock 节点,最终成功创建的那个客户端也即拥有了这把锁。
控制时序,就是所有试图来获取这个锁的客户端,最终都是会被安排执行,只是有个全局时序了。做法和上面基本类似,只是这里 /distribute_lock 已预先存在,客户端在它下面创建临时有序节点(这个可以通过节点的属性控制:CreateMode.EPHEMERAL_SEQUENTIAL来指定)。ZK 的父节点(/distribute_lock)维持一份 sequence,保证子节点创建的时序性,从而也形成了每个客户端的全局时序。
个人感觉还是用 Redis 实现分布式锁更加方便。

PS:阿里中间件团队:“其实,ZK 并非天生就是为这些应用场景设计的,都是后来众多开发者根据其框架的特性,利用其提供的一系列API接口(或者称为原语集),摸索出来的典型使用方法。”

  1. Hello ZooKeeper
    ZooKeeper 第三种部署方式:

单机模式,即部署在单台机器上的一个 ZK 服务,适用于学习、了解 ZK 基础功能
伪分布模式,即部署在一台机器上的多个(原则上大于3个)ZK 服务,伪集群,适用于学习、开发和测试
全分布式模式(复制模式),即在多台机器上部署服务,真正的集群模式,生产环境中使用
计划写三篇的,第二篇会实战 coding,运用各种 API,到时候再装集群,本节先来个单机玩~~

2.1 本地模式安装部署
2.1.1 安装前准备

安装 Jdk
拷贝或下载 Zookeeper 安装包到 Linux 系统下(这里有个小问题,如果你下载 ZK 版本是3.5+ 的话,要下载 bin.tar.gz,愚笨的我最先没看到官网说明,一顿操作各种报错找不到 Main 方法)
解压到指定目录tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz
2.1.2 配置修改

将 zookeeper-3.5.7/conf 这个路径下的 zoo_sample.cfg 修改为 zoo.cfg ;mv zoo_sample.cfg zoo.cfg
打开 zoo.cfg 文件,修改 dataDir 路径:dataDir=XXX/zookeeper-3.5.7/zkData
2.1.3 操作 Zookeeper

启动 Zookeeper: bin/zkServer.sh start

/usr/local/bin/java ZooKeeper JMX enabled by default Using config: /home/sync360/test/apache-zookeeper-3.5.7-bin/bin/…/conf/zoo.cfg Starting zookeeper … STARTED
查看进程是否启动: jps

4020 Jps 4001 QuorumPeerMain
查看状态:bin/zkServer.sh status

/usr/local/bin/java ZooKeeper JMX enabled by default Using config: /home/apache-zookeeper-3.5.7-bin/bin/…/conf/zoo.cfg Client port found: 2181. Client address: localhost. Mode: standalone
启动客户端:bin/zkCli.sh

Connecting to localhost:2181 2020-03-25 15:41:19,112 [myid:] - INFO [main:Environment@109] - Client environment:zookeeper.version=3.5.7-f0fdd52973d373ffd9c86b81d99842dc2c7f660e, built on 02/10/2020 11:30 GMT … 2020-03-25 15:41:19,183 [myid:] - INFO [main:ClientCnxn@1653] - zookeeper.request.timeout value is 0. feature enabled= Welcome to ZooKeeper! … WATCHER:: WatchedEvent state:SyncConnected type:None path:null
退出客户端:quit
停止 Zookeeper: bin/zkServer.sh stop
2.2 常用命令

ls 查看当前 zk 中所包含的内容

[zk: localhost:2181(CONNECTED) 1] ls / [lazyegg, zookeeper]
create 创建一个新的 znode

[zk: localhost:2181(CONNECTED) 2] create /test Created /test
get 查看新的 znode 的值

[zk: localhost:2181(CONNECTED) 4] get /test null
可以看到值为 null,我们刚才设置了一个没有值的节点,也可以通过 create /zoo dog 直接创建有内容的节点

set 对 zk 所关联的字符串进行设置

set /test hello
delete 删除节点

delete /test
2.3 配置参数解读
在 Zookeeper 的设计中,如果是集群模式,那所有机器上的 zoo.cfg 文件内容应该都是一致的。

Zookeeper 中的配置文件 zoo.cfg 中参数含义解读如下:

tickTime =2000:通信心跳数Zookeeper 使用的基本时间,服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime时间就会发送一个心跳,时间单位为毫秒它用于心跳机制,并且设置最小的 session 超时时间为两倍心跳时间。(session的最小超时时间是2*tickTime);
initLimit =10:主从初始通信时限,集群中的 Follower 跟随着服务器与 Leader 领导者服务器之间初始连接时能容忍的最多心跳数(tickTime的数量),https://www.szcbjs.com/AF1/用它来限定集群中的 ZK 服务器连接到 Leader 的时限;
syncLimit =5:主从同步通信时限,集群中 Leader 与 Follower 之间的最大响应时间单位,假如响应超过syncLimit * tickTime,Leader 认为 Follwer 死掉,从服务器列表中删除 Follwer;
dataDir:数据文件目录+数据持久化路径;
clientPort =2181:客户端连接端口
3. 你要知道的概念
ZooKeeper 本身就是一个分布式程序(只要半数以上节点存活,ZooKeeper 就能正常服务)。
为了保证高可用,最好是以集群形态来部署 ZooKeeper,这样只要集群中大部分机器是可用的(能够容忍一定的机器故障),那么 ZooKeeper 本身仍然是可用的。
ZooKeeper 将数据保存在内存中,这也就保证了高吞吐量和低延迟(但是内存限制了能够存储的容量不太大,此限制也是保持 znode 中存储的数据量较小的进一步原因)。
ZooKeeper 是高性能的。在“读”多于“写”的应用程序中尤其的高性能,https://www.szcbjs.com/YD15/因为“写”会导致所有的服务器间同步状态。(“读”多于“写”是协调服务的典型场景。)
ZooKeeper 底层其实只提供了两个功能:
管理(存储、读取)用户程序提交的数据
为用户程序提供数据节点监听服务
这里引入一个简单的例子,逐个介绍一些 ZK 中的概念。

在分布式系统中经常会遇到这种情况,多个应用读取同一个配置。例如:Client1,Client2 两个应用都会读取配置 B 中的内容,一旦 B 中的内容出现变化,就会通知 Client1 和 Client2。

一般的做法是在 Client1,Client2 中按照时钟频率询问 B 的变化,或者使用观察者模式来监听 B 的变化,发现变化以后再更新两个客户端。那么 ZooKeeper 如何协调这种场景?

这两个客户端连接到 ZooKeeper 的服务器,并获取其中存放的 B。保存 B 值的地方在 ZooKeeper 服务端中就称为 ZNode。

3.1 数据节点(Znode)

在谈到分布式的时候,我们通常说的“节点"是指组成集群的每一台机器。然而,在 Zookeeper 中,“节点"分为两类,第一类同样是指构成集群的机器,我们称之为「机器节点」;第二类则是指数据模型中的数据单元,我们称之为「数据节点」一一ZNode。上图中的 A、B 就是一个数据结点。

Zookeeper 将所有数据存储在内存中,数据模型是一棵树(Znode Tree),由斜杠(/)进行分割的路径,就是一个 Znode,例如 /Configuration/B。每个 Znode 上都会保存自己的数据内容,同时还会保存一系列属性信息。

在 Zookeeper 中,Znode 可以分为持久节点和临时节点两类。

所谓持久节点是指一旦这个 ZNode 被创建了,除非主动进行 ZNode 的移除操作,否则这个 ZNode 将一直保存在 Zookeeper 上。
而临时节点就不一样了,它的生命周期和客户端会话绑定,一旦客户端会话失效,https://www.szcbjs.com/W30/那么这个客户端创建的所有临时节点都会被移除。
另外,ZooKeeper 还允许用户为每个节点添加一个特殊的属性:**SEQUENTIAL。**也被叫做顺序结点,一旦节点被标记上这个属性,那么在这个节点被创建的时候,Zookeeper 会自动在其节点名后面追加上一个整型数字,这个整型数字是一个由父节点维护的自增数字。

3.2 事件监听器(Watcher)

上面说了 ZooKeeper 用来存放数据的 ZNode,并且把 B 的值存储在里面。如果 B 被更新了,两个客户端(Client1、Client2)如何获得通知呢?

Zookeeper 允许用户在指定节点上注册一些 Watcher,https://www.szcbjs.com/K01/当 Znode 发生变化时,将触发并删除一个 watch。当 watch 被触发时客户端会收到一个数据包,指示 znode 已经被修改。如果客户端和 ZooKeeper 服务器之间的连接中断,客户端将收到本地通知。该机制是 Zookeeper 实现分布式协调服务的重要特性。

3.6.0中的新增功能:客户端还可以在 znode 上设置永久性的递归监视,这些监视在触发时不会删除,并且会以递归方式触发已注册 znode 以及所有的 znode 的更改。

ZooKeeper 客户端(Client)会在指定的节点(/Configuration/B)上注册一个 Watcher,ZNode 上的 B 被更新的时候,服务端就会通知 Client1 和 Client2。

3.3 版本

有了 Watcher 机制,就可以实现分布式协调/通知了,假设有这样的场景,https://www.szcbjs.com/W20/两个客户端同时对 B 进行写入操作,这两个客户端就会存在竞争关系,通常需要对 B 进行加锁操作,ZK 通过 version 版本号来控制实现乐观锁中的“写入校验”机制。

Zookeeper 的每个 ZNode 上都会存储数据,对应于每个 ZNode,Zookeeper 都会为其维护一个叫作 Stat 的数据结构,Stat 中记录了这个 ZNode 的三个数据版本,分别是 version(当前ZNode的版本)、cversion(当前ZNode 子节点的版本)和 aversion(当前ZNode的ACL版本)。

znode 里都有些啥呢?

3.4 Stat 结构体

Znodes 维护了一个 stat 结构,其中包含数据更改、ACL更改的版本号、时间戳等。

3.5 会话(Session)

Session 指的是 ZooKeeper 服务器与客户端会话。

在 ZooKeeper 中,一个客户端连接是指客户端和服务器之间的一个 TCP 长连接。客户端启动的时候,首先会与服务器建立一个 TCP 连接,从第一次连接建立开始,客户端会话的生命周期也开始了。通过这个连接,客户端能够通过心跳检测与服务器保持有效的会话,也能够向 Zookeeper 服务器发送请求并接受响应,同时还能够通过该连接接收来自服务器的 Watch 事件通知。

Session 作为会话实体,用来代表客户端会话,其包括 4 个属性:

SessionID,用来全局唯一识别会话;
TimeOut,会话超时事件。客户端在创造 Session 实例的时候,https://www.szcbjs.com/YL10.2/会设置一个会话超时的时间。当由于服务器压力太大、网络故障或是客户端主动断开连接等各种原因导致客户端连接断开时,只要在 sessionTimeout 规定的时间内能够重新连接上集群中任意一台服务器,那么之前创建的会话仍然有效;
TickTime,下次会话超时时间点;
isClosing,当服务端如果检测到会话超时失效了,会通过设置这个属性将会话关闭。
3.6 ACL

Zookeeper 采用 ACL(Access Control Lists)策略来进行权限控制,https://www.szcbjs.com/KG2/类似于 UNIX 文件系统的权限控制。Zookeeper 定义了如下 5 种权限:

CREATE: 创建子节点的权限
READ: 获取节点数据和子节点列表的权限
WRITE: 更新节点数据的权限
DELETE: 删除子节点的权限
ADMIN: 设置节点ACL的权限
其中尤其需要注意的是,CREATE 和 DELETE 这两种权限都是针对子节点的权限控制。

3.7 集群角色

最典型集群模式:Master/Slave 模式(主备模式)。在这种模式中,通常 Master 服务器作为主服务器提供写服务,其他的 Slave 从服务器通过异步复制的方式获取 Master 服务器最新的数据提供读服务。

但是,在 ZooKeeper 中没有选择传统的 Master/Slave 概念,而是引入了Leader、Follower 和Observer 三种角色。

Leader:为客户端提供读和写的服务,https://www.szcbjs.com/A30/负责投票的发起和决议,更新系统状态
Follower:为客户端提供读服务,如果是写服务则转发给 Leader。在选举过程中参与投票
Observer:为客户端提供读服务器,如果是写服务则转发给 Leader。不参与选举过程中的投票,也不参与“过半写成功”策略。在不影响写性能的情况下提升集群的读性能。此角色是在 zookeeper3.3 系列新增的角色。
server 状态

LOOKING:寻找Leader状态
LEADING:领导者状态,表明当前服务器角色是 Leader
FOLLOWING:跟随着状态,表明当前服务器角色是 Follower
OBSERVING:观察者状态,表明当前服务器角色是 Observer
选举机制

zk-vote

服务器1启动,此时只有它一台服务器启动了,它发出去的报文没有任何响应,所以它的选举状态一直是LOOKING 状态。
服务器2启动,它与最开始启动的服务器1进行通信,互相交换自己的选举结果,由于两者都没有历史数据,所以 id 值较大的服务器2胜出,但是由于没有达到超过半数以上的服务器都同意选举它(这个例子中的半数以上是3),所以服务器1、2还是继续保持 LOOKING 状态。
服务器3启动,根据前面的理论分析,服务器3成为服务器1、2、3中的老大,而与上面不同的是,此时有三台服务器选举了它,所以它成为了这次选举的Leader。
服务器4启动,根据前面的分析,理论上服务器4应该是服务器1、2、3、4中最大的,但是由于前面已经有半数以上的服务器选举了服务器3,https://www.szcbjs.com/wugang/所以它只能接受当小弟的命了。
服务器5启动,同4一样当小弟。
Watcher 监听器
Zookeeper 中最有特色且最不容易理解的是监视(Watches)。

Zookeeper 所有的读操作——getData(),getChildren(), 和 exists() 都可以设置监视(watch),监视事件可以理解为一次性的触发器, 官方定义如下:a watch event is one-time trigger, sent to the client that set the watch, which occurs when the data for which the watch was set changes。对此需要作出如下理解:

One-time trigger(一次性触发)当设置监视的数据发生改变时,https://www.szcbjs.com/teshugang/该监视事件会被发送到客户端,例如,如果客户端调用了 getData("/znode1", true) 并且稍后 /znode1 节点上的数据发生了改变或者被删除了,客户端将会获取到 /znode1 发生变化的监视事件,而如果 /znode1 再一次发生了变化,除非客户端再次对 /znode1 设置监视,否则客户端不会收到事件通知。(3.6之后可以设置永久监视)
Sent to the client(发送至客户端)Zookeeper 客户端和服务端是通过 socket 进行通信的,由于网络存在故障,所以监视事件很有可能不会成功到达客户端,监视事件是异步发送至监视者的,Zookeeper 本身提供了保序性(ordering guarantee):即客户端只有首先看到了监视事件后,才会感知到它所设置监视的 znode 发生了变化(a client will never see a change for which it has set a watch until it first sees the watch event)。网络延迟或者其他因素可能导致不同的客户端在不同的时刻感知某一监视事件,但是不同的客户端所看到的一切具有一致的顺序。https://www.szcbjs.com/D2gaosugang/
The data for which the watch was set(被设置 watch 的数据)这意味着 znode 节点本身具有不同的改变方式。你也可以想象 Zookeeper 维护了两条监视链表:数据监视和子节点监视(data watches and child watches), getData() 和exists() 设置数据监视,getChildren() 设置子节点监视。或者,你也可以想象 Zookeeper 设置的不同监视返回不同的数据,getData() 和 exists()返回 znode 节点的相关信息,而 getChildren() 返回子节点列表。因此, setData() 会触发设置在某一节点上所设置的数据监视(假定数据设置成功),而一次成功的 create() 操作则会触发当前节点上所设置的数据监视以及父节点的子节点监视。一次成功的 delete() 操作将会触发当前节点的数据监视和子节点监视事件,同时也会触发该节点父节点的 child watch。
Zookeeper 中的监视是轻量级的,https://www.szcbjs.com/M4/因此容易设置、维护和分发。当客户端与 Zookeeper 服务器端失去联系时,客户端并不会收到监视事件的通知,只有当客户端重新连接后,若在必要的情况下,以前注册的监视会重新被注册并触发,对于开发人员来说这通常是透明的。只有一种情况会导致监视事件的丢失,即:通过 exists() 设置了某个 znode 节点的监视,但是如果某个客户端在此 znode 节点被创建和删除的时间间隔内与 zookeeper 服务器失去了联系,该客户端即使稍后重新连接 zookeepe r服务器后也得不到事件通知。https://www.szcbjs.com/SKH55/

图片来源:yht7

从上图可以看到,Watcher 机制包括三个角色:客户端线程、客户端的 WatchManager 以及 ZooKeeper 服务器。Watcher 机制就是这三个角色之间的交互,整个过程分为注册、存储和通知三个步骤:

客户端向 ZooKeeper 服务器注册一个 Watcher 监听;
把这个监听信息存储到客户端的 WatchManager 中;
当 ZooKeeper 中的节点发生变化时,会通知客户端,客户端会调用相应 Watcher 对象中的回调方法。

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

相关文章

  1. 分布式缓存高手课笔记05

    1、缓存穿透,发生的场景和常见的破解招数 2、缓存雪崩,发生的场景和常见的破解招数 3、缓存一致性,如何保证多级缓存与数据库之间的一致性 4、缓存一致性,使用Ehcache和Redis实现缓存最终一致性...

    2024/4/23 22:20:57
  2. java/php/net/python购房贷款交易平台设计

    本系统带文档lw万字以上+答辩PPT+查重 如果这个题目不合适,可以去我上传的资源里面找题目,找不到的话,评论留下题目,或者站内私信我, 有时间看到机会给您发管理员用例 管理员登录后可进行系统用户管理、新闻数据管理、系统简介设置、留言管理、友情链接管理、变幻图管理、…...

    2024/4/23 15:21:22
  3. 搞它!!! 深入介绍firewalld防火墙管理工具

    文章目录一、概述二、iptables的四表五链结构三、包过滤的匹配流程四、iptables的配置1、基本语法2、管理选项3、控制选项4、配置实例五、规则的匹配条件1、通用匹配(1)协议匹配(2)地址匹配(3)网络接口匹配2、隐含匹配(1)端口匹配(2)icmp类型匹配3、显示匹配(1)多端…...

    2024/4/15 18:28:58
  4. 外贸企业如何选择外贸邮件群发平台,7个建议闭坑!

    做外贸都想找一个靠谱的外贸邮件群发平台,网上咨询如何选择一家外贸邮件群发平台的问题非常多,在这里EmailCamel小编给大家整理了一些建议。1. 分析下目前公司的客户邮箱数量及质量如果客户邮箱数量不多,比如1万以内,那么企业邮箱就可以满足发信量了,一个企业邮箱日发信50…...

    2024/4/15 18:28:57
  5. 数据库系统设计概述

    数据库系统设计概述世界上只有两种开发人员,一种使用数据库系统的,一种开发数据库系统的。数据是系统最重要的信息。大部分系统都是对数据的管理。应用系统通过数据模型来构建现实世界,通过算法操作对象或数据结构,来改变数据模型的状态。数据被组织在操作系统文件中,我们…...

    2024/4/18 14:37:38
  6. SwiftUI Timer仿短信发送倒计时(教程含源码)

    实战需求 SwiftUI Timer仿短信发送倒计时 本文价值与收获 看完本文后,您将能够作出下面的界面看完本文您将掌握的技能 掌握timer基础使用 实现三个业务逻辑的切换 实现倒计时 基础知识 Timer 经过一定时间间隔后将触发的计时器,将指定的消息发送到目标对象。 class Timer : N…...

    2024/4/15 18:28:55
  7. 理解Java代理

    假设您在生产中运行了一个应用程序。每隔一段时间,它就会进入崩溃状态,错误很难重现,您需要从应用程序中获得更多的信息。 你想知道解决方案吗? 您可以做的是将一些代码动态地附加到您的应用程序中,然后仔细地重写它,以便代码转储您可以记录的其他信息,或者您可以将应用…...

    2024/4/23 0:57:37
  8. 高耐压100V转5V3A低功耗GPS定位器降压恒压芯片【带使能EN脚】H6203惠海

    8-100V转5V3A电动车GPS定位器供电IC,8-100V转5V3A电动车GPS定位器降压IC,8-120V转5V3A电动车GPS定位器供电IC,8-120V转5V3A电动车GPS定位器降压IC, 8-150V转5V3A电动车GPS定位器供电IC,8-150V转5V3A电动车GPS定位器降压IC,8-100V转5V3A电动车GPS追踪器供电IC 7-150V转5V…...

    2024/4/15 18:28:53
  9. Redis未授权访问漏洞

    1.漏洞介绍 Redis如果没有做用户认证配置(默认配置是空口令,端口6379),可以不需要验证直接远程连接Redis数据库。并且由于Redis中是把数据保存到内存中的,它会定期的把数据写会到硬盘中, 可以通过指定写入文件的位置来进行多种攻击,比如通过写入ssh密钥直接通过ssh登陆服…...

    2024/4/27 0:49:15
  10. redis在linux中的安装

    准备 redis安装包 链接:https://pan.baidu.com/s/1HRe5emjFdxVSp_9v74pHkA 提取码:howd 或者官网下载:redis官网 安装 1、上传文件 将安装包上传到服务器,我存放的目录为 /usr/local 2、授权解压 对文件进行权限的授权 chmod 755 redis-4.0.9.tar.gz解压 tar -zxvf redis-4…...

    2024/4/15 18:28:51
  11. jxTMS--业务系统的价值分析

    jxTMS:低成本快速定制的业务系统个人开发平台。 业务系统的价值分析 站在信息系统的角度,组织行为可分为两类:重复性行为、变化性行为。对于重复性行为,我们应该提高品质、提高效率、降低成本,即提升性价比对于变化性行为,则因其不确定性,尤其是潜在的环境变化,所以主要…...

    2024/4/15 18:28:50
  12. 【微软新闻推荐赛Baseline论文笔记】IJCAI2019-NAML

    前言:——(看模型直接下滑)微软在最近ACL2020中 发布了一个大规模的英文新闻推荐数据集 MIND,并同时举办了MIND News Recommendation Competition(比赛地址:https://msnews.github.io/competition.html),比赛质量特别高,加上微软的加持,作为数据竞赛爱好者的巴斯君怎…...

    2024/4/15 18:28:49
  13. 图形化用户界面(2):Swing基础

    大多数Swing应用都被构建在基础的JFrame内部,JFrame在你使用的任何操作系统中都可以创建视窗应用。视窗的标题可以像下面这样使用JFrame的构造器来设置:package gui;import javax.swing.JFrame;public class HelloSwing {public static void main(String[] args) {JFrame fra…...

    2024/4/27 4:00:06
  14. 质量管理 - 成熟度常见模型

    质量管理成熟度是评价企业质量管理水平的常用方法。本文从成熟度的起源出发,介绍质量管理成熟度的起源、现状、发展,对常见的质量管理成熟度模型进行了对比分析,提出应用成熟度模型和工具的建议,以期更好地推进企业或项目质量管理能力测评与提高。▲成熟度起源“成熟”一词…...

    2024/4/15 18:28:47
  15. 内网渗透-Winexe使用

    作者:小刚 一位苦于信息安全的萌新小白帽,记得关注给个赞,谢谢 本实验仅用于信息防御教学,切勿用于其它用途Winexe使用,执行远程命令Winexe获取主机密码访问系统提升为system权限 Winexe winexe是linux运行的windows系统管理工具,在渗透测试中可以通过各种方式获取被攻击…...

    2024/4/17 5:07:41
  16. Material xxx doesn‘t have _Stencil property问题记录

    记录一个实际遇到的问题。 起因是写了个UGUI闪红灯警告效果的shader,用的时候发现,放在button上没有问题,但是放到ScrollRect里的item上,就总是输出警告信息,Material xxx doesn’t have _Stencil property,倒置编辑器中运行程序超级卡。 百度了下,看到有问的但是没看到…...

    2024/4/15 14:51:48
  17. Pod:Kubernetes最小执行单元

    Pod:Kubernetes最小执行单元 文章目录Pod:Kubernetes最小执行单元Pod基本概念理解Pod是什么为什么需要Pod通过Pod合理管理容器Pod 配置清单运行中的Pod Yaml情况定义一个简单的Pod Yaml与Pod通信的两种方式使用Label组织Pod引入Label的意义关于Label的几种应用场景与Label使用…...

    2024/4/22 15:41:11
  18. Scratch学习步骤

    Scratch学习步骤 1、安装Scratch 2、写第一个Scratch程序:Hello!world 3、写第一个Scratch动画:小猫来回走 4、写第一个Scratch游戏:小猫顶金币 5、写第一个Scratch音乐:两只老虎 6、写第一个Scratch画图:多边形 7、写第一个Scartch数学:随机选择数字 8、写第一个Scratch…...

    2024/4/23 10:16:52
  19. seureCRT 下载使用

    ##securecrt官网: https://securecrt.en.softonic.com/##下载地址: (需要注册登陆才能下载)https://www.vandyke.com/cgi-bin/account_login.php?pid=scrt_x64_872scrt-x64.8.7.exe ##官网上通过账户密码登陆下载的版本;只能试用;SecureCRT6.6汉化版.z…...

    2024/4/15 18:28:47
  20. 谁再说MySQL难学

    前言 今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于 Web 应用尤 其明显。关于数据库的性能,这并不只是 DBA 才需要担心的事,而这更是我们 程序员需要去关注的事情。当我们去设计数据库表结构,对操作数据库时(尤其 是查表时的 SQL 语句),我们都需要注意数据操…...

    2024/4/15 18:28:51

最新文章

  1. 杰发科技AC7840——CAN通信简介(7)_波形分析

    参考: CAN总线协议_stm32_mustfeng-GitCode 开源社区 0. 简介 隐形和显性波形 整帧数据表示 1. 字节描述 CAN数据帧标准格式域段域段名位宽:bit描述帧起始SOF(Start Of Frame)1数据帧起始标志,固定为1bit显性(b0)仲裁段dentify(ID)11本数…...

    2024/4/27 7:24:01
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/3/20 10:50:27
  3. 蓝桥杯第十五届抱佛脚(十)贪心算法

    蓝桥杯第十五届抱佛脚(十)贪心算法 贪心算法基本概念 贪心算法是一种在算法设计中常用的方法,它在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法。 贪…...

    2024/4/19 0:49:59
  4. WPS二次开发专题:WPS SDK实现文档打印功能

    作者持续关注WPS二次开发专题系列,持续为大家带来更多有价值的WPS开发技术细节,如果能够帮助到您,请帮忙来个一键三连,更多问题请联系我(QQ:250325397) 在办公场景或者家教场景中经常碰到需要对文档进行打印…...

    2024/4/26 8:23:14
  5. 416. 分割等和子集问题(动态规划)

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

    2024/4/27 1:53:53
  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/4/27 3:39:11
  7. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

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

    2024/4/26 8:22:40
  8. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

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

    2024/4/26 11:10:01
  9. VB.net WebBrowser网页元素抓取分析方法

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

    2024/4/27 3:39:08
  10. 【Objective-C】Objective-C汇总

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

    2024/4/27 3:39:07
  11. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    👨‍💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】🌏题目描述🌏输入格…...

    2024/4/27 3:39:07
  12. 【ES6.0】- 扩展运算符(...)

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

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

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

    2024/4/26 17:59:13
  14. Go语言常用命令详解(二)

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

    2024/4/26 22:35:59
  15. 用欧拉路径判断图同构推出reverse合法性:1116T4

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

    2024/4/26 17:00:23
  16. 【NGINX--1】基础知识

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

    2024/4/27 3:39:03
  17. Hive默认分割符、存储格式与数据压缩

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

    2024/4/26 9:43:47
  18. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

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

    2024/4/26 9:43:47
  19. --max-old-space-size=8192报错

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

    2024/4/27 1:03:20
  20. 基于深度学习的恶意软件检测

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

    2024/4/27 3:22:12
  21. JS原型对象prototype

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

    2024/4/26 21:29:56
  22. C++中只能有一个实例的单例类

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

    2024/4/27 3:39:00
  23. python django 小程序图书借阅源码

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

    2024/4/26 23:53:24
  24. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

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

    2024/4/26 9:43:45
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

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

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

    %读入6幅图像(每一幅图像的大小是564*564) 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系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 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系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...

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

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

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

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

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

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

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

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

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

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

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

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