概述
对于已经注册的微服务我们还可以手动获取。
通过DiscoveryClient组件 可以获取到已经注册的服务信息和服务实例信息。
我们通过DiscoveryClient 这个组件,获取到服务信息,可以自定义对这些服务进行负载均衡、限流、灰度发布等操作。
还需要添加这个 @EnableDiscoveryClient 注解
测试验证一下:
先启动微服务 6001、6002
在启动服务 8001
调用接口: http://localhost:8001/user/discovery
可以看到 已经获取到了服务的信息了。
Eureka 的自我保护机制
Eureka 进入到自我保护机制,Eureka Server将会尝试保护其服务注册表中的信息,不再删除服务注册表中的数据,也就是不会注销任何微服务。如果在Eureka Server的首页看到以下这段提示,则说明Eureka进入了保护模式:EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY’RE NOT.
RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE
为什么会产生Eureka 的自我保护机制呢?
为了保证EurekaClient可以正常运行,某个服务可能因为网络抖动、网络延迟导致该服务没有及时向Eureka注册中心发送心跳。EurekaServer不会立刻将EurekaClient服务剔除的。
什么是自我保护机制呢?
比如我们现在我们一共有10服务,每个服务间隔30s向注册中心发送心跳。那么一分钟的心跳次数为
210 = 20 次。开启自我保护机制之后,就会检测每一分钟的心跳次数 如果小于期望的心跳(200.85) 次数,那么就会进入自我保护机制,不会摘除任务实例。
期望心跳怎么算呢?
注册表中的服务实例每分钟心跳的次数0.85,就是期望的心跳次数。
在CAP理论中Eureka属于哪一个分支呢?
Eureka 属于 CAP 理论中的AP 分支,它保证了服务的可用性和分区容错性。向zk这种就是CP分支,需要服务保证强一致性和分区容错性。
怎么禁止Eureka的自我保护机制
Eureka 虽然提供了自我保护机制,但是在生成中我们一般会把禁止使用自我保护机制的,把不需要的服务剔除。
eureka.server.enable-self-preservation=true 默认配置 就是开启自我保护机制的。
最后
以上就是害羞帅哥为你收集整理的微服务SpringCloud(Eureka服务发现和自我保护机制)整合九的全部内容,希望文章能够帮你解决微服务SpringCloud(Eureka服务发现和自我保护机制)整合九所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复