目录
1.微服务展示名称修改
默认eureka上的服务名称前都带有主机名或IP地址
在eureka配置中,加入
instance:
instance-id: payment8002就可以设置显示名称。
修改完运行:红色是修改的
2.鼠标放在服务名称上展示ip
prefer-ip-address: true #访问路径可以显示IP地址
3.服务发现Discovery
对于注册进eureka里面的微服务,可以通过服务发现来获取该服务的信息。
3.1修改payment8001controller
加入以下代码:
@Resource
private DiscoveryClient discoveryClient;
// import org.springframework.cloud.client.discovery.DiscoveryClient;
@GetMapping(value ="/payment/discovery")
public Object discovery(){
List<String> services = discoveryClient.getServices();
for(String element:services){
log.info("****element"+element);
}
List<ServiceInstance> instances = discoveryClient.getInstances("CLOUD-PAYMENT-SERVICE");
for (ServiceInstance instance : instances) {
log.info(instance.getServiceId()+"\t"+instance.getHost()+"\t"+instance.getPort()+"\t"+instance.getUri());
}
return this.discoveryClient;
}
3.2 修改启动类
加入@EnableDiscoveryClient注解
@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
public class PaymentMain8001 {
public static void main(String[] args) {
SpringApplication.run(PaymentMain8001.class,args);
}
}
3.3 启动测试
4.eureka自我保护机制
4.1故障现象
一句话:某时刻 一个微服务不可用了,Eureka不会立刻清理,依旧会对该服务的信息进行保存。属于CAP里面的AP分支
4.2导致原因
4.3怎样禁止自我保护
(1)修改eurekaServer端7001yml
改为单机模式,方便测试,关闭自我保护机制
server:
port: 7001
eureka:
instance:
hostname: eureka7001.com #eureka服务端的实例名字
client:
register-with-eureka: false #表识不向注册中心注册自己
fetch-registry: false #表示自己就是注册中心,职责是维护服务实例,并不需要去检索服务
service-url:
#集群模式
#defaultZone: http://eureka7002.com:7002/eureka/ #设置与eureka server交互的地址查询服务和注册服务都需要依赖这个地址
#单机模式
defaultZone: http://eureka7001.com:7001/eureka/
server:
#关闭自我保护机制,保证不可用服务被及时剔除
enable-self-preservation: false
#设置2秒就剔除
eviction-interval-timer-in-ms: 2000
(2)修改eurekaClient端8001
yml:
eureka:
client:
register-with-eureka: true #是否将自己注册到注册中心,默认true
fetchRegistry: true #是否从注册中心抓取已有的注册信息,默认true。单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡
service-url:
defaultZone: http://localhost:7001/eureka #单机版
#defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka #集群版
instance:
instance-id: payment8001
prefer-ip-address: true #访问路径可以显示IP地址
#Eureka客户端向服务端发送心跳的时间间隔。单位是秒(默认是30秒)
lease-renewal-interval-in-seconds: 1
#Eureka服务端在收到最后一次心跳后等待时间上线,单位为秒(默认是90秒),超时将剔除服务
lease-expiration-duration-in-seconds: 2
主启动加注解:@EnableDiscoveryClient
(3)测试
当客户端8001关闭时,注册中心直接将其剔除。