一、eureka 的概念
- Spring Cloud Eureka 是一个基于 REST 的服务,并且提供了基于 Java 的客户端组件,能够非常方便地将服务注册到 Spring Cloud Eureka 中进行统一管理,eureka包含两个组件:Eureka Server 和Eureka Client
- Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。
- Eureka Client是一个java客户端,用于简化与Eureka Server的交互,客户端同时也就是一个内置的、使用轮询(round-robin)负载算法的负载均衡器。
二、eureka 的搭建
1.创建一个父项目
File ==>> New ==>> Project
Spring Initializr ==>> 选择SDK ==>>点击Next
注意:pom.xml 中的父依赖版本号是2.3.4 (因为我用这个版本会报错,所以把他改为2.0.1)
修改前:
修改后:
修改SpringCloud 的版本号为Finchley.SR1
父项目中pom 文件所有的 jar
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example.springboot_eureka_demo</groupId>
<artifactId>springboot_eureka_demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot_eureka_demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR8</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<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>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR1</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>
2.创建子项目——注册中心 eureka
修改子项目eureka 的pom 文件 添加 eureka依赖和could依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
修改配置 文件properties 为yml 配置文件并添加如下配置
server:
port: 5060
servlet:
context-path: /eureka
spring:
application:
name: eureka-server
eureka:
client:
fetch-registry: false
#表示是否向eureka注册服务,即在自己的eureka中注册自己,默认为true,此处应该设置为false;
register-with-eureka: true
service-url:
defaultZone: http://localhost:5060/eureka/eureka
instance:
hostname: localhost
server:
enable-self-preservation: false
eviction-interval-timer-in-ms: 10000
在启动文件上添加 @EnableEurekaServer 注解
运行eureka 项目 访问: http://localhost:5060/eureka/ 出现以下界面表示eureka项目搭建成功
3.创建子项目——生成者 producer
3.1 创建步骤如上 eureka项目创建步骤
3.2 项目结构
修改 producer 项目的 pom 文件 父依赖
修改前:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
修改后:
<parent>
<groupId>com.example.springboot_eureka_demo</groupId>
<artifactId>springboot_eureka_demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
pom 文件
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.example.springboot_eureka_demo</groupId>
<artifactId>springboot_eureka_demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example.springboot_producer</groupId>
<artifactId>springboot_producer</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot_producer</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- 添加springboot fegin依赖,product项目即可以作为生产者,又可以作为消费者-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
修改配置 文件properties 为yml 配置文件并添加如下配置
spring:
application:
name: product
server:
port: 7002
servlet:
context-path: /product
eureka:
client:
service-url:
defaultZone: http://localhost:5060/eureka/eureka
3.3 创建一个controller
在启动上加上@EnableEurekaClient注解
运行启动类,访问: http://localhost:5060/eureka/ 出现以下界面说明生产者服务成功注册到eureka项目上
4.创建子项目——消费者 consumer
4.1 创建步骤如上 producer 创建目录
4.2 项目结构如下:
4.3 修改父依赖
原来为:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
修改后为:
<parent>
<groupId>com.example.springboot_eureka_demo</groupId>
<artifactId>springboot_eureka_demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
再添加openfeign 的jar
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
修改配置 文件properties 为yml 配置文件并添加如下配置
server:
servlet:
# 定义项目的访问访问路径
context-path: /consumer
#定义端口号
port: 7001
spring:
application:
#定义应用名称,即服务名称
name: consumer
eureka:
client:
service-url:
defaultZone: http://localhost:5060/eureka/eureka
在启动类中添加 @EnableEurekaClient和@EnableFeignClients
运行启动类 并访问:http://localhost:5060/eureka/ 出现以下界面说明生产者服务成功注册到eureka项目上