之前我们讲了注册中心,也就是Eureka Server的使用,我们来讲一下服务注册,Eureka Client的使用,
基本上第一件事就是把Eureka Server给启动起来
nohup java -jar eureka-0.0.1-SNAPSHOT.jar &
10.40.8.152:8761
这就方便了不用每次都去启动它
kill -9 4681
我们要把一个应用注册到一个应用中心去,那你要往哪个地址注册,你总得配置一下,不然我怎么知道往哪注册呢,
eureka.client.serviceUrl.defaultZone=http://admin:1234@localhost:8761/eureka
在启动类上加注解@EnableEurekaClient
@EnableEurekaClient
@SpringBootApplication
public class ClientApplication {
public static void main(String[] args) {
SpringApplication.run(ClientApplication.class, args);
}
}
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@EnableDiscoveryClient
public @interface EnableEurekaClient {
}
奇怪的是这个应用名怎么叫UNKNOWN,我们来改一下名字
spring.application.name=client
这就是修改应用的名字
有的时候我们希望点过来是另外一个地址,他不是这个IP,这个我们怎么做到自定义呢
http://10.40.8.144:7900/info
配置里面有这么一个属性
eureka.instance.hostname=clientName
emergency! eureka may be incorrectly claiming instances are up when they're not.
renewals are lesser than threshold and hence the instances are not being expired just to be safe.
如果你不停的重启,会导致一个什么问题呢,可能会出现一串警告了,Eureka Server端和这些应用,Client端他们
采用的是心跳的机制,Server端会不停的去检查,Client端是否还存活,那么他会在一定的时间统计出来,上线率,
就是一个比例,定义某个比例的时候呢,就会爆出这么一个警告,意思就是说,你这个client上线率太低了,可能我都
不知道你是上线还是下线,那么怎么办呢,那么我就当做你是上线,就是宁可信其有,不可信其无,这其实是他的一种
自我保护的模式,当然在开发环境,可以把它给关掉,避免你以后要来调用这个微服务的时候,这上面展示的在线,
实际上他已经是下线状态了,所以开发环境我们最好给他关掉
eureka.server.enableSelfPreservation=false
这个配置你只能在开发环境把它关闭,生产环境一定不要这么来设置,你要往哪个注册地址去注册,你要配置上的,
配置完了启动了,其实还是不能注册上去,你要在启动主类上加上注解@EnableEurekaClient,然后再看看我们的配置,
你如果有需要的话呢,可以加上,给他起一个别名,另外应用的名字你最好给他写上,不然应用的名字显示的就是UNKNOWN,
Eureka Server的自我保护,开发环境你可以把它给关闭,这样方便以后我们做微服务的调用,不会出错
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.learn</groupId>
<artifactId>client</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<parent>
<groupId>cn.learn</groupId>
<artifactId>microcloud02</artifactId>
<version>0.0.1</version>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<thymeleaf.version>3.0.9.RELEASE</thymeleaf.version>
<thymeleaf-layout-dialect.version>2.2.2</thymeleaf-layout-dialect.version>
</properties>
<dependencies>
<!-- Spring Boot进行单元测试的模块 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
</dependencies>
<!-- 这个插件,可以将应用打包成一个可执行的jar包 -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.learn</groupId>
<artifactId>microcloud02</artifactId>
<version>0.0.1</version>
<packaging>pom</packaging>
<name>microcloud02</name>
<url>http://maven.apache.org</url>
<!-- <modules>
<module>microservice-hystrix-dashboard</module>
</modules> -->
<properties>
<jdk.version>1.8</jdk.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency> <!-- SpringCloud离不开SpringBoot,所以必须要配置此依赖包 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.5.12.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!-- <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build> -->
</project>
#debug=true
server.port=7900
logging.level.com.learn=trace
logging.file=springboot.log
logging.pattern.console=%d{yyyy-MM-dd} [%thread] %-5level %logger{50} - %msg%n
logging.pattern.file=%d{yyyy-MM-dd} ==== [%thread] %-5level ==== %logger{50} ==== %msg%n
eureka.client.serviceUrl.defaultZone=http://admin:1234@10.40.8.152:8761/eureka
spring.application.name=client
eureka.instance.prefer-ip-address=true
eureka.instance.instance-id=${spring.application.name}:${spring.cloud.client.ipAddress}:${spring.application.instance_id:${server.port}}
#eureka.instance.hostname=clientName
package com.learn.cloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@EnableEurekaClient
@SpringBootApplication
public class ClientApplication {
public static void main(String[] args) {
SpringApplication.run(ClientApplication.class, args);
}
}