Eureka单机搭建
Eureka简介
Eureka
Spring Cloud Eureka 是Netflix 开发的注册发现组件,本身是一个基于 REST 的服务。提供注册与发现,同时还提供了负载均衡、故障转移等能力
Eureka3个角色
服务中心,服务提供者,服务消费者
Eureka Server:服务器端。它提供服务的注册和发现功能,即实现服务的治理。
Service Provider:服务提供者。它将自身服务注册到Eureka Server中,以便“服务消费者”能够通过服务器端提供的服务清单(注册服务列表)来调用它。
Service Consumer:服务消费者。它从 Eureka 获取“已注册的服务列表”,从而消费服务
项目架构
搭建父项目
创建Maven项目
编写pom.xml文件,添加以下内容
<packaging>pom</packaging><!-- 统一管理jar包版本 -->
<properties><maven.compiler.source>11</maven.compiler.source><maven.compiler.target>11</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><spring-cloud.version>2021.0.0</spring-cloud.version><spring-boot.version>2.6.3</spring-boot.version>
</properties><!-- 子模块继承之后,提供作用:锁定版本+子modlue不用写groupId和version -->
<dependencyManagement><dependencies><!--spring boot 2.6.3--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><!--spring cloud 2021.0.0--><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>
开启Run Dashboard面板
打开项目文件夹所在目录,找到.idea/workspace.xml ,添加以下配置
<component name="RunDashboard"><option name="ruleStates"><list><RuleState><option name="name" value="ConfigurationTypeDashboardGroupingRule" /></RuleState><RuleState><option name="name" value="StatusDashboardGroupingRule" /></RuleState></list></option><option name="configurationTypes"><set><option value="SpringBootApplicationConfigurationType" /></set></option></component>
搭建单机的Eureka
在父项目中创建maven项目模块,名字为:cloud-eureka(自定义)
编写pom.xml文件
<?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"><parent><artifactId>books</artifactId><groupId>org.example</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>books-eureka</artifactId><version>1.0-SNAPSHOT</version><dependencies><!--配置中心服务端--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.5.6</version></plugin><plugin><groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><configuration><imageName>livegoods/eurekaserver:1.0</imageName><baseImage>openjdk:11</baseImage><dockerHost>http://192.168.66.101:2375</dockerHost><entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint><exposes><expose>8761</expose></exposes><resources><resources><targetPath>/</targetPath><directory>${project.build.directory}</directory><include>${project.build.finalName}.jar</include></resources></resources></configuration></plugin></plugins></build></project>
编写application.yml
server:port: 8761
spring:application:name: books-eureka-server
eureka:client:fetch-registry: falseregister-with-eureka: falselogging:pattern:console: '%d{MM/dd HH:mm:ss.SSS} %clr(%-5level) --- [%-15thread] %cyan(%-50logger{50}):%msg%n'
编写主启动类
package fz;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@SpringBootApplication
@EnableEurekaServer
public class ServiceEureka8761 {public static void main(String[] args) {SpringApplication.run(ServiceEureka8761.class, args);}
}
访问
http://localhost:8761/