package com.example.cloudeureka;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@EnableEurekaServer
@SpringBootApplication
public class CloudEurekaApplication {
public static void main(String[] args) {
SpringApplication.run(CloudEurekaApplication.class, args);
}
}
eureka:
client:
registerWithEureka: true
fetchRegistry: true
serviceUrl:
defaultZone: http://eureka7900:7900/eureka/,http://eureka7901:7901/eureka/,http://eureka7902:7902/eureka/
server:
#自我保护 解决自动续约问题
enable-self-preservation: false
#自我保护的预制
renewal-percent-threshold: 0.85
#剔除服务时间的间隔
eviction-interval-timer-in-ms: 1000
#关闭从readOnly读注册表
use-read-only-response-cache: false
# readWrite 和 readOnly 同步时间间隔
response-cache-update-interval-ms: 1000
spring:
application:
name: eureka
---
spring:
profiles: 7900
server:
port: 7900
eureka:
instance:
hostname: eureka7900
---
spring:
profiles: 7901
server:
port: 7901
eureka:
instance:
hostname: eureka7901
---
spring:
profiles: 7902
server:
port: 7902
eureka:
instance:
hostname: eureka7902
host配置
127.0.0.1 eureka7900
127.0.0.1 eureka7901
127.0.0.1 eureka7902
配置集群的三个必要条件
- 相互注册
eureka:
client:
registerWithEureka: true
fetchRegistry: true
- 相同的
spring:
application:
name: eureka
eureka:
client:
registerWithEureka: true
fetchRegistry: true
serviceUrl:
defaultZone: http://eureka7900:7900/eureka/,http://eureka7901:7901/eureka/,http://eureka7902:7902/eureka/
#不能是defaultZone: http://127.0.0.1:7900/eureka/,http://127.0.0.1:7901/eureka/,http://127.0.0.1:7902/eureka/
#可以使相同的ip域名(要host文件配)
#要配ip 除非ip 不一样
总是看到EnableXXXX,缺不知道意思
- 总是看到EnableXXXX,缺不知道意思
- 甚至有的时候跟源码都不知道往哪跟
- 跟进去啥都没有
- 如图
注解内部
EurekaServerMarkerConfiguration进入缺是个Marker空的方法
翻车了,这个版本该掉了
eureka.client.enabled
之前是检测Marker这个bean是否存在启动的
优化
拿老师的
eureka 内置监听器
package com.jln.system.eureka.beans;
import com.netflix.appinfo.InstanceInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.netflix.eureka.server.event.*;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;
import java.util.Objects;
@Component
@Slf4j
public class EurekaStateChangeListener {
@EventListener//(condition = "#event.replication==false")
public void listen(EurekaInstanceCanceledEvent eurekaInstanceCanceledEvent) {
// 服务断线事件
String appName = eurekaInstanceCanceledEvent.getAppName();
String serverId = eurekaInstanceCanceledEvent.getServerId();
Objects.requireNonNull(appName, "服务名不能为空!");
log.info(">>>>>>> 失效服务:{},已被剔除!", serverId);
}
@EventListener//(condition = "#event.replication==false")
public void listen(EurekaInstanceRegisteredEvent event) {
// 服务注册
InstanceInfo instanceInfo = event.getInstanceInfo();
String appName = instanceInfo.getAppName();
Objects.requireNonNull(appName, "服务名不能为空!");
log.info(">>>>>>> 服务名:{},端口号:{},已缓存至redis", appName, instanceInfo.getPort());
}
@EventListener//(condition = "#event.replication==false")
public void listen(EurekaInstanceRenewedEvent event) {
// 服务续约
log.info(">>>>>>>>>>>>>>>Server续约:" + event.getServerId());
}
@EventListener
public void listen(EurekaRegistryAvailableEvent event) {
// 注册中心启动
log.info(">>>>>>>>>>>>>>>Server注册中心:" + event);
}
@EventListener
public void listen(EurekaServerStartedEvent event) {
// Server启动
log.info(">>>>>>>>>>>>>>>Server启动:" + event);
}
}