win7系统注册 (win7系统注册表损坏怎么修复)

1、什么是注册中心

第一部分:服务的注册

第二部分:服务的发现

2、为什么需要注册中心,它解决了什么问题

(1)管理服务

(2)服务的依赖关系

3、什么是注册中心Eureka

(1)Eureka是基于Restful的微服务,提供服务的注册与发现、负载均衡、故障转移的能力

(2)三种角色

eureka server 注册发现

service provider服务提供方,将自己注册到eureka

service consumer服务消费方,从eureka获取注册服务列表,消费服务

二、一个Eureka入门

见:https://blog.csdn.net/csj50/article/details/104678944

三、高可用集群版的Eureka

见:https://blog.csdn.net/csj50/article/details/124961740

四、eureka架构原理

1、架构图

电脑

说明:

(1)register(服务注册):把自己的IP、Port注册给eureka

(2)renew(服务续约):发送心跳,30秒发送一次,告诉eureka自己还活着

(3)eviction(剔除):超过90秒,eureka认为服务死了,从注册表剔除

(4)cancel(服务下线):provider停止关闭,调用eureka,把自己从注册表剔除,目的是防止consumer调用不存在的服务

(5)get registry(获取注册列表)

(6)replicate(复制):eureka集群自己的数据同步和复制

五、基于CAP定理分析eureka与zookeeper的区别

1、分布式系统CAP定理

(1)C:数据一致性(consistency)

也叫做数据原子性

系统在执行过某项操作后,仍然处于一致的状态。在分布式系统中,更新操作执行成功后所有的用户都应该读到最新的值,这样的系统被认为是具有强一致性的。等同于所有节点访问同一份最新的数据副本

(2)A:服务可用性(availability)

每一个操作总是能够在一定的时间内返回结果,这里需要注意的是“一定时间内”和“返回结果”。一定时间指的是,在可以容忍的范围内返回结果,结果可以是成功或者失败

(3)P:分区容错性(partition-tolerance)

在网络分区的情况下,被分隔的节点仍能正常对外服务(分布式集群,数据被分布式存储在不同的服务器上,无论什么情况,服务器都能正常被访问)

2、定律:在分布式系统里面只能同时命中2个

(1)CA,放弃P

如果想避免分区蓉错性问题的发生,一种做法是将所有的数据(与事务相关的)都放在一台机器上。

虽然无法100%保证系统不会出错,但不电脑会碰到由分区带来的负面效果。当然这个选择会严重的影响系统的扩展性。

(2)CP,放弃A

相对于放弃“分区蓉错性”来说,其反面就是放弃可用性。一旦遇到分区容错故障,那么受到影响的服务需要等待一段时间,因此在等待期间系统无法对外提供服务。

(3)AP,放弃C

这里所说的放弃一致性,并不是完全放弃数据一致性,而是放弃数据的强一致性,而保留数据的最终一致性。

以网络购物为例,对只剩下一件库存的商品,如果同时接受到了两份订单,那么较晚的订单将被告知商品告罄。

3、对比zookeeper和eureka

(1)zookeeper

cap:CP

dubbo集成:支持

spring cloud集成:支持

kv存储服务:支持

使用接口(多语言能力):提供客户端

watch支持:支持

集群监控:—

(2)eureka

cap:AP

dubbo集成:—

spring cloud集成:支持

kv存储服务:—

使用接口(多语言能力):http多语言

watch支持:支持

集群监控:metrics

(3)其他

什么是watch支持?就是客户端监听服务端的变化情况。

zookeeper通过订阅监听来实现

eureka通过轮询的方式来实现变化

4、eureka自我保护简介

如果因为网络问题,服务1分钟无法访问,eureka服务节点在短时间内丢失了大量的心跳,会保留死亡的注册信息

等网络恢复后,好数据和坏数据都在

六、什么是自我保护模式?在什条件下eureka会启动自我保护

1、自我保护的条件

一般情况下,电脑微服务在Eureka上注册后,会30秒定期发送心跳,Eureka通过心跳来判断微服务是否健康,同时会定期删除超过90秒没有发送心跳的服务。

2、有2种情况会导致Eureka Server收不到微服务的心跳

(1)是微服务自身原因所致,比如故障或关闭。

(2)是微服务于eureka之间的网络出现故障。

通常(微服务自身的故障关闭)只会导致个别服务出现故障,一般不会出现大面积的故障,而(网络故障)通常会导致Eureka Server在短时间内无法收到大批心跳。

考虑到这个区别,Eureka设定了一个阈值,当判断挂掉的服务的数量超过阈值时,Eureka Server认为很大程度上出现了网络故障,将不再删除心跳过期的服务。

