微服务注册与发现
微服务注册与发现
服务发现简介
通过前文的讲解,我们知道硬编码提供者地址的方式有不少问题。想要解决这些问题,服务消费者需要一个强大的服务发现机制,服务消费者使用这种机制获取服务提供者的网络信息。不仅如此,即使服务提供者的信息发生变化,服务消费者也无需修改配置文件。
服务提供者、服务消费者、服务发现组件这三者之间的关系大致如下:
- 各个微服务在启动时,将自己的网络地址等信息注册到服务发现组件中,服务发现组件会存储这些信息。
- 服务消费者可从服务发现组件查询服务提供者的网络地址,并使用该地址调用服务提供者的接口。
- 各个微服务与服务发现组件使用一定机制(例如心跳)通信。服务发现组件若长时间无法与某微服务实例通信,就会注销该实例。
- 微服务网络地址发生变更(例如实例增删或者IP端口发生变化等)时,会重新注册到服务发现组件。使用这种方式,服务消费者就无须人工修改提供者的网络地址了。
综上,服务发现组件应具备以下功能。 - 服务注册表:是服务发现组件的核心,它用来记录各个微服务的信息,例如微服务的名称、IP、端口等。服务注册表提供查询API和管理API,查询API用于查询可用的微服务实例,管理API用于注册和注销。
- 服务注册与服务发现:服务注册是指微服务在启动时,将自己的信息注册到服务发现组件上的过程。服务发现是指查询可用微服务列表及其网络地址的机制。
- 服务检查:服务发现组件使用一定机制定时检测已注册的服务,如发现某实例长时间无法访问,就会从服务注册表中移除该实例。
综上,使用范围发现的好处是显而易见的。Spring Cloud提供了多种服务发现组件的支持,例如Eureka、Consul和ZooKeeper等。
注:目前市面上书籍中所提到的服务注册、服务发现或注册中心等名词,多数场景下都可理解为服务发现组件。服务发现的方式可细分为服务器端发现和客户端发现。
Eureka简介
Eureka是Netflix开源的服务发现组件,本身是一个基于REST的服务。它包含Server和Client两部分。Spring Cloud将它集成在子项目Spring Cloud Netflix中,从而实现微服务的注册与发现。
Eureka原理
在分析Eureka的原理之前,先来了解一下Region和Availability Zone。
Region和AvailabilityZone均是AWS的概念。其中Region表示AWS中的地理位置,每个Region都有多个AvailabilityZone,各个Region之间完全隔离。AWS通过这种方式实现了最大的容错和稳定性。
Spring Cloud默认使用的Region是us-east-1,在非AWS环境下,可以将Availability Zone理解为机房,将Region理解为跨机房的Eureka集群。
- Application Service:相当于本书中的服务提供者。
- Application Client:相当于本书中的服务消费者。
- Make Remote Call:可以理解成调用RESTful API的行为。
- us-east-1c、us-east-1d等都是zone,它们都属于us-east-1这个region。
Eureka包含两个组件:Eureka Server和Eureka Client,它们的作用如下: - Eureka Server提供服务发现的能力,各个微服务启动时,会向Eureka Server注册自己的信息(例如IP、端口、微服务名称等),Eureka Server会存储这些信息。
- Eureka Client是一个Java客户端,用于简化与Eureka Server的交互。
- 微服务启动后,会周期性(默认30s)地向Eureka Server发送心跳以续约自己的"租期"。
- 如果Eureka Server在一定时间内没有接收到某个微服务实例的心跳,Eureka Server将注销该实例(默认90s)。
- 默认情况下,Eureka Server同时也是Eureka Client。多个Eureka Server实例互相之间通过复制的方式来实现服务注册表中数据的同步。
- Eureka Client会缓存服务注册表中的信息。这种方式有一定的优势——首先,微服务无须每次请求都查询Eureka Server,从而降低了Eureka Server的压力;其次,即使Eureka Server所有节点都宕掉,服务消费者依然可以使用缓存中的信息找到服务提供者并完成调用。
综上,Eureka通过心跳检查、客户端缓存等机制,提高了系统的灵活性、可伸缩性和可用性。
编写Eureka Server
1)创建一个空项目chapter04。
2)在项目下创建一个Modules,Artifact是microservice-discovery-eureka的Spring Initializr项目。选择web和eureka依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.9.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>microservice-discovery-eureka</artifactId><version>0.0.1-SNAPSHOT</version><name>microservice-discovery-eureka</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version><spring-cloud.version>Edgware.RELEASE</spring-cloud.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
3)修改启动类,在启动类添加@EnableEurekaServer注解,声明这是一个Eureka Server。
package com.example;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@EnableEurekaServer
@SpringBootApplication
public class MicroserviceDiscoveryEurekaApplication {public static void main(String[] args) {SpringApplication.run(MicroserviceDiscoveryEurekaApplication.class, args);}}
4)在配置文件application.yml中添加以下内容
server:port: 8761
eureka:client:register-with-eureka: falsefetch-registry: falseservice-url: defaultZone: http://localhost:8761/eureka/
- eureka.client.register-with-eureka:表示十分将自己注册到Eureka Server,默认为true。由于当前应用就是Eureka Server,故而设为false。
- eureka.client.fetchRegistry:表示是否从Eureka Server获取注册信息,默认为true。因为这是一个单点的Eureka Server,不需要同步其他的Eureka Server节点的数据,故而设为false。
- eureka.client.serviceUrl.defaultZone:设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。默认是http://localhost:8761/eureka;多个地址间可使用,分隔。
测试
启动Eureka Server,访问http://localhost:8761/
由图可知,Eureka Server的首页展示了很多信息,例如当前实例的系统状态、注册到Eureka Server上的服务实例、常用信息、实例信息等。显然,当前还没有任何微服务实例被注册到Eureka Server上。
将微服务注册到Eureka Server上
1)复制项目microservice-simple-provide-user,将ArtifactId修改为microservice-provider-user。
2)在pom.xml中添加以下依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.9.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>microservice-provider-user</artifactId><version>0.0.1-SNAPSHOT</version><name>microservice-provider-user</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version><spring-cloud.version>Edgware.RELEASE</spring-cloud.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>RELEASE</version><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>
3)在配置文件application.yml中添加以下配置
spring:application:name: microservice-provider-user
eureka:client:service-url: defaultZone: http://localhost:8761/eureka/
instance:prefer-ip-address: true
其中,spring.application.name用于指定注册到Euerka Server上的应用名称;eureka.instance.prefre-ip-address= true
表示将自己的IP注册到Eureka Server。若不配置该属性或将其设置为false,则表示注册微服务或将其设置为false,则表示注册微服务所在操作系统的hostname到Eureka Server。
同理将microservice-simple-consumer-movie复制到当前目录microservice-consumer-movie
测试
- 启动microservice-discovery-eureka
- 启动microservice-provider-user
- 启动microservice-consumer-movie
- 访问http://localhost:8761/
注:在Spring Cloud Edgware之前,想要将微服务注册到Eureka Server或其他服务发现组件上,必须在启动类上添加@EnableEurekaClient或@EnableDiscoveryClient。
在Spring Cloud Edgware以及更高版本中,只需添加相关依赖,即可自动注册。这是由于在实际项目中,我们可能希望实现"不同环境不同配置"的效果,例如:在开发环境中,不注册到Eureka Server上,而是服务提供者、服务消费者直连,便于调测;在生产环境中,我们又希望能够享受服务发现的优势——服务消费者无须知道服务提供者的绝对地址。为适应该需求,Spring Cloud Commons进行了改进。
若不想将服务注册到Eureka Server,只需设置 spring.cloud.service-registry.auto-registration.enabled= falsse,或@EnableDiscoveryClient(autoRegister= false)即可。
Eureka Server的高可用
前面编写的单节点Eureka Server并不适合线上生产环境。Eureka Client会定时连接Eureka Server,获取服务注册表中的信息并缓存在本地。微服务在消费者远程API时总是使用本地缓存中的数据。因此一般来说,即使Eureka Server发生宕机,也会不影响服务之间的调用。但如果Eureka Server宕机时,某些微服务也出现了不可用的情况,Eureka Client中的缓存若不被更新,就可能会影响微服务的调用,甚至影响整个应用系统的高可用性。因此,在生产环境中,通常会部署一个高可用的Eureka Server集群。
编写高可用Eureka Server
Eureka Server可以通过运行多个实例并相互注册的方式实现高可用部署,Eureka Server实例会彼此增量地同步信息,从而确保所有节点数据一致。事实上,节点之间相互注册是Eureka Server地默认行为,还记得前文编写单节点Eureka Server时,额外配置了eureka.client.registerWithEureka=flase、eureka.client.fetchRegistry=false吗?
这里构建一个双节点Eureka Server集群。
1)复制项目microservice-discovery-eureka,将ArtifactId修改为microservice-discovery-eureka-ha。
2)配置系统的hosts,Windows系统的hosts文件路径是C:\Windows\System32\drivers\etc\hosts
;liunx及Mac OS等系统的文件路径是/etc/hosts
127.0.0.1 peer1 peer2
3)将application.yml修改如下,让两个节点的Eureka Server相互注册
application.yml
spring:application:name: microservice-discovery-eureka-ha
---
spring:profiles: peer1
server:port: 8761
eureka:instance:hostname: peer1client:service-url:defaultZone: http://peer2:8762/eureka/
---
spring:profiles: peer2
server:port: 8762
eureka:instance:hostname: peer2client:service-url: defaultZone: http://peer1:8761/eureka/
如上,使用连字符(—)将该application.yml文件分为三段。第二段和第三段分别为spring.properties指定了一个指,该值表示它所在的那段内容应用在哪个Profile里。第一段由于并为指定spring.profiles,因此这段内容会所有Profile生效。
我们定义了peer1和peer2这两个Profile。当应用以peer1这个Profile启动时,配置该Eureka Server的主机名为peer1,并将注册到http://peer2:8762/eureka/;反之,当应用以profile=peer2时,Eureka Server会注册到peer1节点的Eureka Server。
测试
1)打包项目,并使用以下命令启动两个Eureka Server节点。
java -jar microservice-discovery-eureka-ha-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1
java -jar microservice-discovery-eureka-ha-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2
通过spring.profiles.active指定使用哪个profile启动。
2)访问http://peer1:8761,会发现"registered-replicas"中已有peer2节点;同理,访问http://peer2:8762,也能发现其中的"registered-replicas"有peer1节点。
注:事实上,还可使用更精简的配置方式配置Eureka Server集群。
spring:application:name: microservice-discovery-eureka-ha
eureka:client:service-url:defaultZone: http://peer1:8761/eureka/,http://peer2:8762/eureka/
---
spring:profiles: peer1
server:port: 8761
eureka:instance:hostname: peer1
---
spring:profiles: peer2
server:port: 8762
eureka:instance:hostname: peer2
将应用注册到Eureka Server集群上
以microservice-provider-user项目为例,只需修改eureka.client.serviceUrl.defaultZone,配置多个Eureka Server地址,就可以将其注册到Eureka Server集群了。
eureka:client:service-url:defaultZone: http://peer1:8761/eureka/,http://peer2:8762/eureka/
这样就可以将服务注册到Eureka Server集群上了。
当然,微服务即使只配置Eureka Server集群中的某个节点,也能正常注册到Eureka Server集群,因为多个Eureka Server之间的数据会互相同步
eureka:client:service-url:defaultZone: http://peer1:8761/eureka/
用户认证
在前面的实例中,Eureka Server是运行匿名访问的,在实际项目中,可能希望必须经过用户认证才允许访问Eureka Server。
为Eureka Server添加用户认证
1)复制项目microservice-discovery-eureka,将ArtifactId修改为microservice-discovery-eureka-authentication。
2)在pom.xml中添加spring-boot-starter-security的依赖,该依赖为Rureka Server提供用户认证能力。
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency>
3)在application.yml中添加以下内容
security:basic:enabled: trueuser:name: userpassword: password123
这样就为Eureka Server添加了基于HTTP basic的认证。如果不设置这段内容,账号默认是user,密码是一个随机值,该值会在启动时打印出来。
4)将Eureka Server中的eureka.client.serviceUrl.defaultZone修改为http://user:password@EUREKA_HOST:EUREKA_PORT/eureka/的形式。
eureka:client:register-with-eureka: falsefetch-registry: falseservice-url:defaultZone: http://user:password123@localhost:8761/eureka/
测试
1)启动microservice-discovery-eureka-authenticating。
2)访问http://localhost:8761/时需要身份验证
将微服务注册到需认证的Eureka Server
只需修改配置文件
eureka:client:service-url:defaultZone: http://user:password123@localhost:8761/eureka/
对于更复杂的需求,可创建一个类型为DiscoveryClientOptionalArgs的@Bean,并向其中注入ClientFilter。
1)将之前的配置文件修改回来,保证配置文件中没有明示的密码。
2)引入依赖
<dependency><groupId>com.sun.jersey</groupId><artifactId>jersey-client</artifactId><version>1.19.1</version>
</dependency>
3)在需要注册的服务下创建一个config包并在其下创建一个DiscoveryConfig.java
package com.example.config;import com.netflix.discovery.DiscoveryClient;
import com.sun.jersey.api.client.filter.ClientFilter;
import com.sun.jersey.api.client.filter.HTTPBasicAuthFilter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import java.util.ArrayList;
import java.util.List;@Configuration
public class DiscoveryConfig {@Beanpublic DiscoveryClient.DiscoveryClientOptionalArgs discoveryClientOptionalArgs(){DiscoveryClient.DiscoveryClientOptionalArgs discoveryClientOptionalArgs=new DiscoveryClient.DiscoveryClientOptionalArgs();List<ClientFilter> additionalFilters = new ArrayList<>();additionalFilters.add(new HTTPBasicAuthFilter("user","password123"));discoveryClientOptionalArgs.setAdditionalFilters(additionalFilters);return discoveryClientOptionalArgs;}
}
这样就将用户名和密码写入了注入了Spring boot在之后访问Eureka时会自动使用。
Eureka的元数据
Eureka的元数据有两种,分别是标准元数据和自定义元数据。
标准元数据指的是主机名、IP地址、端口号、状态页和健康检查等信息,这些信息都会被发布在服务注册表中,用于服务之间的调用。自定义元数据可以使用eureka.instance.meradata-map
配置,这些元数据可以在远程客户端中访问,但一般不会改变客户端的行为,除非客户端知道该元数据的含义。
改造用户微服务
1)复制项目microservice-provider-user,将ArtifactId修改为microservice-provider-user-my-metadata。
2)修改application.yml,使用eureka.instance.metadata-map属性为该微服务添加应自定义的元数据。
eureka:client:service-url:defaultZone: http://localhost:8761/eureka/instance:metadata-map: #自定义的元数据,key/value都可以随便写my-metadata: 我自定义的元数据prefer-ip-address: true
改造电影微服务
1)复制项目microservice-consumer-movie
,将ArtifacId修改为microservice-consumer-movie-understanding-metadata
。
2)修改Controller
package com.example.controller;import com.example.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;import java.util.List;@RestController
public class MovieController {@Autowiredprivate RestTemplate restTemplate;@Value("${user.userServiceUrl}")private String userServiceUrl;@Autowiredprivate DiscoveryClient discoveryClient;@GetMapping("/user/{id}")public User findById(@PathVariable Long id) {return this.restTemplate.getForObject(this.userServiceUrl + id, User.class);}/** 查询microservice-provider-user服务的信息并返回* @return microservice-provider-user服务的信息* */@GetMapping("/user-instance")public List<ServiceInstance> showInfo(){return this.discoveryClient.getInstances("microservice-provider-user");}
}
使用DiscoveryClient.getInstances(serviceId),可查询指定微服务在Eureka上的实例列表。
测试
1)启动microservice-discovery-eureka。
2)启动microservice-provider-user-my-metadata。
3)启动microservice-consumer-movie-understanding-metadata。
4)访问http://localhost:8761/eureka/apps可查看Eureka的metadata。
5)访问http://localhost:8010/user-instance,可以返回类似如下的内容
[{"host": "192.168.137.1","port": 8000,"metadata": {"management.port": "8000","my-metadata": "\\u6211\\u81EA\\u5B9A\\u4E49\\u7684\\u5143\\u6570\\u636E"},"secure": false,"uri": "http://192.168.137.1:8000","serviceId": "MICROSERVICE-PROVIDER-USER","instanceInfo": {"instanceId": "LA********5UB.mshome.net:microservice-provider-user:8000","app": "MICROSERVICE-PROVIDER-USER","appGroupName": null,"ipAddr": "192.168.137.1","sid": "na","homePageUrl": "http://192.168.137.1:8000/","statusPageUrl": "http://192.168.137.1:8000/info","healthCheckUrl": "http://192.168.137.1:8000/health","secureHealthCheckUrl": null,"vipAddress": "microservice-provider-user","secureVipAddress": "microservice-provider-user","countryId": 1,"dataCenterInfo": {"@class": "com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo","name": "MyOwn"},"hostName": "192.168.137.1","status": "UP","leaseInfo": {"renewalIntervalInSecs": 30,"durationInSecs": 90,"registrationTimestamp": 1635325678338,"lastRenewalTimestamp": 1635325798241,"evictionTimestamp": 0,"serviceUpTimestamp": 1635325677755},"isCoordinatingDiscoveryServer": false,"metadata": {"management.port": "8000","my-metadata": "\\u6211\\u81EA\\u5B9A\\u4E49\\u7684\\u5143\\u6570\\u636E"},"lastUpdatedTimestamp": 1635325678338,"lastDirtyTimestamp": 1635325677697,"actionType": "ADDED","asgName": null,"overriddenStatus": "UNKNOWN"}
}]
可以看到,使用DiscoveryClient的API获得了用户微服务的各种信息,其中包括了标准元数据和自定义元数据。例如IP、端口等信息都是标准元数据,用于服务之间的调用;同时,自定义的元数据my-metadata,也可通过客户端查询到,但是并不会改变客户端行为。
使用Eureka Server实现轮询效果
1)在microservice-provider-user和microservice-provider-user-my-metadata下的controller中添加一个新方法
@Value("${server.post}")private String post;@Value("${spring.application.name}")private String name;@GetMapping(value = "/whoareyou")public String whoAreYou(){return "I am "+name+",post:"+post;}
2)在microservice-consumer-movie-understanding-metadata下的controller中添加一个新方法。
private int range=0;@GetMapping("/whoareyou")public String whoAreYou(){List<ServiceInstance> instances = this.discoveryClient.getInstances("microservice-provider-user");ServiceInstance serviceInstance = instances.get(range);String host = serviceInstance.getHost();int port = serviceInstance.getPort();range++;return this.restTemplate.getForObject("http://"+host+":"+port+"/whoareyou", String.class);}
3)启动microservice-discovery-eureka-authenticating、microservice-provider-user、microservice-provider-user-my-metadata、microservice-consumer-movie-understanding-metadata
4)访问localhost:8010/whoareyou
Eureka的自我保护模式
默认情况下,如果Eureka Server在一定时间内没有接收到某个微服务的实例的心跳,Eureka Server将注销该实例(默认为90s)。但是当网络分区故障发生时,微服务与Eureka Server之间无法正常通信,以上行为可能变得非常危险了——因为微服务本身其实是健康的,此时本不应该注销这个微服务。
Eureka通过"自我保护模式"来解决这个问题——当Eureka Server节点在短时间内丢失过多客户端时(可能发生了网络分区故障),那么这个节点就会进入自我保护模式。一旦进入该模式,Eureka Server就会保护服务注册表中的信息,不再删除服务注册表中的数据(也就是不会注销任何微服务)。当网络故障恢复后,Eureka Server节点会自动退出自我保护模式。
综上,自我保护模式是一种应对网络异常的安全保护措施。它的架构哲学是宁可同时保留所有微服务(健康的微服务和不健康的微服务都会保留),也不盲目注销任何健康的微服务。使用自我保护模式,可以让Eureka集群更加的健壮、稳定。
在Spring Cloud中,可以使用eureka.server.enable-self-preservation = false
禁用自我保护模式。
多网卡环境下的IP选择
对于多网卡的服务器,各个微服务注册到Eureka Server上的IP要如何指定呢?
指定IP在某些场景下很有用。例如某台服务器有eth0、eth1和eth2三块网卡,但是只有eth1可以被其他的服务器访问;如果Eureka Client将eth0或者eth2注册到Eureka Server上,其他微服务就无法通过这个IP调用该微服务的接口。
Spring Cloud提供了按需选择IP的能力,从而避免以上的问题。
1)忽略指定名称的网卡
spring:cloud:inetutils:ignored-interfaces: - docker0- veth.*
eureka:instance:prefer-ip-address: true
2)使用正则表达式,指定使用的网络地址
spring:cloud:inetutils:preferred-networks: - 192.168- 10.0
eureka:instance:prefer-ip-address: true
3)只使用站点本地地址
cloud:inetutils:use-only-site-local-interfaces: true
eureka:instance:prefer-ip-address: true
4)手动指定IP地址。在某些极端场景下,可以手动指定注册到Eureka Server的微服务IP
eureka:instance:prefer-ip-address: trueip-address: 127.0.0.1
Eureka的健康检查
Status一栏有个up,表示应用程序状态正常。应用状态还有其他取值,例如DOWN、OUT_OF_SERVICE、UNKNOEN等。只有标记为UP的微服务会被被请求。
Eureka Server与Eureka Client之间使用心跳机制来确定Eureka Client的状态,默认情况下,服务器端与客户端的心跳保持正常,应用程序就会始终保持UP状态。
以上机制并不能完全反映应用程序的状态。微服务与Eureka Server之间的心跳正常,Eureka Server认为微服务"UP";然而,该微服务的数据源发生了问题,根本无法正常工作。
前文说过,Spring Boot Actuator提供了/health端口,该端口可展示应用程序的健康信息。
要实现这一点,只需启用Eureka的健康检查。这样,应用程序就会将自己的健康状态传播到Eureka Server。开启的方法非常简单,只需为微服务配置以下内容,就可以开启健康检查。
引入依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
eureka:client:healthcheck:enabled: true
某些场景下,可能希望更细粒度地控制健康检查,此时可实现com.netflix.appinfo.HealthCheckHandler接口。
- eureka.client.healthcheck.enabled=true只能配置到application.yml中,如果配置在bootstrap.yml中,可能会导致一些不良地后果,例如应用注册到Eureka Server上的状态是UNKNOWN。
排除Jersey依赖
默认情况下,Eureka Client 使用Jersey 1.x与Eureka Server交互。
在Spring Cloud Edgware中,Jersey并非必选,我们可排除Jersey的相关依赖。此时,Spring Cloud将自动配置一个基于RestTemplate的HTTP客户端。
排除Jersey的操作方法
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId><exclusions><exclusion><groupId>com.sun.jersey</groupId><artifactId>jersey-client</artifactId></exclusion><exclusion><groupId>com.sun.jersey</groupId><artifactId>jersey-core</artifactId></exclusion><exclusion><groupId>com.sun.jersey.contribs</groupId><artifactId>jersey-apache-client4</artifactId></exclusion></exclusions></dependency>
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- Scala语言(六)-------Set、Map、Tuple
一.Set 1.set集合创建以及方法 package zjcobject test05 {def main(args: Array[String]): Unit {val setSet[Int](1,2,3,4)val set1Set[Int](2,3,4,5)val value: Set[Int] set.intersect(set1)value.foreach(println)println("")val value1: Set[Int] set.diff…...
2024/3/13 13:51:26 - SVPWM仿真和基于DSP28335的PIL(处理器在环) 仿真模型
SVPWM仿真和基于DSP28335的PIL(处理器在环) 仿真模型(将matlab仿真算法生成代码在DSP中在线运行返回数据给Matlab)验证算法可行性和实时性。对于数字信号处理很有用。(提供环境搭建和例程) wuliye975258334...
2024/3/16 4:38:15 - 869. 重新排序得到 2 的幂 https://leetcode-cn.com/problems/reordered-power-of-2
给定正整数 N ,我们按任何顺序(包括原始顺序)将数字重新排序,注意其前导数字不能为零。 如果我们可以通过上述方式得到 2 的幂,返回 true;否则,返回 false。 class Solution {public boolean r…...
2024/3/16 4:38:13 - PanoSim支持AVP/Summon开发测试
PanoSim智能驾驶仿真测试平台,全方位支撑AVP/SUMMON感知、决策、规划、控制等子模块的分析、仿真、设计、部署、集成、测试等业务。依托PanoSim高置信度的仿真架构、丰富逼真的工具链以及灵活的插件架构设计,为AVP/SUMMON的开发测试提供一体化解决方案。…...
2024/3/16 4:38:16 - 我国构建物联网基础安全标准体系的时间表确定
近日,工信部发布《物联网基础安全标准体系建设指南(2021版)》(以下简称《指南》),明确物联网终端、网关、平台等关键基础环节安全要求,满足物联网基础安全保障需要,促进物联网基础安全能力提升。 《指南…...
2024/3/16 4:38:16 - C和C++精度问题(小数保留指定位数)
C保留指定位数 #include<iomanip> cout<<fixed<<setprecision(2);//2为指定的位数C语言保留指定位数 printf("%.2f",1.235678);//保留2位小数...
2024/3/16 4:38:09 - 网页生成二维码
下载js文件 https://github.com/davidshimjs/qrcodejs 1.定义dom <div id"qrcode"></div>2.js调用 最简洁的调用 new QRCode(document.getElementById("qrcode"), url); // 设置要生成二维码的链接详细调用 new QRCode("qrcode"…...
2024/3/16 4:38:14 - cv2循环读取文件夹视频
import osimport cv2 import timefor item in os.listdir(r"D:\airplane\output"):video r"D:\airplane\output" "\\" itemcap cv2.VideoCapture(video)ret, frame cap.read()print("正在读取:", video)while ret:cv2.imshow(&qu…...
2024/3/16 4:38:10 - go语言 数组类型使用的坑
在 C/C 中,数组(名)是指针。将数组作为参数传进函数时,相当于传递了数组内存地址的引用,在函数内部会改变该数组的值。 在 Go 中,数组是值。作为参数传进函数时,传递的是数组的原始值拷贝&…...
2024/3/16 4:38:08 - “21天好习惯”第一期——6
今天我通过做一道题了解到了循环语句,感谢“21天好习惯”又让我学到了新的知识 题目是这样的: 刚开始我拿到题目是有点蒙的,凭借我们所学的知识暂时无法解答。但是老师说过程序员遇到不会的问题要学会用百度;我通过搜索知道了循环…...
2024/3/16 4:38:09 - VTK 几何体连通区域分析 vtkPolyDataConnectivityFilter
在VTK中连通区域分析常用到的类是:vtkPolyDataConnectivityFilter。从名字可以看出来其输入类型为vtkPolyData;了解VTK的人都知道这是图形的基本数据结构保存了图形的几何结构和拓扑结构。如果你要进行连通分析的对象是图形那自然就没问题。但如果需要对…...
2024/3/16 4:38:10 - final修饰类,修饰方法,修饰变量有什么特点?
1、final修饰的类不可以被继承,但可以继承其他的类。 2、final修饰的方法子类可以继承但是不能重写。 3、子类重写父类的非final方法可以加上final。 4、被final修饰的基本数据类型的变量可以看作是常量,赋值后不能改变。 5、被final修饰的引用数据类…...
2024/3/29 13:09:34 - string 类中常见操作
1.string容器的基本概念 c语言风格字符串太过复杂难于掌握,不适合大程序的开发 2.string容器的常用操作string 的构造函数 string();//创建一个空的字符串例如:string str; string(const string &str)//使用一个string 对象去初始化另外一个string 对…...
2024/3/16 4:38:04 - cesium entity
一、属性值修改 setVlaue() getValue() 例:viewer.entities._entities._array[0]._polygon._outlineColor.setValue(Cesium.Color.BLUE.withAlpha(0));...
2024/3/16 4:38:07 - java语言基础--算法结构与控制语句
java语言基础--算法结构与控制语句一、三种算法基本结构二、布尔类型及其运算1、关系运算符2、逻辑运算符三、选择语句1、Java语法:if-else语句例1 实现求倒数算法的Java程序(if-else语句)例2 判断年份是否闰年的Java程序例3 求符号函数sgn(x…...
2024/3/25 2:18:31 - mybatis-plus的使用
订阅专栏 mybatis-plus的使用 mybatis-plus的AR模式、插件、逆向工程、自定义全局操作、公共字段自动填充等知识点进行讲解。 一、ActiveRecord: Active Record(活动记录),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而…...
2024/3/16 4:38:00 - 深度学习的步骤(以多层感知机为例)
以多层感知机为例,在明晰步骤的同时熟悉代码 确定batch_size,根据batch_size加载数据 batch_size 256 train_iter, test_iter d2l.load_data_fashion_mnist(batch_size)初始化模型参数:各层的单元数、每层的权重和偏置矩阵、激活函数 nu…...
2024/3/22 14:09:25 - 集铁们,你Flutter打包不会是用app.apk吧?
前言 大家都知道flutter编译后会有个app.apk 和app-release.apk,细心点的可能察觉到了俩个文件的大小是不一样的。 但是很多老铁似乎不知道俩个不一样在哪里。 app.apk是可以反编译出dart源码的哟~老铁子 我们可以看到这是app.apk这个解压后在flutter_asset里面存…...
2024/3/13 13:51:33 - Spring支持的事务管理类型?
7.Spring支持的事务管理类型? a、编程式事务管理:这意味你通过编程的方式管理事务,给你带来极大的灵活性,但是难维护。 b、声明式事务管理:这意味着你可以将业务代码和事务管理分离,你只需用注解和XML配置来管理事务…...
2024/3/26 19:38:18 - Taulia任命Todd Musselman为首席福祉官
旧金山--(美国商业资讯)--领先的金融科技运营资本解决方案提供商Taulia今天宣布任命Todd Musselman为首席福祉官,反映出该公司对于优先考虑员工福祉、幸福和发展的承诺。 Musselman拥有丰富的领导力培训经验,他经营着自己的公司,提供励志演讲…...
2024/3/13 13:51:30
最新文章
- Prometheus +Grafana +node_exporter可视化监控Linux + windows虚机
1、介绍 待补充 2、架构图 Prometheus :主要是负责存储、抓取、聚合、查询方面。 node_exporter :主要是负责采集物理机、中间件的信息。 3、搭建过程 配置要求:1台主服务器 n台从服务器 (被监控的linux或windows虚机&am…...
2024/3/29 13:15:08 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - 绝地求生:PUBG七周年:荣都人机进阶打法!
再给大家写一点攻略,荣都又上线了,但是我发现很多朋友打个人机都不利索。 原因在于荣都的两个人机点NPC太多,并且还是三级兑换点跳人很多,一旦打起来情况非常混乱,最近和朋友总结一套人机打法。 食王府 食王府一定要从…...
2024/3/29 3:45:40 - 数据结构-----栈、顺序栈、链栈
在软件应用中,栈这种后进先出数据结构的应用是非常普遍的。比如用浏览器上网时,不管什么浏览器都有一个“后退”键,你点击后可以按访问顺序的逆序加载浏览过的网页。即使从一个网页开始,连续点了几十个链接跳转,你点“…...
2024/3/29 0:06:31 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/3/27 10:21:24 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/3/24 20:11:25 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/3/29 2:45:46 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/3/24 20:11:23 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/3/29 5:19:52 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/3/28 17:01:12 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/3/29 11:11:56 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/3/29 1:13:26 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/3/29 8:28:16 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/3/29 7:41:19 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/3/24 20:11:18 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/3/29 9:57:23 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/3/29 0:49:46 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/3/24 20:11:15 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/3/27 7:12:50 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/3/24 20:11:13 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/3/26 11:21:23 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/3/28 18:26:34 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/3/28 12:42:28 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/3/28 20:09:10 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 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 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在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