问题:
- ip不显示
- 服务名称需要修改
在两个服务提供方的yml中的eureka下加入以下内容:
instance:
instance-id: payment8002
id随便起,不一定是payment8002,可改变服务名称
(actuator的知识点需要补)
在instance-id下面加上prefer-ip-address: true
鼠标移到服务名称上时左下角即可显示ip地址
对于注册进eureka的微服务,可以通过服务发现来获得该服务的信息
修改提供者8001的controller,加入:
@Resource
private DiscoveryClient discoveryClient;
@GetMapping(value="/payment/discovery")
public Object discovery(){
List
for (String ele: services
) {
log.info("***************ele:"+ele);
}
List
for (ServiceInstance i:instances
) {
log.info(i.getServiceId()+" "+i.getHost()+" "+i.getPort()+" "+i.getUri());
}
return this.discoveryClient;
}
主启动类上加上:
@EnableDiscoveryClient
访问http://localhost:8001/payment/discovery 得到:
{"services":["cloud-payment-service","cloud-order-service"],"order":0}
同时后台也会得到相关信息
Eureka自我保护机制
一旦进入保护模式,则注册的微服务是不会删除的。默认情况下90秒内没有收到某微服务的心跳就会注销该微服务。但出现了网络问题,短时间内丢失过多客户时,就会进入保护模式
属于cap里面的ap分支(可扩展)
在7001的yml的eureka下加入
server: enable-self-preservation: false eviction-interval-timer-in-ms: 2000
默认是true的,现在改为false,而且2秒没接收到心跳就注销服务
7002做同样的操作
进入http://eureka7002.com:7002/,则可以看到
THE SELF PRESERVATION MODE IS TURNED OFF. THIS MAY NOT PROTECT INSTANCE EXPIRY IN CASE OF NETWORK/OTHER PROBLEMS.
在8001和8002的yml中加入以下内容:
# 默认间隔30秒发送 lease-renewal-interval-in-seconds: 1 #服务端在收到最后一次心跳后等待的时间上限,默认90秒
lease-expiration-duration-in-seconds: 2
关闭8002,刷新http://eureka7002.com:7002/ ,发现8002在2秒后消失
Eureka停更,SpringCloud结合Zookeeper替代Eureka
服务中心从Eureka换成Zookeeper,其他地方变化不大
Zookeeper是一个分布式协调工具,可以实现注册中心功能
关闭linux服务器防火墙后启动zookeeper服务器
Zookeeper成为新的服务注册中心
以上内容为23-27集内容



