赞
踩
未配置之前
配置
- eureka:
- instance:
- hostname: localhost
- #配置服务id
- instance-id: payment8002
配置后
服务改为自定义id,更方便管理,可以根据地区,ip来做细化
未配置前
配置
- eureka:
- instance:
- hostname: localhost
- instance-id: payment8002
- #显示ip
- prefer-ip-address: true
配置后
显示变为ip,更好区分
客户端想获取注册中心中有那些注册好的服务,如何才能做到?这时候就需要 Discovery(服务发现)
1. 引入DiscoveryClient
- @Resource
- private DiscoveryClient discoveryClient;
2.编写获取配置代码
- @GetMapping("/getDiscovery")
- public Object getDiscovery(){
- List<String> services = discoveryClient.getServices();
- //获取所有服务名
- for (String service : services) {
- log.info("================:" + service);
- }
-
- //获取单个服务的注册信息
- List<ServiceInstance> instances = discoveryClient.getInstances("cloud-payment-service");
-
- for (ServiceInstance instance : instances) {
- log.info("*******************"+instance.getHost() + "\t" + instance.getPort() + "\t" + instance.getUri());
- }
-
-
- return this.discoveryClient;
- }
3.启动类添加注解
- @EnableDiscoveryClient
- public class PaymentMain8001 {
- public static void main(String[] args) {
- SpringApplication.run(PaymentMain8001.class,args);
- log.info("=========================启动完成==============================");
- }
- }
3.重启,并测试 http://127.0.01:8001/Payment/getDiscovery
可以看到界面输出
打开控制台
测试成功
如果看到这段提示,那就是eureka进入了自我保护模式,只要进入了自我保护,euaeka将不会注销任何微服务
默认情况下 eurekaserver端在一定时间内(90s) 没有收到客户端的心跳就会将服务剔除,但在短时间内(90s)突然失去大量客户端,eureka就会进入自我保护模式
如何让关闭自我保护机制
服务端配置
- eureka:
- server:
- #关闭自我保护机制
- enable-self-preservation: false
- ##剔除服务时间 ms
- eviction-interval-timer-in-ms: 2000
为了快速显示效果,配置客户端剔除时间以及心跳时间
- eureka:
- instance:
- hostname: localhost
- instance-id: payment8002
- #显示ip
- prefer-ip-address: true
- #客户端定时像服务端发送心跳时间间隔 秒
- lease-renewal-interval-in-seconds: 1
- #服务的收到最后一次心跳等待时间上限 超市剔除
- lease-expiration-duration-in-seconds: 2
测试
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。