Eureka是Netflix开源的一款提供服务注册和发现的产品,是springCloud体系中最重要最核心的组件之一。
Eureka作为SpringCloud的注册中心,主要负责服务的注册与发现;
每个微服务都是一个Eureka client组件,负责将该服务根据id、ip和端口注册到Eureka Server中;
Eureka Server是一个注册中心,该组件内部维护了一个注册表,保存了各个服务所在的机器ip和端口号等信息。
本文简要阐述如何使用IDEA工具,集成Eureka组件搭建一个简单的服务注册与发现工程。
一、创建maven父工程
- 由于创建的是父工程,因此不需要选择Create from archetype,直接点击Next;
- 输入GroupId以及ArtifactId,GroupId一般以com.xxx命名,ArtifactId为项目名即可,然后直接Next;
- 选择好项目目录,因为IDEA的特性,所以先创建一个目录demo,再在该目录下创建cloud_demo目录,用于放置整个项目的所有子工程,否则可能会导致创建model时出现问题;
搭建好的父工程如下:
二、搭建EurekaServer工程
-
直接在当前父工程下创建Model;
-
这里因为使用的是IDEA,对于搭建项目还是十分的友好,我们直接选择左侧的Spring Initalizr,直接点击Next;
-
填写相应的GroupId以及ArtifactId,其它使用默认选项,点击Next;
-
选择Spring Cloud Discovery,然后勾选其中的Eureka Server,点击Next,
-
输入Module name,即工程名称,其中Content root以及Module file location必须是在父工程下的单独一个目录,否则会导致搭建的项目出现错误,最后点击Next即可;
搭建好以后,目录如下图所示,即为成功;
-
修改配置文件,关于配置项图中通过注解方式简要阐述,并在启动类加上
@EnableEurekaServer
的注解;#端口号,通常设置为8761 server.port=8761 #服务名 spring.application.name=eureka_server #设置当前实例的主机名称 eureka.instance.hostname=localhost #是否注册自身到EureakServer上,默认为true;由于当前工程本身即是EurekaServer,所以设置为false; eureka.client.register-with-eureka=false #标识是否从Eureka Server获取注册信息,默认为true;由于当前工程本身即是EurekaServer,所以设置为false; eureka.client.fetch-registry=false #设置Eureka的地址 eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
@EnableEurekaServer @SpringBootApplication public class EurekaServerApplication { public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args); } }
最后启动项目,打开浏览器,输入localhost:8761,页面如下,至此EurekaServer服务搭建成功。
三、搭建EurekaClient工程
-
同样在父工程下创建Model,步骤与搭建Server工程类似,这里不再一一阐述,步骤如下图所示:
-
因为使用IDEA的自动创建工程的方式,所以需要在该client工程的pom.xml文件中,加入web依赖,否则会导致启动失败。
<!--添加web依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
-
修改配置文件,并在启动类上添加
@EnableEurekaClient
注解,最后启动项目即可。#端口号 server.port=8080 #服务名 spring.application.name=eureka_client eureka.client.healthcheck.enable=true eureka.client.service-url.defaultZone=http://127.0.0.1:8761/eureka/
@EnableEurekaClient @SpringBootApplication public class EurekaClientApplication { public static void main(String[] args) { SpringApplication.run(EurekaClientApplication.class, args); } }
-
重新刷新浏览器,查看Eureka页面,即可发现client已成功注册。
关于页面头部的红色警告问题,这里简要阐述一下:
END===>回到顶部.系统在三种情况下会出现红色加粗的字体提示
(1).自我保护机制关闭
RENEWALS ARE LESSER THAN THE THRESHOLD. THE SELF PRESERVATION MODE IS TURNED OFF.THIS MAY NOT PROTECT INSTANCE EXPIRY IN CASE OF NETWORK/OTHER PROBLEMS.
(2).自我保护机制开启
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.
(3).在配置上,自我保护机制关闭了,但是一分钟内的续约数没有达到85% ,可能发生了网络分区,会有如下提示
THE SELF PRESERVATION MODE IS TURNED OFF.THIS MAY NOT PROTECT INSTANCE EXPIRY IN CASE OF NETWORK/OTHER PROBLEMS.