3、那这个阈值是多少呢

15分钟之内是否低于85%。

Eureka Server在运行期间,会统计心跳失败的比例在15分钟之内是否低于85%,这种算法叫Eureka Server的自我保护模式。

4、为什么要自我保护

(1)因为同时保留“好数据”与“坏数据”总比丢掉任何“好数据”要更好,当网络故障恢复后,这个Eureka节点会退出自我保护模式。

(2)Eureka还有客户端缓存功能(也就是微服务的缓存功能)。即便Eureka集群中所有节点都宕机失效,微服务的provider和consumer都能正常通信。

(3)微服务的负载均衡策略会自动剔除死亡的微服务节点。

5、关闭自我保护配置

#关闭自我保护,设置为false

eureka.server.enable-self-preservation=false

#清理间隔(单位毫秒,默认是60*1000)

eureka.server.eviction-interval-timer-in-ms=60000

七、优雅停服

1、直接kill进程会触发eureka的自我保护

2、使用actuator

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-actuator</artifactId>

</dependency>

3、在provider模块配置文件中加入(springboot2.1可用)

#启用shutdown

management.endpoint.shutdown.enabled=true

#禁用密码验证

management.endpoint.shutdown.sensitive=false

4、启动服务,http post请求发送shutdown

例如:http://127.0.0.1:8011/actuator/shutdown

返回:

{

"message": "Shutting down, bye..."

}

5、查看日志

2022-05-25 18:39:07.116 INFO 35236 --- [ Thread-7] o.s.c.n.e.s.EurekaServiceRegistry : Unregistering application SERVICE-PROVIDER1 with eureka with status DOWN

2022-05-25 18:39:07.117 WARN 35236 --- [ Thread-7] com.netflix.discovery.DiscoveryClient : Saw local status change event StatusChangeEvent [timestamp=1653475147117, current=DOWN, previous=UP]

2022-05-25 18:39:07.117 INFO 35236 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient : DiscoveryClient_SERVICE-PROVIDER1/localhost:service-provider1:8011: registering service...

2022-05-25 18:39:07.124 INFO 35236 --- [ Thread-7] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'

2022-05-25 18:39:07.138 INFO 35236 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient : DiscoveryClient_SERVICE-PROVIDER1/localhost:service-provider1:8011 - registration status: 204

2022-05-25 18:39:07.143 INFO 35236 --- [ Thread-7] com.netflix.discovery.DiscoveryClient : Shutting down DiscoveryClient ...

2022-05-25 18:39:10.146 INFO 35236 --- [ Thread-7] com.netflix.discovery.DiscoveryClient : Unregistering ...

2022-05-25 18:39:10.169 INFO 35236 --- [ Thread-7] com.netflix.discovery.DiscoveryClient : DiscoveryClient_SERVICE-PROVIDER1/localhost:service-provider1:8011 - deregister status: 200

2022-05-25 18:39:10.180 INFO 35236 --- [ Thread-7] com.netflix.discovery.DiscoveryClient : Completed shut down of DiscoveryClient

2022-05-25 18:39:10.594 INFO 35236 --- [ Thread-7] o.apache.catalina.core.StandardService : Stopping service [Tomcat]

2022-05-25 18:39:10.596 INFO 35236 --- [ Thread-7] o.a.c.c.C.[Tomcat].[localhost].[/] : Destroying Spring FrameworkServlet 'dispatcherServlet'

八、加强eureka安全认证

1、eureka模块pom文件添加依赖

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-security</artifactId>

</dependency>

2、eureka模块配置文件中加入(springboot2.1可用)

#安全认证

#开启基于http basic的安全认证

spring.security.basic.enabled=true

spring.security.user.name=admin

spring.security.user.password=123456

3、 修改defaultZone

http://admin:123456@${eureka.instance.hostname}:${server.port}/eureka/

4、添加WebSecurityConfig.java,注意包扫描路径

package com.example.mycloud.run;


import org.springframework.context.annotation.Configuration;

import org.springframework.security.config.annotation.web.builders.HttpSecurity;

import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;

import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;


@EnableWebSecurity

@Configuration

public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

@Override

protected void configure(HttpSecurity http) throws Exception {

http.csrf().disable(); // 关闭csrf

super.configure(http);

}

}

5、eureka模块编译并启动,访问eureka页面

输入用户名、密码,登录成功

6、provider模块修改defaultZone

http://admin:123456@${eureka.instance.hostname}:${server.port}/eureka/


电脑 电脑