一:问题

1、当正常不是启动的对外对应的是microserivcecloud-dept8001,启动了之后在到8001的application.yml文件修改 instance-id: microserivcecloud-dept8001 为 microserivcecloud-dept8001xxx,查询页面 然后在修改回来

2、此时机会出现dept8001xxx当机的现象,microserivcecloud-dept8001在更新,这里就需要自我保护机制

Eureka自我保护机制与Eureka服务发现(Discovery)

二:Eureka自我保护机制是什么?

0、某一时刻某一个微服务不能用了(如:dept8001xxx),而Eureka不会自动清除

依然对微服务的信息进行保存

1、在默认的情况系,EurekaServer在一定的时间内没有接受到微服务的实例心跳,EurekaServer将会注销该实例(默认为90秒)

2、但是在网络发生故障的时候,微服务于EurekaServer之间是无法通信的,这种情况就非常危险了,因为微服务本身实例是健康的,此刻本不应该注销这个微服务。那么Eureka自我保护模式就解决了这个问题了

3、当EurekaServer节点在短时间内丢失过客户端时(包含发生的网络故障),那么节点就会进行自我保护

4、一但进入自我保护模式,EurekaServer就会保护服务注册表中的信息,不再删除服务注册表中的数据不会注销任何的微服务

5、当网络故障恢复后,该EurekaServer节点会自动的退出自我保护机制

6、在自我保护模式中,EurekaServer会保护服务注册表中的信息,不在注销任何服务实例,当重新收到心跳数恢复阀值以上时,该EurekaServer节点就会自动的退出自我保护模式,这种社设计宁可保留错误的服务注册信息,也不盲目的注销删除任何可能健康的服务实例

7、自我保护机制就是一种对网络异常的安全保护实施,他会报错所有的微服务(健康或者不健康的微服务都会保存)

,而不会盲目的删除任何微服务,可以让Eureka集群更加的健壮/稳定

8、在EurekaServer端可取消自我保护机制不建议使用

Eureka自我保护机制与Eureka服务发现(Discovery)

三:服务发现(Discovery)是什么

1、对于注册进来的Eureka里面的微服务,可以通过服务发现来获的该服务的信息

2、通俗的说:就是登陆某科技园查询某公司是否入驻到该科技园中

四:修改chserivcecloud-provider-dept-8001工中的DeptController

1、在DeptController中添加一和服务发现的接口

2、import com.ch.springcloud.serivce.DeptSerivce;包中的DiscoveryClient

Eureka自我保护机制与Eureka服务发现(Discovery)

五:添加服务发现

1、在chserivcecloud-provider-dept-8001主启动类(DeptProvider8001_Ch)上加上注解@EnableDiscoveryClient

Eureka自我保护机制与Eureka服务发现(Discovery)

六:测试(自测)

1、启动EurekaServer(7001)

2、在启动EurekaClient(8001)

1、自测

1、8001自己调用自己

Eureka自我保护机制与Eureka服务发现(Discovery)

2、发现

Eureka自我保护机制与Eureka服务发现(Discovery)

七:consumer(消费者)怎么来访问?

1、修改chserivcecloud-consumer-dept-80工中的DeptController_Consumer.java

2、在该类后面加上如下代码

Eureka自我保护机制与Eureka服务发现(Discovery)

3、consumer端测试

Eureka自我保护机制与Eureka服务发现(Discovery)

Eureka自我保护机制与Eureka服务发现(Discovery)

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