1. 创建项目
1.1 创建父项目spring-cloud
1.2 创建子模块eureka-server 和eureka-client
创建两个子模块项目,Spring Initializr Module,服务注册与服务发现。
1.3 创建后的项目结构图

2. 配置服务注册中心eureka-server
2.1 EurekaServerApplication.java
启动类添加注解@EnableEurekaServer 声明为服务注册中心。
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @SpringBootApplication @EnableEurekaServer public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args); } }
2.2 application.yml
- eureka.instance.hostname
主机IP,访问实例时需要通过主机IP+端口号访问,主机名+端口号访问不到 - fetch-registry
检索服务选项,当设置为True(默认值)时,会进行服务检索,注册中心不负责检索服务。 - register-with-eureka
服务注册中心也会将自己作为客户端来尝试注册自己,为true(默认)时自动生效 - eureka.client.serviceUrl.defaultZone
是一个默认的注册中心地址。配置该选项后,可以在服务中心进行注册。
server: port: 8761 eureka: instance: hostname: 192.168.15.1 client: register-with-eureka: false fetch-registry: false service-url: defaultZone: http://${
eureka.instance.hostname}:${
server.port}/eureka/
2.3 pom.xml
添加依赖spring-cloud-starter-netflix-eureka-server
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0
modelVersion> <parent> <groupId>org.springframework.boot
groupId> <artifactId>spring-boot-starter-parent
artifactId> <version>2.1.9.RELEASE
version> <relativePath/>
parent> <groupId>pers.niaonao
groupId> <artifactId>eureka-server
artifactId> <version>0.0.1-SNAPSHOT
version> <name>eureka-server
name> <description>Demo project for Spring Boot
description> <properties> <java.version>1.8
java.version> <spring-cloud.version>Greenwich.SR3
spring-cloud.version>
properties> <dependencies> <dependency> <groupId>org.springframework.cloud
groupId> <artifactId>spring-cloud-starter-netflix-eureka-server
artifactId>
dependency> <dependency> <groupId>org.springframework.boot
groupId> <artifactId>spring-boot-starter-test
artifactId> <scope>test
scope>
dependency>
dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud
groupId> <artifactId>spring-cloud-dependencies
artifactId> <version>${spring-cloud.version}
version> <type>pom
type> <scope>import
scope>
dependency>
dependencies>
dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot
groupId> <artifactId>spring-boot-maven-plugin
artifactId>
plugin>
plugins>
build>
project>
3 配置服务发现eureka-client
3.1 EurekaClientApplication.java
启动类添加注解@EnableEurekaClient 声明为服务发现。
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; @SpringBootApplication @EnableEurekaClient public class EurekaClientApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaClientApplication.class, args); } }
3.2 application.yml
server: port: 8080 spring: application: name: eureka-client eureka: client: serviceUrl: defaultZone: http://192.168.15.1:8761/eureka/
3.3 pom.xml
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0
modelVersion> <parent> <groupId>org.springframework.boot
groupId> <artifactId>spring-boot-starter-parent
artifactId> <version>2.1.9.RELEASE
version> <relativePath/>
parent> <groupId>pers.niaonao
groupId> <artifactId>eureka-client
artifactId> <version>0.0.1-SNAPSHOT
version> <name>eureka-client
name> <description>Demo project for Spring Boot
description> <properties> <java.version>1.8
java.version> <spring-cloud.version>Greenwich.SR3
spring-cloud.version>
properties> <dependencies> <dependency> <groupId>org.springframework.cloud
groupId> <artifactId>spring-cloud-starter-netflix-eureka-client
artifactId>
dependency> <dependency> <groupId>org.springframework.boot
groupId> <artifactId>spring-boot-starter-web
artifactId>
dependency> <dependency> <groupId>org.springframework.boot
groupId> <artifactId>spring-boot-starter-test
artifactId> <scope>test
scope>
dependency>
dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud
groupId> <artifactId>spring-cloud-dependencies
artifactId> <version>${spring-cloud.version}
version> <type>pom
type> <scope>import
scope>
dependency>
dependencies>
dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot
groupId> <artifactId>spring-boot-maven-plugin
artifactId>
plugin>
plugins>
build>
project>
4. 运行服务
5. 遇见问题
5.1 Completed shut down of DiscoveryClient

启动eureka-client 报Completed shut down of DiscoveryClient,可以通过在eureka-client 添加pring-boot-starter-web 依赖后重启服务处理。另外没有web 依赖,怎么进行后续的服务开发。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
5.2 红色提示信息EMERGENCY!

- 方式一:如果开启自动注册,可以部署两个server,相互注册
- 方式二:在本机器上测试的时候,可以把比值调低,低于缺省值0.85 的一个恰当值即可
- 方式三:或者关闭自我保护模式即可
eureka.server.enableSelfPreservation=false
THE END
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/223843.html原文链接:https://javaforall.net
