使用spring cloud每次必须启动Eureka server服务,但是每次启动idea去启动Eureka Server的服务又很麻烦,所以我们可以将该项目打包成一个jar包 启动该jar包。
后台运行语句
创建client项目 创建方法和创建server相同 只不过在选择Spring Discovery时不同
在启动类上加注解@EnableDiscoveryClient 并配置yml文件
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
spring:
application:
name: client
server:
port: 8888
启动后查看 server 显示连接结果,注意如果client启动就关闭连接那么在pom.xml文件中引入spring boot web 的包就可以了
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
其中status那个地址是 点进去是这个应用的信息,如果我们不想显示这个地址 想自定义 那么需要修改yml文件。添加hostname
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
instance:
hostname: client
重启 当重新点进去后 ip变为client
不断重启client服务会出现一个报警 这个是在server中出现的一个报警,为什么会出现这个报警呢
因为Eureka server端和client端采用的是心跳的机制,server会不停的去检查client是否上线,在一定时间 server会统计client的存活率,当存活率低于一定值的时候就会出现这个报警。意思就是这个client上线率太低了,可能我现在都不知道你是上线还是下线,但是虽然我不知道 但是我会当做是你上线,其实是一种自我保护
假设我们有100个客户端,Client1失败的时候,会在90S后移除。2、假设一开始只有Client1,开启保护了,然后又新注册了100个上来,会再下一个Client失败的时候,将该失败的Client和Client1一并移除。
自我保护机制的工作机制是:如果在15分钟内超过85%的客户端节点都没有正常的心跳,那么Eureka就认为客户端与注册中心出现了网络故障,Eureka Server自动进入自我保护机制
在开发环境可以将这个设置关闭,避免当你在调用微服务的时候显示上线 但是实际是下线;
需要在server端yml文件下配置:
eureka:
server:
enable-self-preservation: false
重启重新访问后 那个报警已经没有了,但是出现一个新报警,意思是自我保护模式被关闭了 建议不要关闭。所以在开发中能关闭 但是在生产中一定不要关闭